Better embedding using embed.js

This works.
This is a huge WIP, however it already is an improvement on our current system. Using https://github.com/ritz078/embed.js, we can now support twitter, gists, videos, and more. Emojis can also easily be added in a future PR.
It may be better to think of this as a proof-of-concept.
There's still a lot to do (and I'm definitely forgetting some)

[ ] rely on package manager dependency #640
[ ] tests
[x] respect "Expand all media" setting
[x] improve toggle button code
[x] move toggle click listener to outside socket URL listener
[ ] github font-awesome icons

Upstream changes to make

[x] gist maxHeight and maxWidth
[x] fix soundcloud (ritz078/embed.js#188)

here's a webm of some current functionality: https://sr.ht/VlC-.webm

What I don't like about moving it to the client entirely is that it will request every URL on every page load every time, instead of caching it on the server once.

xPaw: URLs present on load aren't prefetched at the moment for that reason - they have to be toggled to be fetched. Still want me to have the server cache them?

I think we do need to keep the server component, also for privacy purposes.

what privacy benefits specifically?

Not leaking client IP (e.g. if url embed would only print page title and not fetch any images). As for images, ideally we would proxy them to also fix https/CSP issues.

I think I'd rather "leak" the client IP than the server IP, no? It seems to me like it would be a rather easy way to mask one's IP to DDoS someone, or to ban a whole server from a service if said service has some kind of abuse protection.
On the other end, it becomes an easy way to get a list of IPs that are using The Lounge on a given channel.
I'm a bit torn right now...
Re: cache, a nice improvement could be to use sessionStorage or similar and cache responses on the client.

@thelounge/maintainers - would love to reach a final decision re: caching/fetching on the server or client

It has to be on the server as not to keep getting the data all the time.
On Tue, 22 Nov 2016, 19:47 Max Leiter<EMAIL_ADDRESS>wrote:

@thelounge/maintainers
https://github.com/orgs/thelounge/teams/maintainers - would love to
reach a final decision re: caching/fetching on the server or client
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/thelounge/lounge/pull/701#issuecomment-262312729, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAlb0wizenAiTSdA34VqPdK1P8jOfT7hks5rAyq8gaJpZM4KYREu
.

Agree on the server. Another reason is that fixes any issues with cors and
https (if someone links to an http url, you get an ssl error just now).
On Tue, 22 Nov 2016, 17:48 Pavel Djundik<EMAIL_ADDRESS>wrote:

It has to be on the server as not to keep getting the data all the time.
On Tue, 22 Nov 2016, 19:47 Max Leiter<EMAIL_ADDRESS>wrote:

@thelounge/maintainers
https://github.com/orgs/thelounge/teams/maintainers - would love to
reach a final decision re: caching/fetching on the server or client
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/thelounge/lounge/pull/701#issuecomment-262312729,
or mute
the thread
<
https://github.com/notifications/unsubscribe-auth/AAlb0wizenAiTSdA34VqPdK1P8jOfT7hks5rAyq8gaJpZM4KYREu
.

—
You are receiving this because you are on a team that was mentioned.
Reply to this email directly, view it on GitHub
https://github.com/thelounge/lounge/pull/701#issuecomment-262313137, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ACD_4ewF6fv21kjgGTB2_DbyhIKrxZx-ks5rAysGgaJpZM4KYREu
.

@xPaw, @YaManicKill, have you seen my comments above about server-side vs. client-side?
Right now, I'd prefer a client-side solution I think, if anything, for the nice VPN-like attack exit point we provide, especially in public mode!
Client-side fetching does not prevent client-side caching, so I don't think that's a definitive argument.
For HTTP vs. HTTPS, loading HTTP content from an instance that is served through HTTPS is not a security benefit (quite the contrary), as loading an HTTP resource from the server might still be corrupted, then nicely served to the client lol. Sure, it's not an open door, but still. I agree that it would hide the browser warning when loading insecure content, but there are alternatives, like asking for confirmation before loading HTTP resources (which we should probably do whether it's served with HTTP or HTTPS tbh).
Re: CORS... well, yeah. But based on what @MaxLeiter did here, it turns out it's not biting us as much as I would have expected, so there is that.

So far it looks to me like all the arguments for server-side are still doable with client-side, except when it comes to IP stuff, which has implications in both directions. Considering the risks are exposing a client IP vs. offering The Lounge as a DDoS entry point (cf. most recent global Internet outage for the same possibility, except s/cameras/The Lounge/ lol), I'm more comfortable with the former.
It's likely I may have missed something, of course, so happy to discuss about this. But nonetheless, thanks a lot @MaxLeiter for taking up this, I think it will be a solid improvement once we come up with a decision, and you've done a great work so far!

have you seen my comments above about server-side vs. client-side?

I have. I'm not sure I agree with your points, but I'm not sure I'm going to argue all of them.
Your DDoS argument doesn't really hold up, IMO. We don't enable it by default currently, and we could easily put some rate limiting on it in public mode (in private mode it really isn't an issue, because you would have to get accounts on multiple sites for it to be a DDos, otherwise it's just masking your IP).
I really don't get why you want the client IP to be leaked rather than the server IP.
And how is it worse to get the content over https between me and my server, and http from the server to the resource...than http all the way from me and the resource? Surely it's better to go over https when we can, as it means that things aren't leaked over public wifi, etc. It's not perfect, but surely that's better? I get that the issue is "hidden" as such, but it's not really an issue because the server won't have logins for sites that could be transferred in the clear whereas right now that's exactly how it can work. If someone posts an http link to imgur, imgur will send my browser's cookie to it in the clear, but if the server were to call it instead, it wouldn't have my cookie because my server isn't logged into imgur. That is a massive advantage, imo.
However.
I don't care enough to block it. So if you are so strongly in favour of the client doing it, then whatever. I'd rather get this in with the client doing it than not get it in at all.

Alright, it looks like I got you worked up, which I promise was not my intent, so I'm really sorry if my points came across as feisty :) Really trying to get to a point where we all agree, which should definitely be possible here.
Your answer brought up some good points and got me to think about some things. This may seem silly but I think what bothered me in the current server-side solution is that not only it's not up to the user to enable/disable it (because it's a server setting) but also that it's disabled by default. It's a great feature to have and most messaging clients have this by default, so there should be a reasonable solution.

Your DDoS argument doesn't really hold up, IMO. We don't enable it by default currently, and we could easily put some rate limiting on it in public mode (in private mode it really isn't an issue, [...])

Well, it does hold as soon as it's enabled in public mode, at least in master :) However, you're right, I should have used DoS instead of DDoS.
Rate limiting sounds nice technically, but there are still negative consequences to the user to deal with (I want to mess with all your public users, I just have to trigger the limit rate). Maybe later?
Also, I'm really hoping than @MaxLeiter's work here, whether it ends up being client-side or server-side will allow us to enable this feature by default.
If we're willing to do it server-side, here is my suggestion: preview on by default in private mode, and no such feature in public mode.
While this is not for right now, I also realized that having an hybrid instance that allows both private and public mode is our second 👍-rated issue (to be taken with a grain of salt) in which case abuse in public mode would leak to the private mode.

I really don't get why you want the client IP to be leaked rather than the server IP.

No, I don't have a clear preference on that.
I really don't want to provide a way to mask IP from anonymous users though, but if we are removing this feature from public mode then this is settled, in which case, yes, leaking server IP is better as administrators can identify their abusers.

Surely it's better to go over https when we can, as it means that things aren't leaked over public wifi, etc. It's not perfect, but surely that's better? I get that the issue is "hidden" as such, but it's not really an issue because the server won't have logins for sites that could be transferred in the clear whereas right now that's exactly how it can work. [...]

There is indeed an improvement in case the instance is served over HTTPS, in the situation you describe, i.e. a compromised network between The Lounge and the user.
However, we now "shift" the vulnerability as the HTTP request is made by the server, so if there is a vulnerability between what's being requested and the server, then a leakage is still present. This is less likely than a public wifi being compromised, but it's still there.
The other issue, which is present whether implementation is client-side or server-side, is getting content that's not authentic (another perk of querying an HTTPS resource!). On server side, it would look a tiny bit more hidden as there would be no way for a user to attest the content (because the URL would come from us, mostly), but it's bad either way.
My suggestion to this, which applies whether we go client-side or server-side: simply disable the preview feature of HTTP content. With something like the library @MaxLeiter is using, we can most likely improve this by augmenting from HTTP to HTTPS certain requests (Twitter, Youtube, etc., all those nicely handled by the library), but making sure we do not request any HTTP content would be the most secure IMO. And since HTTPS adoption rate is skyrocketing, that will become less and less an impediment.
I think with these 2 suggestions, and enabling the feature by default in private mode, I would be 100% fine to do server-side.
@MaxLeiter, @xPaw, @YaManicKill, what do you guys think of these?
@YaManicKill, sorry if this is frustrating for you :/ This is a wonderful feature to have, and @MaxLeiter has done a massive and terrific work so I want to make sure we properly discussed it before asking him to toss it away :)
@MaxLeiter, how complicated would it be for you to move this to the backend and to implement my suggestions above? I'm wondering if we should not have a new branch/PR for this to keep code history around instead of amending your commits and losing it forever.

@astorije Yeah, sorry I shouldn't have gotten so worked up about it. No hard feelings. I had a difficult week, and I probably took it out on you a bit :-P
As for what you suggest, I think that's a fair compromise.
I do think it would be good to implement some rate limiting in public mode in the future so that we can enable it by default there as well. I think we could easily limit it to a couple a second, and I don't think it's going to be a massive attack vector, as my reason for pointing out that it couldn't really be used for DDoS is simply that it ends up just becoming an ip masker, which ... let's be honest, requesting an irc bouncer to request http requests isn't the easiest way to mask your ip. You can manually change the IP headers on the requests, which is definitely much easier (and more reliable) way of ip masking. But I'm fine with disabling it in public by default.

No, I don't have a clear preference on that.

Apologies for misrepresenting you, it sounded like you would prefer individuals to appear as their client IPs to the resources.

However, we now "shift" the vulnerability as the HTTP request is made by the server, so if there is a vulnerability between what's being requested and the server, then a leakage is still present.

I guess my question would be...what is the harm in this? I'm not going to massively argue it, and you'll see why in my following 2 answers, but I don't actually think (if we can't get something over https) that there's any real harm to this, as I don't see what the leakage is if we are just requesting a resource. But I guess that comes down to individual server admins, and whether they think the risk is good enough.

My suggestion to this, which applies whether we go client-side or server-side: disable the preview feature of HTTP content.

I'm alright with this, but only if the user is going over https, otherwise that seems pointless. And, seeing as we can't tell if they are going over https if they use apache or nginx, maybe we should make this a setting (which can default to blocking http calls?)

With something like the library @MaxLeiter is using, we can most likely improve this by augmenting from HTTP to HTTPS certain requests

Strong yes, this would be a very good thing to do.
So yeah, in general I'm happy with the suggestions, but I have suggestions for improving that in another PR :-P

seeing as we can't tell if they are going over https if they use apache or nginx

A small point: With the X-Forwarded-Proto header, it is possible. This can be configured in the frontend webserver (many of them support sending it to the upstream), and Cloudflare passes it too.

Alright alright, I'm glad we are getting somewhere :-)

@astorije Yeah, sorry I shouldn't have gotten so worked up about it. No hard feelings. I had a difficult week, and I probably took it out on you a bit :-P

Oh I can definitely understand that ;-) I think we've all been there :D

I do think it would be good to implement some rate limiting in public mode in the future so that we can enable it by default there as well. I think we could easily limit it to a couple a second

Sold!
Enabled by default in private, disabled in public for now, rate limiting in public for the future. That sounds good to me. And my worries about an hybrid mode are easily answered as this rate limiting could easily not apply to private mode.

let's be honest, requesting an irc bouncer to request http requests isn't the easiest way to mask your ip

Well, so isn't hacking CCTV devices :trollface: but if one way or another someone manages to hack embed.js and run random requests using that... ouch :)

Apologies for misrepresenting you, it sounded like you would prefer individuals to appear as their client IPs to the resources.

To be fair, I did suggest that above in the thread, but my mind was never set. I'd rather not leak any of those (because once an attacker knows where the server is living, it's a single point of failure they can take down) but there are other easy way to figure out where server lives so it's probably a better idea anyway.

I guess my question would be...what is the harm in this?

The main issue is that there is no way to ensure the authenticity of the content that comes back. Imagine these tools that ask you to run a script to get started, such as Homebrew, Cryptic (shameless plug) or Fix Ubuntu when it was script-based, if they were asking you to run wget http://... and then run that, you'd have no way to tell if this is authentic content or not (well yes, you can open a script, but think binary or a really massive script or simply address this to an audience who doesn't know how to do these). In our case, CSP is protecting from most programmatic attacks, but think social engineering: if we are previewing gists, you could be doing some nasty things around.
It may sound far fetched but in our line of work, we can't say these things don't happen :-)

I'm alright with this, but only if the user is going over https, otherwise that seems pointless. And, seeing as we can't tell if they are going over https if they use apache or nginx, maybe we should make this a setting (which can default to blocking http calls?)

re: over HTTPS only, I see where you are coming from, but I think that sends a really false message: "So, if I serve over HTTPS, half the previews will be broken, so I'll server over HTTP only" :D
I am fine setting a bar that emphasizes on security and not enable HTTP preview at all. After all, links are still clickable so it's not like we are preventing them to access the resource! And if we are augmenting the popular URLs (which is probably already done by embed.js since it's calling APIs!), it's likely that we'll very rarely notice a difference!
And if people reeeeally need to prefect non-native (lacking a better word to describe what services embed.js supports out of the box) HTTP links, they can still patch their instances. But my guess is that it will be hardly noticeable.
Actually, similar to the rate limit stuff: what do you think about simply doing HTTPS-only for now to get this PR moving, and see what the reaction is. If we see issues here or questions on the channel, we can add a setting for it or improve it somehow then, instead of over-engineer this right now and delay this even more? Maybe I am completely misjudging this, or maybe we'll never hear about it, but I feel like we are going one step too far for now.
@MaxLeiter, do you mind moving this to the backend? @YaManicKill, do you think that should be a new branch to keep code history around instead of nuking it when squashing?

While ultimately I'm fine with everything decided above, I do think we should have this enabled in public mode. It's easily the number 1 most tested feature on the demo (mentioned 3 times today alone!), and is a pretty large feature. The majority of clients implement it (including Kiwi, so I can always see how @prawnsalad does this) - is there no way we can have it enabled by default in both modes? I'm worried about the amount of users that will see it disabled in the demo and think it's not implemented.

I am much less worried about users being disappointed in public mode than having a secure project :-)
We could have a message that says "Link previews are disabled in public mode". Maybe not every time, but the first time per channel maybe?
And in the end, this can be re-enabled once we have some sort of protection, such as rate limit suggested by @YaManicKill above, and/or caching, ... so I wouldn't worry about it too much.

We don't run into any issues currently - will this ultimately be any
different? Would like to hear @xPaw's or @maxpoulin64's thoughts as well
On Mon, Dec 5, 2016 at 9:09 PM, Jérémie Astori<EMAIL_ADDRESS>wrote:

I am much less worried about users being disappointed in public mode than
having a secure project :-)
We could have a message that says "Link previews are disabled in public
mode". Maybe not every time, but the first time per channel maybe?
And in the end, this can be re-enabled once we have some sort of
protection, such as rate limit suggested by @YaManicKill
https://github.com/YaManicKill above, and/or caching, ... so I wouldn't
worry about it too much.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/thelounge/lounge/pull/701#issuecomment-265062240, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AIRiQikFZ25PU4HWBeCeIU2IUlfe-Ecxks5rFO4egaJpZM4KYREu
.

The default option of being enabled in public mode is bikeshredding. Just work on the feature.
On an unrelated note, there's a good idea to prevent some DoS in public mode if the fetcher is on the server. If 100 clients are on the same channel, and there is a link to be fetched, in the current implementation it would be fetched 100 times. But what it should do is request it once and then wait in the other 99 instances.

And for the https only issue, we can solve it the same way github solves it: https://github.com/atmos/camo

And for the https only issue, we can solve it the same way github solves it: https://github.com/atmos/camo

This does not solve the issue with content coming from HTTP detailed above. If it's requested from HTTP, there is no way to ensure its authenticity. We cannot prevent people to click the link obviously, but prefetching it, even from the server, is not a good idea.
Towards an HTTPS-only world!

If it's requested from HTTP, there is no way to ensure its authenticity.

How is that a problem in terms of a link previewer?

How is that a problem in terms of a link previewer?

For an image, there is little consequence apart from social ones I'm guessing, like replacing all cutie kitten pictures with ISIS pr0n, but who knows how that can be hijacked, which is why we should stay clear of them.
If we are previewing other stuff we do not augment, however, like a gist that's supposed to be pasted and run, that could lead to some pretty fucked up things.
It may seem far fetched, but in 2016 I have no problem limiting a link prefetcher to HTTS only, especially since we're not blocking these links anyway.

like replacing all cutie kitten pictures with ISIS pr0n, but who knows how that can be hijacked

You don't need to hijack anything to post an image like that (just upload it to imgur and link), I don't really understand what you are trying to prevent here.

I have no problem limiting a link prefetcher to HTTS only, especially since we're not blocking these links anyway

I do, as this is a completely unnecessary limitation. Youre over thinking the cases of traffic hijacking.

(just upload it to imgur and link)

What are you talking about, lol
My point is that with an HTTP URL, we cannot ensure integrity and authenticity of what we are prefetching. This is not an "unnecessary limitation", this is half the point of HTTPS! (The other helf being privacy, which doesn't apply to the user when fetching from the server)

In practice, this provides a reasonable guarantee that one is communicating with precisely the website that one intended to communicate with (as opposed to an impostor), as well as ensuring that the contents of communications between the user and site cannot be read or forged by any third party.

And again, we're not limiting the user by preventing them to click on the link, but we are not taking any assumption on what we are prefetching, which is good. It's also the direction browsers are taking (slower than they anticipated, but still) so no reasons not to be proactive here.

I'm still not seeing the problem of not being able to prove authenticity, do we need to? It's just a link information preview, most of the internet work(s/ed) without ssl.

do we need to? It's just a link information preview, most of the internet work(s/ed) without ssl.

We don't need to obviously, but if we want to enable it by default (and I do think we should!), making it fully secure by default cannot be a bad thing. Although most of the web is still served through HTTP, most of the traffic of top sites traffic is HTTPS so I don't even think that will be an issue.

I am very excited about this PR. @MaxLeiter, let us know when you have progress :)))

@MaxLeiter, do you have plans for this soon? Do you think it could be tagged as v2.3.0?

Tag it as 2.3, hopefully that'll motivate me to find time to work on it

tries to motivate @MaxLeiter *

After chatting with @MaxLeiter, removing the v2.3.0 milestone as he definitely won't have time to pick this up.
Help welcome if someone wants to give it a shot!

I have continued this work on a new branch, but there are a few issues with it.

Currently we get duplicates for many things (tweets, youtube, etc). This is because we parse our own urls before sending to embed.js, so embed.js sees 2 of the same thing and renders it twice. This doesn't happen for images. I'm currently seeing if there is a way for us to solve this in ritz078/embed.js#243

It currently loses functionality because it doesn't support just normal link embedding, which is a regression. I don't think embed.js supports this sort of functionality, so we'll want to add the old functionality as well, but that'll be a little complicated, I think.

In terms of all the discussion about https/http/server/client etc. I think we should ignore all that stuff for just now and do it in another PR. I think that it's all valid stuff, but it's not a regression for what we currently have, and so it's unrelated in a way.
Thoughts?
Oh yeah, the branch is yamanickill/embed. I currently am the author of the commit because I squashed it all down, but I'll want to separate it out at some point so that @MaxLeiter gets credit for all his work before it gets merged.

I still think fetching has to be done on the server. Otherwise we will get this merged, and server side part will never come.

I still think fetching has to be done on the server. Otherwise we will get this merged, and server side part will never come.

The problem is that I think this will never come if we require it to go through the server.
Apart from anything, the embed.js framework is designed to be client side, we would have to complete redo everything to get it to go through our server, and would be a completely different thing.
The caching isn't much of an issue, I think, because it's just as if each user clicks on the url (as currently they would do) then it would be the same to the user and the third party. I think the leaking of client IP is the 1 argument, but I'm not convinced of that one, bceause again currently users just have to click on the link to get the information, and that would then be exactly the same.

The problem is, each client will keep loading the URL every time it sees it, like on page reload. I certainly wouldn't want to do that on spotty mobile connection.

Well, it'll only reload each if you have auto expand set, which would be a silly thing to have set on a spotty mobile connection.
But anyway, besides that, having it go through the server won't change the fact that the client still has to get it from a server, whether that is our server or the third party ones.

Having it fetched on lounge server once means every other load instantly shows info for it. Are we really sure embed.js is the only solution we can use?

Oh yeah, the branch is yamanickill/embed.

Why not working in @MaxLeiter's branch instead (assuming he enabled that "Allow maintainers to commit to this branch")? If you don't, then it will trigger an entirely new PR/history.
If doing on the client, is there a way to harvest all IPs? For example, does that mean I can post a link to a page I wrote on a channel and instantly get all IPs from people using The Lounge, or does embed.js protect against that?
I agree that whether you load a tweet from Twitter or from our server, there will still be data sent through the network.
I don't know if embed.js is the best solution, but it sure is a decent one. I'd like us to use something (half?) standard like oEmbed, which I believe is meant for the client.
Also, it would be interesting to inspect packets of other clients doing that. I'm thinking about Telegram or Slack, but I'm sure other clients do that. My guess is that they most likely all do one or the other...

Of course embed.js will leak client ips, it can't protect against that.

I meant regardless of origin. For things like image loading, yes, but if it doesn't allow random link prefetching, then not necessarily. For example, to render a tweet, if it just pings the Twitter API, then only Twitter will know about that IP address and I can't run a service that looks like Twitter and grabs all IP addresses.
But if the plan is to make it render everything like today and not a set of known services through their oEmbed (or oEmbed-like) APIs, then yeah, there is no way to protect the client.

Why not working in @MaxLeiter's branch instead (assuming he enabled that "Allow maintainers to commit to this branch")? If you don't, then it will trigger an entirely new PR/history.

Well, the history is gone because it is squashed. It's not a nice history.
Also, I don't want to rewrite @MaxLeiter's history, because then it's gone. This is work in parallel.

If doing on the client, is there a way to harvest all IPs?

Of course, but wait, weren't you in favour of doing it on the client?

Also, it would be interesting to inspect packets of other clients doing that. I'm thinking about Telegram or Slack, but I'm sure other clients do that.

That's an interesting question, I inspected slack and it definitely gets the images through it's server, but that's probably for their own tracking purposes (big bad company and all).  I couldn't see it coming from anywhere when I inspected. I don't think it exists.

But if the plan is to make it render everything like today

It doesn't currently do that (see my comment from earlier today), but I feel like it would be best to do it like this, would it not?
I don't particularly care about which service we use, but if we aren't using embed.js, we should probably close the PR rather than saying someone else can pick it up.
Frankly, I think this is just going to end up in limbo forever, which is really disappointing. We need to figure out what we want from these things, agree on that, and then implement it. But that involves us actually agreeing on something...

Having it fetched on lounge server once means every other load instantly shows info for it.

What, no. The client still needs to fetch it from the lounge server. It doesn't just magically have the information. And if it is cached locally, it'll be cached locally this way as well. I really don't see the advantage there.

Are we really sure embed.js is the only solution we can use?

I don't think anyone tried to say it was.

Well, the history is gone because it is squashed. It's not a nice history.

Sorry, I meant PR discussion, comments, etc. Sure, we can link from the new PR, but it always feels nicer :)
Anyway, it's not hard to port your stuff back to original branch/PR when you're done and @MaxLeiter is OK with that instead of opening a PR.

Of course, but wait, weren't you in favour of doing it on the client?

I know, I'm not making it easier :D
I was initially, then got convinced by @xPaw (and pretty much anyone else on this thread lol) that server-side was a better approach. I think the downsides of having it on the server (mainly having the server do something client-related) outweighs those of doing it on the client. But in the end, I don't feel strongly, it's a preference.
If others are strongly opposed to one way or the other, I'll got with the crowd. I'm more interested in making this happen.
(Ah ah, I realize you were also in favor of server-side, so looks like we all agree?)

I inspected slack and it definitely gets the images through it's server

I'm not surprised. Pretty sure Slack, Telegram and the likes do everything on the server, if anything to have a predictable behavior. If we assume some are not evil and don't track, they can always ensure network non-flakiness, monitor APIs for errors, etc.

Frankly, I think this is just going to end up in limbo forever, which is really disappointing. We need to figure out what we want from these things, agree on that, and then implement it. But that involves us actually agreeing on something...

I agree. Let's identify the key decisions for this, even in phase 1. IMO, these are:

What library/mechanism do we want to use?
Should it fetch server or client side?

It's very likely there are other questions to agree on, feel free to list them. I would answer:

embed.js or a library/mechanism that relies on oEmbed with fallbacks when oEmbed is not supported
Server-side

I'm also strongly in favor of prefetching HTTPS only (regardless of server/client-side, but if we end up doing client-side, this is not negotiable lol), but I feel like some will be against that, and I'll sure give up first.

I amn't against sever side in principle, but that would mean all this work is gone.

That was kind of why @MaxLeiter let this go in the first place I believe. If server-side, it does deserve its own PR to keep history of this one archived as well as lengthy discussion.
I'm not sure 100% would be gone if we are still using embed.js on the server, as the content generation still has to be done. But yes, mostly a shift, and even more so if we end up not using embed.js.
I don't have an opinion on that last part, just that I'd rather avoid making something ourselves because that would require even more work and maintenance on our end for something that's been dealt by others and not directly related to our IRC server/client.

I amn't

Scottish spotted :P

I'm not sure 100% would be gone if we are still using embed.js on the server, as the content generation still has to be done.

I guess we can technically use embed.js on the server side actually, as it supports just taking in text and outputting text (the default is taking in and outputting dom elements).

Scottish spotted :P

Huh, that's Scottish? TIL.

Also, either way, although some of the code from this might be used, if we are doing it server side, this PR should probably be closed as it'll jsut sit around and do nothing. The  branch can still exist for the code, but there's no point in the PR>

Alright, well, it looks like people aren't going to accept this PR, so let's close it for now. No point in having open PRs. We have an open issue for it.
I'll keep my branch up (yamanickill/embed) and there's @MaxLeiter's branch as well. If anyone feels like they can do this server side, feel free to pick it up.

Worth nothing that https://github.com/ritz078/embed.js/tree/v5 is being worked on, which may make this more feasible

@YaManicKill @MaxLeiter I have released the beta of v5 and it supports isomorphic code. Using it you can also create your own plugin or parser. I am just stuck a bit in writing the docs for now.
Let me know if you need any help.

I really don't see the point of doing this serverside...
First of all, most video embeds are done using an iframe returned from embed.js which would cause the client to request the resource anyway. Do you plan to parse the iframe contents in order to get the video URL? That's messy and guaranteed to break. And what do you do with the video URL?  And what about resources that require login? If you do it clientside, my login cookies is used when requesting.
As for the HTTPS verification... If someone replaces my HTTPS kitten with isis porn they either do it with a serverside hack which uses the original valid certificate or with a redirect which uses a free and valid letsencrypt certificate for isisporn.com. You are not gonna catch this with serverside logic, and you are not going to present the certificate for user validation before showing the resource (because that would make the preview terrible usability-wise).
If you on the other hand use an established standard like oembed you will get free support for hundreds of sites, and you won't have to manually update fixes for all edgecases - fixes that will break every time your supported sites change their embed code or urls.

Embed fetching won't move to the client, it was discussed before, and it will remain on the server.
oembed is not that simple of a solution, and you'd be surprised how many sites don't support it. Look at embed-js, it has code for specific services (youtube included). If you don't handle specific services, you will run into problems with CORS. That means most sites will cease to show any preview in lounge (small image/title/description). You will gain youtube video embeds (because you have it handled specifically in the embed library), you will lose generic previews.

First of all, most video embeds are done using an iframe (or script) returned from embed.js which would cause the client to request the resource anyway.

To embed a video iframe, you need to know where it is and what to embed first. embed.js hardcodes this for Youtube.

And what about resources that require login? If you do it clientside, my login cookies is used when requesting.

This is not strictly true. Browsers block third party cookies. Cookies can also specify that they're samesite  and you will not get any auth cookies on CORS requests (big sites already do this for obvious reasons). If this worked like you describe it does, any site could know what's your name on facebook.
The CORS issue alone effectively means you can't do this solely on the client. The server component does multiple things: it fetches once for all the users, the data is persisted in memory. If you fetched on the client, it would happen every time you loaded the client (and if you want to do caching on client, that has a lot of its own problems).

To embed a video iframe, you need to know where it is and what to embed first. embed.js hardcodes this for Youtube.

But what do you intend to do with that info? Parse the returned HTML for the video URL and break every time YouTube adjusts their code? Fill up the server with gigabytes of cached videofiles? Manipulate the YouTube player's code to play your proxied video and hope they don't implement consistency checks? Or write your own player and keep up with 360°, subtitles, audiotracks, resolution switching, bandwidth throttling and other features YouTube implement? I genuinely want to know this, and I really hope you have a lot of manpower if this is your plan...
And this is not specific to YouTube. The same applies to DailyLeak, Facebook, Twitter, Instagram, Vimeo, etc...

Browsers block third party cookies. Cookies can also specify that they're samesite and you will not get any auth cookies on CORS requests (big sites already do this for obvious reasons). If this worked like you describe it does, any site could know what's your name on facebook.

This is wrong. Browser block third party cookies, but it does not prevent a third party context (like an iframe) to read a cookie set by the same domain in a first party context (like when I log in to YouTube). This is why all YouTube embeds allow me to add the video to my playlists, like it, etc when I'm logged in. All this while still not exposing the cookies to the embedding site.
So the CORS issue is non-existant if you use the embed iframe as-is. Instead you would effectively block cookies that normally would be available and in turn break a lot of functionality for logged-in users like favoriting, saving to playlists, etc.

I didn't suggest that we parse youtube to get the video url anywhere. You have to use iframes for youtube.
CORS issue is still valid if you can't use iframes. How do you suggest we show generic site information for non video hosts?

But if you use the youtube iframe, you still expose your ip?


Issue - "ImportError: cannot import name '_Conv' from 'keras.layers.convolutional'"

I having this issue - "ImportError: cannot import name '_Conv' from 'keras.layers.convolutional'"
I have the latest version TensorFlow and Keras-vis.
Below is the code,
import os
import cv2
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import tensorflow as tf
import keras
from keras import activations
from keras.models import load_model
from vis.visualization import visualize_cam, overlay
from vis.utils import utils
import matplotlib.cm as cm
visualization = visualize_cam(model, layer_index, filter_indices=input_class, seed_input=input_image)
axes[0].imshow(input_image.squeeze(), cmap='gray')
axes[0].set_title('Input')
axes[1].imshow(visualization)
axes[1].set_title('Grad-CAM')
heatmap = np.uint8(cm.jet(visualization)[..., :3] * 255)
original = np.uint8(cm.gray(input_image.squeeze())[..., :3] * 255)
axes[2].imshow(overlay(heatmap, original))
axes[2].set_title('Overlay')
fig.suptitle(f'Image Class = {CATEGORIES[input_class]}')
plt.show()
I have attached the screenshot of the error.

Can anyone please help me?

Hi,  I'm having the same issue. Did you solve this problem?

I have installed CUDA drivers. Then it worked. Don't know how they are related but it worked.


Installation Fails

Dependancies Installation fails. I've tried to install using a fresh Buster image on Rpi 4, 3 and Zero.
Installation worked OK two weeks ago following the same process.

The lines through the text resulted after I pasted in the text into the comment space

If you put ~~~ by itself on a line before your paste, and again after the paste, it'll format as a code block. I edited your reply to add those...

Try this: edit src/Makefile, insert a tab at the beginning of lines 36-42, so it looks like this:
deps:
	ifneq ($(shell id -u), 0)
		@echo This must be ran with root permissions.
		@echo Please run \'sudo make deps\'
	else
		@echo `date +%F\ %R:%S` Installing build dependencies...
		@apt update && apt -y install libopencv-dev libusb-dev libusb-1.0-0-dev ffmpeg gawk lftp jq imagemagick
	endif

then try sudo make deps again. Do not copy and paste the section above, you have to edit the file and insert a tab (not spaces) at the beginning of those lines.

Just to be sure I did the edit correctly all I added was the tabs to make the text format indentical to your suggestion

Yes, at this stage cameras have nothing to do with it.
I'm not sure your source tree is correct; the following worked for me (just to check that make deps worked correctly:
mkdir /tmp/foobar
cd /tmp/foobar
git clone https://github.com/thomasjacquin/allsky
cd allsky/src
make deps
sudo make deps

What happens when you do that?

This is the result - I will be away fro the PC for awhile as I need to head to the obsevatory.
pi@raspberrypi:~ $ sudo mkdir /tmp/foobar
mkdir: cannot create directory ‘/tmp/foobar’: File exists
pi@raspberrypi:~ $ cd /tmp/foobar
pi@raspberrypi:/tmp/foobar $ git clone https://github.com/thomasjacquin/allsky
pi@raspberrypi:/tmp/foobar $ git clone https://github.com/thomasjacquin/allsky.git
fatal: could not create work tree dir 'allsky': Permission denied
pi@raspberrypi:/tmp/foobar $ sudo git clone https://github.com/thomasjacquin/allsky.git
Cloning into 'allsky'...
remote: Enumerating objects: 2731, done.
remote: Counting objects: 100% (1168/1168), done.
remote: Compressing objects: 100% (653/653), done.
remote: Total 2731 (delta 736), reused 825 (delta 490), pack-reused 1563
Receiving objects: 100% (2731/2731), 57.43 MiB | 3.35 MiB/s, done.
Resolving deltas: 100% (1641/1641), done.
pi@raspberrypi:/tmp/foobar $ cd allsky
pi@raspberrypi:/tmp/foobar/allsky $ cd src
pi@raspberrypi:/tmp/foobar/allsky/src $ make deps
Package libusb-1.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `libusb-1.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libusb-1.0' found
Makefile:46: *** Did not find USB Libraries, try 'make deps'.  Stop.
pi@raspberrypi:/tmp/foobar/allsky/src $ sudo make deps
Package libusb-1.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `libusb-1.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libusb-1.0' found
Makefile:46: *** Did not find USB Libraries, try 'make deps'.  Stop.
pi@raspberrypi:/tmp/foobar/allsky/src $

FYI - I have a reproducer for this and am working to figure out the issue.  If you'd like to move forward without waiting for a fix, please run the following command.
sudo apt update
sudo apt -y install libopencv-dev libusb-dev libusb-1.0-0-dev ffmpeg gawk lftp jq imagemagick

After that, you can re-run the ./install.sh script and it -should- finish the installation.
Let us know how it turns out, and thanks for your patience!

Thanks for the help but I'm still having difficulties.
I tried the changes proposed above but the installation failed.
I then started with a fresh Buster image and did a new install of the allsky and the GUI
Program started but no image available using RPiHQ.
I checked the config.sh file and found the following
Choose between "ZWO", "", or "auto".  "auto" prefers ZWO if present.
CAMERA=" "  I changed to CAMERA=”auto” saved and rebooted
Still no image
A connected a ASI-120MC-S rebooted still no image
Changed config.sh to CAMERA=”ZWO” saved and rebooted
still no image
Changed to CAMERA=”RPiHQ” saved and rebooted
Still no image
The systems hangs with the ASI120 installed but not with the RPiHQ.  On one reboot wifi would not connect with ASI120 installed.  Removed ASI120 – rebooted – wifi now works.  Installed ASI120 – still have wifi.  I have not been able to repeat the loss of wifi but the system keeps stalling with the ASI120 installed
RPi4 4BG – 32GB SD card


[WIP] mine key & micro blocks - tests not ready

don't merge, missing validation/instantiation flow, block drift, buffer

In general, not having height on micro blocks is problematic from the aec_chain_state point of view. We need to have another way of finding the children of a micro-block. The current code only works if the blocks arrive in perfect order.

superseded by https://github.com/aeternity/epoch/compare/master...ng-develop-3


Push TODO.md -> Kanban board

Convert the outstanding to Issues

ver-bump
📦 A handy utility that takes care of releasing Git software projects
Todo — General ⏳

[ ] refactor: use https://github.com/basherpm/basher instead of NPM, or in addition to it
[ ] feature: add full '--' swiches
See: https://github.com/ekalinin/github-markdown-toc/blob/master/gh-md-toc
[ ] chore: write better comments for functions and modules
[ ] docs: Instructions for creating a Gh package
[ ] docs: General tidy-up of the concepts
[ ] feature: Add switches for increasing MAJOR|MINOR|PATCH
[ ] feature: Releasing packages: Create automation for proper gh release
[ ] feature: Add option for capitalising ver-bump's commit msg for files it changes (for style purposes)

Doing 🚀
Done ✔

[x] docs: Create GIF screenshot
[x] feature: Switch to disable pause during CHANGELOG.md creation
[x] tests: Unit tests (with https://github.com/bats-core/bats-core)
[x] bugfix: Fix issue with running on v1.0.0, or any other version already present ONLY in package.json and not tagged.
[x] docs: Inform user how the script works in the current branch
[x] docs: Local npm install
[x] docs: Semver + Gh branching model
[x] docs: Document all remaining switches


OLS-1105: Fixed pydocstyle

Description
Fixed pydocstyle
Type of change

[ ] Refactor
[ ] New feature
[x] Bug fix
[ ] CVE fix
[ ] Optimization
[ ] Documentation Update
[ ] Configuration Update
[ ] Bump-up dependent library
[ ] Bump-up library or tool used for development (does not change the final image)
[ ] CI configuration change
[ ] Konflux configuration change

Related Tickets & Documents

Related Issue #OLS-1105

/lgtm

/approve

/override "Red Hat Konflux / ols-enterprise-contract / lightspeed-service"

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 94.89%. Comparing base (6af39f6) to head (526f6f5).
Report is 40 commits behind head on main.

Additional details and impacted files

@@           Coverage Diff           @@
##             main    #1693   +/-   ##
=======================================
  Coverage   94.88%   94.89%
=======================================
  Files          60       60
  Lines        2681     2685    +4
=======================================
+ Hits         2544     2548    +4
  Misses        137      137

Flag
Coverage Δ

?

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

Files with missing lines
Coverage Δ

ols/src/llms/providers/azure_openai.py
100.00% <ø> (ø)

ols/src/llms/providers/bam.py
100.00% <ø> (ø)

ols/src/llms/providers/fake_provider.py
100.00% <ø> (ø)

ols/src/llms/providers/openai.py
100.00% <ø> (ø)

ols/src/llms/providers/rhelai_vllm.py
100.00% <ø> (ø)

ols/src/llms/providers/rhoai_vllm.py
100.00% <ø> (ø)

ols/src/llms/providers/watsonx.py
100.00% <ø> (ø)


Use SHA256 for custom nonce as well

Convert the custom nonce to SHA256 as well

Fixes an issue, where setting custom nonce with Firebase and PovioKitAuth resulted in an error, saying that the nonce on FirebaseAuth and PovioKitAuth were not matching:
The nonce in ID Token "zyx" does not match the SHA256 hash of the raw nonce "zyx" in the request.

@EgzonArifi yes, works


NetworkTarget - HttpNetworkSender no longer sends out-of-order

And will flush correctly (delays flush completed until request completed). Resolves #3544 (See also #3542)

Added unit test that shows that it will not discard pending http-requests because one http-request has failed (NetworkTarget still discards active HttpNetworkSender on error, and will create new)

Cool!


Not selecting on enter keypress

We are currently using "react-selectize": "^0.5.0",, and the SimpleSelect. I am having an issue selecting the option with the enter keypress. It does nothing, not able to trace any callback or anything. Yet, it works fine with MultiSelect. Why is this? Any help would be appreciated :)

Ending up implementing something like this:
onEnter={(item) => {                     console.log('HIGHLIGHTED', item);                     this.setState({                       items: [item].concat(this.state.items),                       search: '',                     })                     this.refs.select.blur();                   }}

@tgoldenberg and what about Esc key? how to prevent "valueChange event" when "esc" button pressed?


Run the new SPA templates from the command-line

Type of issue
Typo
Description
Run the new SPA templates from the command-line
Page URL
https://learn.microsoft.com/en-us/aspnet/core/client-side/spa/intro?view=aspnetcore-8.0
Content source URL
https://github.com/dotnet/AspNetCore.Docs/blob/main/aspnetcore/client-side/spa/intro.md
Version Independent Document ID
c1ffb8e1-215c-c148-0b28-da0d62665fa4
Article author
Rick-Anderson

Closing as duplicate of #30634


💥 Fix max packet size calculations

Migration guide:
This change brings the minimum supported version of the Rust compiler up to 1.57.0.
Instead of using the MAX_ESCAPE_HEADER_BYTES constant to manually calculate the required output buffer size, this is now exposed as a function on the FormatDescription struct. Simply call max_packet_size() on your output format description struct.
This functions is a const fn, so it can be used in const contexts. In addition, the FormatDescription::alac constructor was also made const, so that the minimum output buffer size can be calculated at compile time.

Like a Rolling Stone    time:   [1.0982 s 1.0997 s 1.1015 s]
                        change: [-2.4958% -2.2185% -1.9642%] (p = 0.00 < 0.05)
                        Performance has improved.

Performance has improved 🎉


Add extra event tracking to local transactions

Add a Google Analytics event to track when a user is shown a result for a local transaction
eventCategory userAlerts:local_transaction
eventAction postcodeResultShown
eventLabel [local authority area shown]
We currently track when users receive an error on these pages but not an event that they are shown a result, this data should help us understand further how users engage with local transactions.
https://trello.com/c/croKq9tY/263-add-extra-event-tracking-to-local-transactions
⚠ This repo is Continuously Deployed: make sure you follow the guidance ⚠

Tested on integration, seems to work:


Create new blogpost

Hey team! Please add your planning poker estimate with Zenhub @BeierKevin @FloBaumi @roman533


Is there a way to check if a key exists inside a json object?

Description:

I want to check if a key is exist in a JSON object. For an example

json[] exampleJson =
[
   {
        "seat_count": 25,
        "national_list_seat_count": 0,
        "party_code": "Bar",
        "party_name": "Bar bar"
    },
    {
        "vote_count": 0,
        "vote_percentage": "0.00%",
        "seat_count": 18,
        "national_list_seat_count": 0,
        "party_code": "Foo",
        "party_name": "Foo foo"
    }
]

io:println(exampleJson[0].vote_count)

Gives following error,
'error {ballerina/lang.map}KeyNotFound message=Key 'vote_count' not found in JSON mapping'
Is there a way to validate it.
Example:

if(exampleJson[0].vote_count)
io:println(exampleJson[0].vote_count)

Since you have a json[] each individual member may or may not be a JSON object (i.e., it can be a number, a string, an array, etc.).
Once you validate that each member is indeed a JSON object (which is represented by a map of JSON map<json> in Ballerina) you can use the hasKey langlib method to check if the key exists.
For example,
    foreach json item in exampleJson {

        // Check if this member is a JSON object, if it is not, handle it.
        // e.g., panic or return an error.
        if !(item is map<json>) {
            // Handle non-JSON objects if needed.
            panic error("Expected a JSON object");
        }

        // We reach here only for a JSON object, so we can safely cast to a
        // `map<json>`
        map<json> mj = <map<json>> item;

        // Similar to a normal map, you can now check if the map contains
        // the key you need, and use the `get` langlib method to access the value.
        if mj.hasKey("vote_count") {
            json voteCount = mj.get("vote_count");

            // You can then check if `voteCount` is of the type you expect,
            // say `int`.
            if voteCount is int {
                // Here `voteCount` is an `int` and you can use it where an `int`
                // is expected.
                int x = voteCount;
            }
        }
    }

The following examples explain JSON, JSON objects, JSON access, and maps.

https://ballerina.io/learn/by-example/json.html
https://ballerina.io/learn/by-example/json-objects.html
https://ballerina.io/learn/by-example/json-access.html
https://ballerina.io/learn/by-example/maps.html

Got it!!!


Support record rule type

In loki v2.3.0 was announced support of ruller record metrics
name: NginxRules
interval: 1m
rules:
  - record: nginx:requests:rate1m
    expr: |
      sum(
        rate({container="nginx"}[1m])
      )
    labels:
      cluster: "us-central1"

current release does not support this rule type

Also interested if this will be implemented someday.

support is made in c7fb64af3c95f2275e9042855da71fa621777e7f


BUG? updateInterface not called in embedded dialog

I am inserting/embedding dialog in Grid. It all works fine, but for some reason protected updateInterface() function never gets called (along with afterLoadEntity)
Is this desired behavior?
Embedding looks like this:
this.advFilterDialog = new IDI5.Reports.AdvancedFilterDialog();
this.advFilterDialog.element.removeClass('hidden').appendTo(sDivName);

If you dont call load why it should update

@volkanceylan oh, I see. Is there document with event map? What gets called when?

Is there document with event map? What gets called when?

@FranciscoValdesGutierrez there used to be list of entity events in Wiki here, but I dont know of any for Dialogs...


Adding aggressive timeouts for in-region calls

Description
Adds the timeout and retry logic

Non-hotpath (Account information)
Read:
5-second timeout (No delay on the first retry)
10-second timeout
20-second timeout
Hotpath (QueryPlan, partition key ranges, address refresh)
Read retry in the same region. Does not impact region failover:
.5 second timeout (No delay on the first retry)
5-second timeout
10-second timeout

Previous Implementation:

Default Http Response Timeout -  60 seconds
Query Plan - 5 seconds
Address Refresh - 5 seconds

.Net PR:

https://github.com/Azure/azure-cosmos-dotnet-v3/pull/1954

All SDK Contribution checklist:

[ ] The pull request does not introduce [breaking changes]
[ ] CHANGELOG is updated for new features, bug fixes or other significant changes.
[ ] I have read the contribution guidelines.

General Guidelines and Best Practices

[ ] Title of the pull request is clear and informative.
[ ] There are a small number of commits, each of which have an informative message. This means that previously merged commits do not appear in the history of the PR. For more information on cleaning up the commits in your PR, see this page.

Testing Guidelines

[ ] Pull request includes test coverage for the included changes.

API change check
API changes are not detected in this pull request.

/azp run java - cosmos - tests

/azp run java - cosmos - tests

/azp run java - cosmos - tests

@jeet1995  / @xinlian12  - can you please give it a final look before we merge it?
cc - @aayush3011


test ci1

Coverage remained the same at 36.927% when pulling 623986b6075e5ed284f62a1927db854be02e5cf8 on sylviawangfr:patch-1 into 034b77d23a93b9c9c0fbaa7947e979ccf82adf9c on ringcentral:master.

Something went wrong. Investigate!

Something went wrong. Investigate!

Everything seems fine:)


Impossible to set swap_interval to 0

https://github.com/floooh/sokol/blob/21c9d47c85324104b0a5eeae3e017bd3551df7bb/sokol_app.h#L2895
Basically, it is not possible to specify swap_interval as 0 because of _sapp_def, even if I explicitly stated swap_interval eq to 0 in sapp_desc.

Yes, there's a couple of similar issues already, long story short, the sokol_app.h frame model doesn't easily allow to switch off vsync, and the swap_interval setting should actually be a preferred_framerate, because defining a swap interval isn't very helpful with different monitor refresh rates.

Here's the original ticket: https://github.com/floooh/sokol/issues/292


Trying to use ftp, get protocol error

Hi,
I am trying to use mavsdk's Ftp functionality to list the contents of a directory, among other things such as upload files, create dirs etc. However, I am getting the following error when trying to run my code:
File "/home/itayg/Documents/code/mav_ftp_test/mavftp_send.py", line 29, in list_dir
    dirs = await self.mav.ftp.list_directory(path)
  File "/home/itayg/Documents/code/mav_ftp_test/venv/lib/python3.10/site-packages/mavsdk/ftp.py", line 465, in list_directory
    raise FtpError(result, "list_directory()", remote_dir)
mavsdk.ftp.FtpError: PROTOCOL_ERROR: 'Protocol Error'; origin: list_directory(); params: ('/',)

My code:
from mavsdk import System
import asyncio

class MavFtpHandler:
    mav = None
    address = "serial:///dev/ttyACM0"

    async def init_connection(self):
        self.mav = System(mavsdk_server_address="<IP_ADDRESS>")
        print("Connecting to px4...")
        # Connect
        await self.mav.connect(system_address=self.address)
        # This waits till a mavlink based drone is connected
        async for state in self.mav.core.connection_state():
            if state.is_connected:
                print(".. Connected to px4!")
                break
        print()

    async def upload(self, path, remote):
        progress = self.mav.ftp.upload(path, remote)
        async for p in progress:
            print(".")
    async def list_dir(self, path):
        dirs = await self.mav.ftp.list_directory(path)
        print(dirs)
    async def run(self):
        await self.init_connection()
        await self.list_dir("/")

def main():
    mavftp = MavFtpHandler()
    asyncio.run(mavftp.run())

if __name__ == "__main__":
    main()

I am using a px4 connected via USB. I tried running mavsdk_server manually, here's the output:
[02:23:51|Info ] MAVSDK version: v1.4.16 (mavsdk_impl.cpp:20)
[02:23:51|Info ] Waiting to discover system on serial:///dev/ttyACM0... (connection_initiator.h:20)
[02:23:51|Debug] New: System ID: 1 Comp ID: 1 (mavsdk_impl.cpp:496)
[02:23:51|Debug] Component Autopilot (1) added. (system_impl.cpp:377)
[02:23:51|Warn ] Vehicle type changed (new type: 2, old type: 0) (system_impl.cpp:225)
[02:23:51|Debug] Discovered 1 component(s) (system_impl.cpp:578)
[02:23:51|Info ] System discovered (connection_initiator.h:63)
[02:23:51|Info ] Server started (grpc_server.cpp:53)
[02:23:51|Info ] Server set to listen on <IP_ADDRESS>:50051 (grpc_server.cpp:54)

I am running linux. Is there any way to fix this?

What is the other side? Is it PX4, and which version?
FYI: I'm pretty much re-writing FTP for MAVSDK v2 but it's not finished yet.

I am getting the same error trying to use mavftp with Ardupilot 4.4.4.

Yes, I see this too. On my list for this week.


Add BCTI logo

Hello Consulelo,
we’re in progress to improve the CAMARA website. To have the logos presented in the best way we would ask for a .SVG version.
Would you send us your logo again in .SVG format?
BR, Markus

BCTI has been added to the Participating Organizations.


SqlServer backup deletion at connection end  ?

If I run a Sql Server database backup from pyodbc, the backup file is deleted at the end of my script.
Since the backup takes some times, I can see the file being written, but it disappears after execution.
It could be a problem when pyodbc tries to close the connection, since when If I raise an exception after the backup instruction, the backup file is not deleted.
I don't have the problem when I use the regular win32all odbc module.
con = pyodbc.connect("Driver={SQL Server};Server=(local);Trusted_Connection=yes", autocommit=True)
cur = con.cursor()
cur.execute("BACKUP DATABASE {source} TO DISK = N'{backup_filename}'")
# raise Exception("anything") # uncomment to actually get the backup file.

+1, though I'm only closing the cursor and not the connection.

I'm going to close this only because I really don't think it is a pyodbc issue as opposed to a SQL Server driver issue.  If you want to examine this further, can you provide an ODBC trace file?

I'm having this issue now.
What is the correct solution for this?

Read all the resultsets coming from the server.
...and search for a solution before asking, others have seen this before: https://github.com/mkleehammer/pyodbc/issues/740


net: icmpv6: Drop malformed ICMPv6 echo request

This commit fixes the crash of echo_server from malformed echo request.
Signed-off-by: Ruslan Mstoi<EMAIL_ADDRESS>

Codecov Report

Merging #6639 into master will decrease coverage by <.01%.
The diff coverage is 0%.

@@            Coverage Diff             @@
##           master    #6639      +/-   ##
==========================================
- Coverage   53.51%   53.51%   -0.01%
==========================================
  Files         437      437
  Lines       41426    41428       +2
  Branches     7935     7936       +1
==========================================
+ Hits        22169    22170       +1
- Misses      16040    16041       +1
  Partials     3217     3217

Impacted Files
Coverage Δ

subsys/net/ip/icmpv6.c
24.46% <0%> (-0.18%)
:arrow_down:

kernel/posix/pthread.c
69.5% <0%> (+0.5%)
:arrow_up:

Continue to review full report at Codecov.

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


Install Windows 10?

Trying to install, I'm having the problem below:
Running setup.py install for Twisted ... error Exception: Traceback (most recent call last):   File "c:\users\hugo.borges\appdata\local\programs\python\python36-32\lib\site-packages\pip\compat\__init__.py", line 73, in console_to_str     return s.decode(sys.__stdout__.encoding) UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf3 in position 9: invalid continuation byte Como resolver?

I was able to install with git-bash.
After doing the procedures mentioned in README, I had to install a package called 'pyOpenSSL': pip install pyOpenSSL
And run by calling the Phyton command and not Python3 (I believe it is Windows).
Executed, but stopped in the log '' On Open". Any suggestions?
I am running on the VSCode terminal.


Pansharpen landsat at zoom 12

http://www.shadedrelief.com/landsat8/landsat8panchrom.html
https://earthobservatory.nasa.gov/blogs/earthmatters/2017/06/13/how-to-pan-sharpen-landsat-imagery/
Pansharpening with rasterio: https://github.com/developmentseed/landsat-util/blob/develop/landsat/image.py

Closed with https://github.com/kylebarron/serverless-aerial-imagery/commit/72b4872566f3d40f1e1ac3d25db15825c6d2dc14


Instance Scheduler CLI not returning anything meaningful

Describe the bug
Instance Scheduler CLI is not returning anything meaningful
To Reproduce
Open cloudshell
[cloudshell-user@ip-10-130-40-146 instance_scheduler_cli]$ scheduler-cli describe-periods --stack CoreServicesScheduler-v2
'version'
[cloudshell-user@ip-10-130-40-146 instance_scheduler_cli]$ scheduler-cli --version
'scheduler-cli 1.5.3'
Cloudshell is on the same region as stack where instance scheduler is installed. It would return an error message if an invalid stack name is entered.
Expected behavior
I was expecting it to describe the schedules / period
Please complete the following information about the solution:

[ ] Version: [e.g. v1.0.0]

Instance scheduler version : aws v3.0.3
Scheduler CLI version : 1.5.3

[ ] Region:  [us-west-2]

The 1.5.x scheduler CLI is not compatible with the 3.0.x release of the solution. Could you try the same flow using the latest version of the scheduler-cli and let us know if the problem persists?
Please also update the Instance Scheduler version to the latest patch (3.0.7) as one of the newer patches did include a minor patch to CLI compatibility.

Looks like I have 1.5.x scheduler-cli which I didn't uninstall.  I removed the previous version's binary and its files before I was able to successfully install CLI version 3.0.7 (Seems the install script doesn't upgrade previous versions? Not sure about this)
It now gives me the following :
scheduler-cli describe-periods --stack CoreServicesScheduler-v2
Cli version 3.0.7 is not supported for this version of the solution. please update to a supported version (3.0.0-3.0.3).
I will schedule some time to update the instance scheduler :-)
Thank you.


Uncaught (in promise) Error: App context is not available

I import this plugin using react 16.13.1, some error shown below:
Uncaught (in promise) Error: App context is not available
    at useApp (index.esm.js:280:1)
    at Result (index.esm.js:551:1)
    at renderWithHooks (react-dom.development.js:14803:1)
    at mountIndeterminateComponent (react-dom.development.js:17482:1)
    at beginWork (react-dom.development.js:18596:1)
    at HTMLUnknownElement.callCallback (react-dom.development.js:188:1)
    at Object.invokeGuardedCallbackDev (react-dom.development.js:237:1)
    at invokeGuardedCallback (react-dom.development.js:292:1)
    at beginWork$1 (react-dom.development.js:23203:1)
    at performUnitOfWork (react-dom.development.js:22154:1)

It broke down page rendering, maybe it was caused by function useApp() in package @backstage/version-bridge.

Hi which plugin do you use ?

I used HomePageRSS

Hi which plugin do you use ?

Hi which plugin do you use ?

I just try as examples in readme, it shows errors

Hi @LeungYuJP , Can you provide some more information and code excerpts of how you are setting up the plugin? We are using it at the moment in Roadie and we are not having issues so it's difficult to help out.


⚠ Bofrost.fr has degraded performance

In a9ec39e, Bofrost.fr (https://www.bofrost.fr) experienced degraded performance:

HTTP code: 200
Response time: 901 ms

Resolved: Bofrost.fr performance has improved in f067de5.


Question: how to show custom popup dialog for URL

Hi,
I'm using ngx-editor for a small project where workers need to be able to insert predefined links. If they need to memorize and retype these URLs, the user experience is not as good as could be, so I'm investigating the possibility to show a popup where they can just select the item they want to link to. Could this be done? Any pointers would be greatly appreciated!
Merijn

You should be able to insert link by
const editor = new Editor()
editor.commands.insertLink('Google', {href: 'https://google.com', target: '_blank'})

so I'm investigating the possibility to show a popup

you'll have to create the popup yourself. You can insert the link from there using the above command. There is also  custom menu. using custom menu, you can create your own button component which will be rendered at the end of the toolbar item, which you can use to trigger the popup.


testStressTesterOperationQueue is flaky, disable for now

E.g. https://ci.swift.org/job/swift-syntax-PR-macOS/782/console failed.
testStressTesterOperationQueueis failing non-deterministically in CI. Disabling until we have time to investigate.

@swift-ci Please test

@swift-ci Please test


[Feat] Allow effects to be applied to tokens.

Moving this back to 0.11.x as it requires the implementation of item effects.


Feature: Adding contributors section to the README.md file.

There is no Contributors section in readme file .
As we know Contributions are what make the open-source community such an amazing place to learn, inspire, and create.
The Contributors section in a README.md file is important as it acknowledges and gives credit to those who have contributed to a project, fosters community and collaboration, adds transparency and accountability, and helps document the project's history for current and future maintainers. It also serves as a form of recognition, motivating contributors to continue their efforts.

@oskarhane  Kindly assign me this issue, I want to work on it. Thank You!!

There is an entire file dedicated to contribution and aligned with the Docker template already in the repo.

Okay , Thank You! but as a suggestion you have to add the contributors in readme file . it will be better for new contributors who wants to contribute in the repo happily!

If you want then I can work on it! @zooninja

I think as you can see the contributors in the GH UI, there is no extra need for now to add a separate section.
Thank you for the proposal though.


Reset box-sizing

Using :where(html) for the box-sizing caused a regression where the inherit takes precedence thus messing up box-sizing.

fixed and published to all packages


"Updating the comment failed: Not Found" if you checkout another branch before publishing the pending comment

ext version: 1.7.1
Repro:

Make a pending comment
Checkout another branch
Checkout the original branch
Edit the comment

I'm not able to reproduce this now.


OE 0.12.0

I think we still need to properly document gcp workload identity as described in the PR: https://github.com/okteto/app/pull/3787

It's odd that these release notes are no longer on our doc site be default and are only on the 1.0 versioned docs. These are chart release notes so it's not really associated with the cli release.
@RinkiyaKeDad is this intended to be this way?

No, this is not intended. We should be updating the ones in the "current" version
https://www.okteto.com/docs/enterprise/install/releases/

I think we still need to properly document gcp workload identity as described in the PR: okteto/app#3787

It is enough to create spot for this on the community forum.


possibility to truncate the current working dir with ~ instead of /home/

Hi,
Would it be possible to adapt the directory module to have an option that would truncate the cwd to use ~/ instead of /home/<username>. I am working in and Android Open Source Project (AOSP) and the paths there are already quite long. The status bar is pretty crowded so getting back a dozen or so characters would be precious.
If you point me in the right direction, I would be willing to constribute a PR.
Thanks in advance for considering this feature request.
Kind regards
EDIT: typo

You can use this in your .tmux.com
set -g @catppuccin_window_current_text "#( echo \#{pane_current_path} | sed \"s|$HOME|~|\" )"
set -g @catppuccin_window_default_text "#( echo \#{pane_current_path} | sed \"s|$HOME|~|\" | xargs basename )"

This will replace you "/home/username" with "~" and for the current window it will display the full path, and for the default window it will display only the folder.

Thanks for the response! Based on your suggestion I ended up with this which does the job perfectly:
set -g @catppuccin_directory_text "#( echo \#{pane_current_path} | sed \"s|$HOME|~|\" )"


Speed of code

Why is your code so disgusting? The training only supports single GPU, which is too slow. The inference takes time longer than 1 second on GTX 2080Ti, which is way conflict with what you state in paper.

We would love to hear any constructive advice. And we are more than happy to help if anyone has any problems. However, toxicity is not welcomed here.


consistent environment settings.

Support consistent environment settings for maestro agent with maestro server.
Changed default log level to 4, so that cloudevents will be printed for debug.

e2e is broken by https://github.com/openshift-online/maestro/issues/203

/assign @clyang82 @skeeey


Add-DbaComputerCertificate, CheckList Changes

@potatoqualitee @niphlod
Do we want a pop up?
Other tests worked.

yeahhh bawww that's good. prompt is fine.


Try to fix metadata crash

This workaround might fix https://github.com/erogenousbeef/BigReactors/issues/566 but it needs to be tested by someone who is experiencing this crash. The code will still throw an exception if the metadata is higher than 1. In that case the multiblock code can't detect the glass block because it is missing the tile entity.

@XFactHD Maybe you join our discord: https://discord.gg/0VmBoNh2sE2x2MxC
So we can discuss things in future, as I could use some help with v0.5 or the ports

I joined your discord. I just read through the latest comments. Are you trying to add the machines that mr beef put on the roadmap?

Yeah and maybe some other things to, but my java nad modding knowledge are very limited...


alertmanger doesn't send mail when alert.

This is my simple.yml in alertmanger:
global:
resolve_timeout: 5m
smtp_from<EMAIL_ADDRESS>smtp_smarthost: 'smtp.test.com:25'
smtp_require_tls: true
pagerduty_url: https://events.pagerduty.com/v2/enqueue
hipchat_api_url: https://api.hipchat.com/
opsgenie_api_url: https://api.opsgenie.com/
wechat_api_url: https://qyapi.weixin.qq.com/cgi-bin/
victorops_api_url: https://alert.victorops.com/integrations/generic/20131114/alert/
route:
receiver: aaa
group_by: alertname
group_wait: 30s
group_interval: 5m
repeat_interval: 3h
receivers:
name: aaa
email_configs:
send_resolved: false
to<EMAIL_ADDRESS>from<EMAIL_ADDRESS>smarthost: smtp.test.com:25
headers:
From<EMAIL_ADDRESS>Subject: '{{ template "email.default.subject" . }}'
To<EMAIL_ADDRESS>html: '{{ template "email.default.html" . }}'
require_tls: true
webhook_configs:
send_resolved: true
url: http://********
templates: []
but alertmanger doesn't send mail when alert.
thanks

This does not follow the provided template, and gives no clues as to how we may help you.


z-order not in draw_batch.set

I noticed that in bracket-terminal draw_batch.set_fancy has a z-order but uses PointF, while draw_batch.set does not have a z-order at all.
This ends up with the Player being rendered underneath items when they are standing over them. Could z-order be added as an optional argument to draw_batch.set?

The issue is from the roguelike game made in the book, "Hands-on Rust."

Ok, I'm working on a branch that supports something similar (issue_225_z_order). You can't overload functions in Rust with optional parameters, so I've added a with_z suffixed version of the draw commands. Otherwise, order is as-specified. So to set on top, you'd call set_with_z and put a large number as the last parameter.
It still needs testing and an example for how to use it.


1.18.2 update

Quick port to 1.18.2. Mostly mixin fixes and version bumps. Tested with sync, which seems to work fine (the crafting recipe changes in hardcore) on the surface. Might benefit from some more rigorous testing.

Thank you so much for helping me out with this one, deeply appreciated!


ISPN-8700 Ensure that REST test threads include the test name

https://issues.jboss.org/browse/ISPN-8700

Tests are looking good 👍

Integrated, thanks @tristantarrant !


Group project kanban board set up

In this project we are 2 of us. We have assigned ourselves cards from the kanban board. And this is our Github project url Project.

Hi @HERMON-1995 @Newtayo ,
Your project is complete!  There is nothing else to say other than... it's time to merge it :shipit:
Congratulations! 🎉

Highlights
Kanban setup :heavy_check_mark:
Tasks Assigned fairly :heavy_check_mark:
Optional suggestions
Every comment with the [OPTIONAL] prefix won't stop the approval of this PR. However, I strongly recommend you to take them into account as they can make your code better. Some of them were simply missed by the previous reviewer and addressing them will really improve your application.
Cheers and Happy coding!👏👏👏
Feel free to leave any questions or comments in the PR thread if something is not 100% clear.
Please, remember to tag me in your question so I can receive the notification.

As described in the Code reviews limits policy  you have a limited number of reviews per project (check the exact number in your Dashboard). If you think that the code review was not fair, you can request a second opinion using this form.

Thank you for approving the setup of kanban board! 😊


Fixes broken Build-Bicep test

Overview/Summary
Fixes the broken test for Build-Bicep after #293, somehow it made it through. I thought I adjusted it pre-merge.
This PR fixes/adds/changes/removes

Changes the module loading back in the test for Build-Bicep

Noticed that it was included in #329 as well. Close or merge is up to you


The grid doesn't have the spaces defined

Describe the bug
The layout of first section doesn't have the spaces defined for the grid in Mockup S3.
Expected behavior
Use the grid and the columns defined for placing elements.
Screenshots

@panchovm can you provide more details as to what exactly needs to be fixed in the grid? Is it the column sizes? Gap size? It's a bit unclear

Both. I can't give more details about how is implemented but comparing it with the mockup. There is a difference in columns and gap sizes.


MOON-132: Fix TreeView alignement

JIRA

https://jira.jahia.org/browse/MOON-132
Description
Fix tree alignment between siblings elements with children and not

Hi @ffffffelix, should this fix solve the alignment for when the sibling element does/doesn't have an icon? I.e., should the labels be aligned with each other or where the icon could be?
Maybe this screenshot will make it easier to understand what I'm asking:


Chrome 53: select labels cut off at the bottom

I'm seeing the option labels cut off at the bottom in Chrome 53 (more visible in the demo with letters in the label than with numbers):
http://timber-demo.myshopify.com/products/ricky-straight-super-t-mens-jean
Looks like this issue:
https://productforums.google.com/forum/#!topic/chrome/qCzisuSDrjE
Removing the line height from selects is working for me in Chrome, but I haven't tested that in other browsers yet.

This is fixed in Canary already so really hoping it's a temporary bug. Removing line-height is the easiest fix, though you can also set a fixed height if the design requires it.
Going to leave this issue open and expect Chrome to fix this itself very shortly.

Great, thanks for looking at this!


fix: use error detail as message instead of whole error object

Description
Whenever the file preview requests fail with 400 Bad Request, full error object was returned as error message for the webdav response. For example (try to get folder preview);
curl "https://localhost:9200/remote.php/dav/files/admin/folder?x=32&y=32&forceIcon=0&preview=1" \
-uadmin:admin -vk

Current,
...
< HTTP/1.1 400 Bad Request
...

<?xml version="1.0" encoding="UTF-8"?>
<d:error
	xmlns:d="DAV"
	xmlns:s="http://sabredav.org/ns">
	<s:exception>Sabre\DAV\Exception\BadRequest</s:exception>
	<s:message>{"id":"com.owncloud.api.thumbnails","code":400,"detail":"Unsupported file type","status":"Bad Request"}</s:message>
</d:error>

This PR fixes the redundancy in the error message and only return detail from the error object.
With PR,
...
	<s:exception>Sabre\DAV\Exception\BadRequest</s:exception>
	<s:message>Unsupported file type</s:message>
...

Related Issue

Fixes https://github.com/owncloud/ocis/issues/2064

Motivation and Context
return proper error message in the response
How Has This Been Tested?

local
CI

Types of changes

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] Technical debt
[ ] Tests only (no source changes)

Checklist:

[x] Code changes
[ ] Unit tests added
[ ] Acceptance tests added
[ ] Documentation ticket raised:

@kobergj @2403905 Here is another one

Passing test: https://drone.owncloud.com/owncloud/ocis/24860/67/6


metagraph tool isn't properly working

hi team, over in #32, I ran metagraph like so:
./run-many-csv metagraph/conf-basic.yml metagraph data/data-small.csv -o out.csv

and the resulting out.csv included this line:
data/genome-s10+s11.fa.gz,data/random-query.fa,1,outputs.metagraph.8t1f9hu3/results.1.3

show that it found the negative control I added.
Looking at all the results files together with
find outputs.metagraph.8t1f9hu3 -name results.csv -exec cat {} \;

I see:
0       random10k
0       s10.4000        /disk/bothie/data/genome-s10+s11.fa.gz
0       s10.4000        /disk/bothie/data/genome-s10.fa.gz
0       s10.100 /disk/bothie/data/genome-s10+s11.fa.gz
0       s10.100 /disk/bothie/data/genome-s10.fa.gz

so it looks like metagraph isn't properly working yet, maybe.
cc @jackroddy @phiweger

You mean because it shows random10k?
It prints the query name in the second column and then matches. For random10k it doesn't print any matches, so I assume that passes the negative control. Am I interpreting this benchmark correctly?

There is also a special flag --suppress-unlabeled to skip lines for queries without any hits (under the threshold).
Another useful flag is --count-labels, which in addition to each hit prints the number of k-mer matches (if there any), e.g.:
0	s10.10000	<1.fa>:9970
0	random10k

There is also a special flag --suppress-unlabeled to skip lines for queries without any hits (under the threshold).
Another useful flag is --count-labels, which in addition to each hit prints the number of k-mer matches (if there any), e.g.:
0	s10.10000	<1.fa>:9970
0	random10k

That makes total sense, thanks for clearing this up. I think this means the tool is working just fine.
Although, I spent quite a while looking for a description of the output of metagraph query, and couldn't find one. Is there one in the documentation?

looking for a description of the output of metagraph query, and couldn't find one. Is there one in the documentation?

Not at the moment. Yeah, I guess this part still needs to be documented.
Meanwhile, feel free to ping me if something else is unclear.

You mean because it shows random10k?

that was part of it -

It prints the query name in the second column and then all the matches. For random10k it doesn't print any matches, so I assume it passes the negative control. Am I interpreting this benchmark correctly?

but while it should be negative on the random10k (and is), it should also be positive/finding these with exact matches of the specified size (4000 and 100).
0       s10.4000        /disk/bothie/data/genome-s10+s11.fa.gz
0       s10.4000        /disk/bothie/data/genome-s10.fa.gz
0       s10.100 /disk/bothie/data/genome-s10+s11.fa.gz
0       s10.100 /disk/bothie/data/genome-s10.fa.gz

.. which it does, right?
Or, am I missing something?

ohhhhh I'm missing the factoid about the third column being the thing ;). So our interpretation of the results file wrong. got it!

(what's the 0 in the first column, anyway?)

The first column (here 0) is the index of the query -- in case you pass a fasta/fastq file with multiple sequences.

got it, thanks. OK, working on fixing the results interpretation code... fixing it over in https://github.com/NCBI-Codeathons/bothie/pull/49 (it works for me now, 🎉 )
thank you, @karasikov!!

oh that all makes sense now! thanks @karasikov and agree, this should really find its way into the documentation, think: three people could not figure it out by themselves.

Thanks for the suggestions, now it will show it in usage: https://github.com/ratschlab/metagraph/commit/8749358165ff36fe34882e9fedfcf6832d9c2461


Adding Russian translation.

I have finished translating system messages.
If I missed something, I'm sorry, and if it’s trouble, then point out these errors.
Thank you for giving me the opportunity to translate for you, I really appreciate it !

The translation looks good. I am guessing you closed the PR because it wasn't GPG signed.

Yes, it is true. Simply at long work, my computer strongly becomes clogged and I carry out cleaning by the special utility, probably it nechayno cleared the necessary files including GPG4WIN settings. Now I'm setting it up again, and in a couple of minutes I'll make another request to add translations. I'm sorry if I disturbed you.


Add FuncConverter docs

Adds docs pages for:
-FuncConverter
-FuncMultiConverter

Docs Build status updates of commit 3289f8f:
:warning: Validation status: warnings

File
Status
Preview URL
Details

docs/maui/markup/converters/func-converter.md
:warning:Warning
View
Details

docs/maui/markup/converters/func-multi-converter.md
:warning:Warning
View
Details

docs/maui/TOC.yml
:white_check_mark:Succeeded
View

docs/maui/markup/markup.md
:white_check_mark:Succeeded
View

docs/maui/markup/converters/func-converter.md

Line 8, Column 1: [Warning: duplicate-h1s - See documentation] H1 'FuncConverter' is duplicated with other articles: 'maui/markup/converters/func-converter.md(8,1), maui/markup/converters/func-multi-converter.md(8,1)'. First level headings must be unique within a docset.

docs/maui/markup/converters/func-multi-converter.md

Line 8, Column 1: [Warning: duplicate-h1s - See documentation] H1 'FuncConverter' is duplicated with other articles: 'maui/markup/converters/func-converter.md(8,1), maui/markup/converters/func-multi-converter.md(8,1)'. First level headings must be unique within a docset.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 3e44a0e:
:warning: Validation status: warnings

File
Status
Preview URL
Details

docs/maui/markup/converters/func-converter.md
:warning:Warning
View
Details

docs/maui/markup/converters/func-multi-converter.md
:warning:Warning
View
Details

docs/maui/TOC.yml
:white_check_mark:Succeeded
View

docs/maui/markup/markup.md
:white_check_mark:Succeeded
View

docs/maui/markup/converters/func-converter.md

Line 8, Column 1: [Warning: duplicate-h1s - See documentation] H1 'FuncConverter' is duplicated with other articles: 'maui/markup/converters/func-converter.md(8,1), maui/markup/converters/func-multi-converter.md(8,1)'. First level headings must be unique within a docset.

docs/maui/markup/converters/func-multi-converter.md

Line 8, Column 1: [Warning: duplicate-h1s - See documentation] H1 'FuncConverter' is duplicated with other articles: 'maui/markup/converters/func-converter.md(8,1), maui/markup/converters/func-multi-converter.md(8,1)'. First level headings must be unique within a docset.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 50dbc8b:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/maui/TOC.yml
:white_check_mark:Succeeded
View

docs/maui/markup/converters/func-converter.md
:white_check_mark:Succeeded
View

docs/maui/markup/converters/func-multi-converter.md
:white_check_mark:Succeeded
View

docs/maui/markup/markup.md
:white_check_mark:Succeeded
View

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

PRMerger Results

Issue
Description

Added File(s)
This PR contains added files. New files require human review.

Yaml File(s)
This PR includes changes to .yml file(s) owned by another author.

File Change Percent
This PR contains file(s) with more than 20% file change.

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

File
Status
Preview URL
Details

docs/maui/TOC.yml
:white_check_mark:Succeeded
View

docs/maui/markup/converters/func-converter.md
:white_check_mark:Succeeded
View

docs/maui/markup/converters/func-multi-converter.md
:white_check_mark:Succeeded
View

docs/maui/markup/markup.md
:white_check_mark:Succeeded
View

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

PRMerger Results

Issue
Description

Added File(s)
This PR contains added files. New files require human review.

Yaml File(s)
This PR includes changes to .yml file(s) owned by another author.

File Change Percent
This PR contains file(s) with more than 20% file change.


Fix for breaking change for Ruby and runtime dependency version.

This fixes https://github.com/guard/rb-inotify/issues/68
I guess that we can release 0.9.10.
Because changing Ruby and run time dependency packages condition with maintenance version (Z of X.Y.Z) is not user friendly.
If you want to change those, the timing of major or minor version bump looks better.
Detail

Fix for breaking change for dependency condition from 0.9.8 to 0.9.9.
Keep Ruby and runtime dependency (ffi) to be same with rb-inotify 0.9.8.
Fix skipped tests logic in Rakefile.
Add Ruby 1.8, 1.9 test case on Travis.
Add release test on Travis.

As you know, current bundle exec rake does not work. You can see the test result is not displayed.
So, I fixed it.
$ bundle exec rake
/usr/local/ruby-2.4.1/bin/ruby -I/home/jaruga/git/rb-inotify/vendor/bundle/ruby/2.4.0/gems/rspec-core-3.4.4/lib:/home/jaruga/git/rb-inotify/vendor/bundle/ruby/2.4.0/gems/rspec-support-3.4.1/lib /home/jaruga/git/rb-inotify/vendor/bundle/ruby/2.4.0/gems/rspec-core-3.4.4/exe/rspec --pattern spec/\*\*\{,/\*/\*\*\}/\*_spec.rb
..

Finished in 0.00142 seconds (files took 0.07249 seconds to load)
2 examples, 0 failures

Changes Unknown when pulling d66a25290647dbf2f3229f3788ce621680a0c1d0 on junaruga:hotfix/breaking-dependencies-at-maintenance-version into ** on guard:master**.

First try: Ruby 1.8 and 1.9 was failed.
https://travis-ci.org/guard/rb-inotify/builds/243822309

Changes Unknown when pulling baa1e0cf0bcc7415b9e8318729b5ebf7f107d1ff on junaruga:hotfix/breaking-dependencies-at-maintenance-version into ** on guard:master**.

2nd Try:
https://travis-ci.org/guard/rb-inotify/builds/243828896

An error occurred while installing tins (1.14.0), and Bundler cannot continue

Changes Unknown when pulling bfb71630784e0baeef78a793f61f8cb362129bb5 on junaruga:hotfix/breaking-dependencies-at-maintenance-version into ** on guard:master**.

Changes Unknown when pulling 35b1df0c28d508002ba3596ab70b8e78cc5fb82e on junaruga:hotfix/breaking-dependencies-at-maintenance-version into ** on guard:master**.

Changes Unknown when pulling a1a52ca4e8e405a50781c731fd77e9eed1ac6bf5 on junaruga:hotfix/breaking-dependencies-at-maintenance-version into ** on guard:master**.

Changes Unknown when pulling e965e3dcaacf7dd90792d8d9a9a147d2c2a43378 on junaruga:hotfix/breaking-dependencies-at-maintenance-version into ** on guard:master**.

Changes Unknown when pulling 8f5fb7cd7b4d6693a5b43f5455f374d6ffd14893 on junaruga:hotfix/breaking-dependencies-at-maintenance-version into ** on guard:master**.

All the test cases passed.

Thanks for spending some time working on this.
The very first question to ask is, do we want to/need to support Ruby 1.8 and 1.9 in the first 1.0 release of rb-inotify.
Looking at what you've had to do, just to get it to work, in my mind, that makes me less likely to want to support it. I'm not adverse to it, I'm just trying to be realistic in terms of my time and what I'm able to maintain vs what I think is useful.
A specific thing I noticed was that you needed to add support for 0.x releases of FFI. While in theory, those releases are now stable - we don't know how buggy they are, and if they have security issues or not. It also means we are limited to features exposed by 0.5+ of FFI.
It looks like there are some other issues with the Gemfile which I missed, so we should fix those too - we can remove most of them, they are just for development/debugging.
Thoughts?

I am going to make a 0-x-stable branch and prepare a 0.9.10 release. Can you rebase your changes on that in about 5 minutes, and I'll retest and then release.

Okay, so the 0-x-stable branch is ready, it has this PR merged into it, and if you can update it with your recent changes, that would be great!

I am going to make a 0-x-stable branch and prepare a 0.9.10 release. Can you rebase your changes on that in about 5 minutes, and I'll retest and then release.

Rebase? I guess you did it by myself.

if you can update it with your recent changes, that would be great!

OK I can do it later.

So, I've merged this PR into 0-x-stable.
If there are further changes, can you rebase them on this branch, and then submit a PR for that branch 0-x-stable. Master will soon be updated with 1.0rc1

@ioquatix OK I got it!


feat: [NMP-30] Feature** setup vite pwa

Description
Installed vite-plugin-pwa to the current frontend application and configured an initial setup for vite pwa with registerType to autoUpdate to specify registration type for the service worker.
Type of changes
Please delete options that are not relevant.

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

Checklist

[x] I have read the CONTRIBUTING doc
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass locally with my changes
[ ] Any dependent changes have already been accepted and merged

Further comments
If there is other configuration that I need to add into this please let me know! Also, pulling from recent branch to a new feature branch is still confusing to me, so I hope I don't make any merge conflicts!

Thanks for the PR!
Deployments, as required, will be available below:

Frontend
Backend

Please create PRs in draft mode.  Mark as ready to enable:

Analysis Workflow

After merge, new images are deployed in:

Merge Workflow

Been able to download the web application in my local device, please test it out on your own device before reviewing thanks!

Added name, description, and theme_color. Will merge now.


Add hadolint Dockerfile Validation to Github Workflow

You should look into MegaLinter. I was doing all the linting and checks individually and realized most of the tools I was using were already part of MegaLinter. MegaLinter includes hadolint.


Potential Conflict: flutter_secure_storage (9.2.2) and flutter_sound (9.17.0)

I'm encountering potential conflicts between the flutter_sound (version 9.17.0) and flutter_secure_storage (version 9.2.2) packages in my Flutter application.
Can you please fix this issue?
Issue description:
Because no versions of flutter_secure_storage match >9.2.2 <10.0.0 and flutter_secure_storage 9.2.2 depends on flutter_secure_storage_web ^1.2.1, flutter_secure_storage ^9.2.2 requires flutter_secure_storage_web ^1.2.1.
And because no versions of flutter_secure_storage_web match >1.2.1 <2.0.0 and flutter_secure_storage_web 1.2.1 depends on js ^0.6.3, flutter_secure_storage ^9.2.2 requires js ^0.6.3.
And because flutter_sound >=9.17.0 depends on flutter_sound_web 9.17.0 which depends on js ^0.7.1, flutter_secure_storage ^9.2.2 is incompatible with flutter_sound >=9.17.0.
So, because be_pass depends on both flutter_sound ^9.17.0 and flutter_secure_storage ^9.2.2, version solving failed.
You can try one of the following suggestions to make the pubspec resolve:
Consider downgrading your constraint on flutter_secure_storage: flutter pub add flutter_secure_storage:^4.2.1
Consider downgrading your constraint on flutter_sound: flutter pub add flutter_sound:^9.6.0

Duplicate of https://github.com/juliansteenbakker/flutter_secure_storage/issues/818