Improve layout and UX of the project manager

Introduction
For a few months now I have been thinking about how the project manager feels unpolished and is not a very good representation of Godot's editor UI. I considered that we already have established a nice basic layout with the editor itself, and it's would fit very well into the project manager. I also considered that this would be the least controversial way to update the project manager right now, since such a change would make it resemble the editor more, rather than try to push for something completely new.
With a redesign it's important to keep in mind not only what we want to provide right now, but also what we want to achieve in the future. There has long been talks about such features as an update checker or a news feed from the official website. At the same time, we wanted to improve the way how we handle privacy within the editor and its online features. These two goals are naturally at odds with each other, so it was also my task here to address them together and provide you with a full picture.
And finally, the project manager is currently lacking in the configuration department. You can only change a language, but not other settings which may be important when you first launch Godot. Such settings can be the editor UI theme and the display scale. These not being configurable from the getgo negatively affect user experience. I wanted to address this as well.
So I started with some rework weeks ago, and was able to finally finish it now.
Features
A refreshed look based on the "main view" design of the Godot editor itself.
The tab container has been replaced with the familiar view switches, which grab your attention much better. This should help highlight the asset library much better than before, where a tab for it would be smooshed and lost. Not much is different about the layout itself within each tab, since recent additions (as of 4.2) already make it more organized.
We currently have some issues with keyboard navigation, which this PR doesn't fix. But it's something that we should definitely look into later.

The top bar is split into three parts, which tie the overall look together. In the middle you have the tabs to switch between the project list, the asset library, and potentially more views. As a bait I've added a yet disabled "News" tab to give you all a better idea of how it might fit in. I am fully committed to implement it, if we agree on having it. Or it can be done by someone else too. Not in this PR, but as a follow-up, and, again, only if we agree. I can remove it from the final version of this PR if we don't agree or if we decide that leaving it disabled like that is not a good idea.
On the left I've added a Godot logo, just as a stylistic choice. I think it adds some character to the overall look, but I'm open to change it to something else. We can switch to a different logo (say, only text without the cute robot), or remove it too. But I'd like to insist on keeping it, or at least coming up with an alternative filler for this space. The logo acts as a replacement for the old "About" button.
On the right the old language selector is gone in favor of the new Quick Settings dialog button. More about it below.
The version string is now at the bottom. @KoBeWi's update checker (https://github.com/godotengine/godot/pull/75916) can be moved there as well, to alert users in a non-intrusive way. The new footer bar does take away from the vertical space, but in a recent PR I have actually fixed the size application in the project manager. So in the 4.3 branch it actually has more vertical space to work with by default than in 4.2 and before. That was actually a bug I discovered while working on this, and I think that combined these two changes result in plenty of space left for the project list.
Finally, I'm also trying something with the welcome dialog that you see if you have no projects. I think it's a good direction, but I'm not sure if I like the result insofar. But we can always improve on it later.

A new Quick Settings dialog to adjust more than just the language.
While there is a PR (https://github.com/godotengine/godot/pull/82212) to bring the entire editor settings dialog into the project manager, I find this solution to be overwhelming for the majority of use cases where you need to configure something before launching the editor.
Instead I propose that we provide a small and local dialog which allows customizing only some of the settings which may be immediately useful, especially when you start Godot for the first time. I've decided to stop at the language, scale, theme, and network mode (more about that one below). It's a bit of a custom UI, but it's easily to implement and maintain, and it allows users to quickly edit the most useful visual settings which directly affect their experience with the project manager.

If we still want to provide the full editor settings dialog in the project manager, I think it can be added on top of this Quick Settings dialog. We can add a button to the Quick Settings dialog which would bring the full dialog up, and I think that would be sufficient compromise for those who need to tinker with some deeper laid settings.
There is, of course, an argument for having a "basic" toggle in the editor settings. But from my experience with the project settings dialog this toggle doesn't significantly help with the user experience. We reduce the number of settings (while also hiding some useful ones, arbitrarily), but the navigation still sucks. It's not a tailored menu, it's still a verbose list, which is not too clear to navigate. So my proposal is to add a tailored menu first, and then maybe add a shortcut for the full menu on top of it.
The network mode setting to bring the editor offline.
With this PR we will start in the offline mode by default. This means that the asset library won't be making any web requests, not until you let the editor go online. The same will apply to future possible features like the update checker and the news section. The same should probably apply to the dialog which allows you to download export templates, and other editor tools with online activity, but pardon me, I haven't implemented it in this PR for simplicity's sake.
The idea is that we don't want to break privacy for users who are concerned about it. And we also want this to be as small of an obstacle as possible for the rest. So besides a new editor settings all UIs which need online activity should offer a way to switch to the online mode with one click.

Added to the "Network" group of settings "Network Mode" currently has two options, "Offline" and "Online". I consciously made it an option list because I can imagine there being a need for a less binary configuration, with some partial mode to allow some connectivity (e.g. only from the Godot-hosted sources).
This feature should make it less controversial to add the update checker and the news tab, or other such features, in the future. It should also replace the adhoc flag from the update checker PR (https://github.com/godotengine/godot/pull/75916), as it provides a more universal solution for the editor to go completely offline.

I've kept commits separate as I fully expect some bikeshedding to happen, some rejections to occur, and some ideas to be cut or to be asked to be split out. Each commit is self sufficient and should make it easier to review, but what I should do with them next is up to the consensus of you all.
To close things off, here's a short demo of how the first time experience might look like now.
https://github.com/godotengine/godot/assets/11782833/2b43711a-3bca-4882-bedd-9bfc89ed8438

If quick settings are added, filesystem/directories/autoscan_project_path and filesystem/directories/default_project_path (maybe have a "remember path" checkbox in the create project dialog?) could be added to it, they seem more convenient to have in the project manager.
Though to be fair new projects shouldn't be placed directly in the documents folder by default to begin with (have a dedicated "Godot Projects" folder in there, but that's for another discussion.

I like it, the only thing that feels off is that on the right panel all options are about editing one of the projects except for "remove missing", feels like it doesnt belong there

I'd suggest separating the "remove missing" button by putting it at the bottom instead

I like it, the only thing that feels off is that on the right panel all options are about editing one of the projects except for "remove missing", feels like it doesnt belong there

I think there was a discussion about it recently. It belongs to the top button row semantically, but it's also a feature that is not needed often. So I think someone mentioned putting it in some three-dot menu in the top row. Or we could do as @AThousandShips suggests.

I like it, though I'm not sure I about the First Popup Dialog box prompting the User to Make a choice about going online or cnaceling out of something. Feels a little unfriendly to begin with.
Would it be possible to maybe integrate the question about going online and trying an official demo projects as a text in the empty project layout? Or maybe have it as a selection option when the users wants to add an actual project.

Would it be possible to maybe integrate the question about going online and trying an official demo projects as a text in the empty project layout?

Yeah, I thought about replacing the dialog with a similar UI placed on top of an empty project list. That's could be nice!

Got an idea, so here's pretty hasty mockup (also I'm not a pro UI designer so don't judge).
What if the menu on the right was just removed outright and replaced with buttons on the projects themselves?

(Note because I can't show it here, tags would be removed by hovering over one, then an X would appear on it, pressing which would remove it).
Could probably add an action popup by right clicking, which shows what was formerly on the right menu and more.
Always found it sort of weird how opening in file explorer and favoriting are on the projects themselves, At first i thought the folder icon wasn't a button and was just a fancy icon for the file path.
Doubt you'll go with this but I hope it at least gives some inspiration.

Icons on the entries themselves has been discussed in the past but this removes a lot of information, the icons aren't always obvious (and tooltips should not contain fundamental information, only additional information), I also find this much busier and less easy to navigate

I agree with your points, though the main things I like from it is it feeling more "balanced" in a way, due to the tabs being centered now, and the simplified tag management (would need a better icon for adding tags when there are none though).
An additional idea i had was that, maybe when you hover over the project icon, the play (or edit) button appears over it, but ended up not adding it to the mockup.

Both Unreal and Unity display a tooltip when you right click on the project entry or on the "settings" icon in the project entry. I don't find it intuitive to have to select the project entry in one panel and have to switch to another unrelated panel to perform actions on the project. Another reason is that this design is very cumbersome to use on a smartphone where you expect to hold down on the project entry or click on some extra icon on the entry itself.
Maybe I'm wrong but I feel like 99% of the time you are opening a project or searching for one, not removing/adding/modifying anything about it in the project manager. I want to see more projects and less buttons that i don't touch most of the time.
In fact, I would move everything (other than new/add/search) to a side panel. That way you have WAY more vertical space to show you what matters: your projects. And if you make it hideable you'd have a ui that works well on both desktop and mobile.

I want to see more projects and less buttons that i don't touch most of the time.

You won't see more projects without the sidebar than otherwise

Every mobile application allows you to maintain an entry to display options specific to that entry. None works the way godot works.
And yes, removing the entire top of the UI in a right side panel will effectively show more projects.

Less than the space for one project is taken up by the top, and just by making it wider we won't have more lines, that would just make things more crowded, most projects don't have names that are long enough to matter that there's a sidebar of not

I don't have a goal to make the editor more usable on a smartphone with this PR. For a decent user experience in such a constrained environment we need to design a bespoke interface.
So let's forgo this part of the discission for this time.

I have few questions/issues related to existing and updated design; It will be great if these changes can be taken up too.

Why the new button is so small, can it be named New Project to make it bigger. It is one of the primary actions in the Project Manager.
Can the project icon be smaller with padding on all sides. When you open the project manager, the icons hit like jack hammer to the eyes.
Remove Missing is not part of the group as it does not require project selection. it should be in the top header, but it can be ignored if don't want to change.
The new settings are actually customizations. Ideally it should be named Customize.
If the warning symbol could be displayed just after project name instead of bottom right corner, it will be prominent.
Instead of Godot Engine - Project Manager in the title (which sounds robotic), it can be better like Welcome to Godot Engine(Which feels much better and warm)

In my view, the project manager looks crowded with functionality. I am not sure how many functionalities are really used that regularly. A gut check (or poll) of the usage has to be done and adjust the UI accordingly.

Based on feedback from @theMotionblur and @hmans adjusted the message that appears when the project list is empty. Instead of being put into a popup, it is now always visible in the body of the empty list. You now have two clear actions, one to create a new project, and one to go to the asset library. The note about online connections only appears if you are in the offline mode.
I also renamed the "New" button to "Create" to give it a bit more significance, visually.

PS. I've pushed it as a new commit. Once we are done with iterations, I will clean up commits into one or several but isolated commits, depending on how the discussion goes.

@tokengamedev

Why the new button is so small, can it be named New Project to make it bigger. It is one of the primary actions in the Project Manager.

Yep, this was noted in other feedback and I've made some changes. I agree it can be "New Project" or "Create Project" too, if we prefer.

Can the project icon be smaller with padding on all sides. When you open the project manager, the icons hit like jack hammer to the eyes.

Are you talking about Godot logo, or about project icons? Project icons seem to fit the needed height right now, but I don't particularly have an opinion about what you suggest. This can be done separately though.

Remove Missing is not part of the group as it does not require project selection. it should be in the top header, but it can be ignored if don't want to change.

As discussed above there are some options. For now I've moved it lower in the sidebar as suggested above.

The new settings are actually customizations. Ideally it should be named Customize.

I don't see much point in this distinction. It's just a handpicked subset of settings, and it can be changed in future to include other options, not just what I've initially decided to include. I'd argue that the network mode is already falling out of the "Customize" grouping.

If the warning symbol could be displayed just after project name instead of bottom right corner, it will be prominent.

I don't have an opinion about that, and it's outside of the scope for this PR.

Instead of Godot Engine - Project Manager in the title (which sounds robotic), it can be better like Welcome to Godot Engine(Which feels much better and warm)

Sure, but this may make it harder to find in the task bar. This can also be done separately anyway, it's a minor change.

Very nice work! I had to open the 4.2 Project Manager to check the differences, the new UI feels like how it was always meant to be!
I shared this on Twitter but I figured I'd use the proper channel as well. I have a small revision for the blank/no projects UI. I think button contrast and information hierarchization can be improved, and I'd personally add the option to open a project, which I think deserves the same attention as creating a new one.
Don't mind the exact details like the button borders or the vertical spacing between text and buttons.

@YuriSizov , thanks for the detailed reply.

Yep, this was noted in other feedback and I made some changes, see above. I agree it can be "New Project" or "Create Project" too, if we prefer.

I don't mind either way, my suggestion was to improve the prominence of the button as it is a primary action. It should stand out from the other array of actions as a UX designer would say.

Are you talking about Godot logo, or about project icons? Project icons seem to fit the needed height right now, but I don't particularly have an opinion about the changes that you suggest. This can be done separately though.

yes, talking about the project Icons and not the Godot Logo(which in my opinion is awesome ❤) . Just give a try to reduce the icons size to 2/3 or 1/2 but centered vertically. if it does not feel good, ignore this comment.

I don't see much point in this distinction. It's just a handpicked subset of settings, and it can be changed in future to include other options, not just what I've initially decided to include. I'd argue that the network mode is already falling out of the "Customize" grouping.

Technically you are right. but, I looked into other editors like android studio, and VS code, they have customize. Moreover, if you add the word customize, the debate over what settings to be added in project manager is out. Talking about network mode: honestly, it is not necessary, as when you switch to asset library or news, it should automatically turn on or if you insist, follow the @JoNax97 approach above, although buttons should be link buttons

I also entertained the idea of not having any text in the top-right corner at all. Just a button with an icon. This may make the UI less busy.

👍 . I like the gear(⚙) icon if settings, palette(🎨) icon  if customize
Anyway, it is awesome work. Keep it up.

Talking about network mode: honestly, it is not necessary, as when you switch to asset library or news

The point is that it won't automatically turn on. Not unless you actively choose to go online as a user. In the current implementation if you click the "Open Asset Library" button from the empty list suggestion, it will auto-enable the online mode (which is why in the older iteration it spelled "Go Online and ..."). It should be acceptable because we have a note right next to it, explaining this.
But when simply switching to the asset library tab it won't go online by itself. If it would, there would be no point in the feature to limit online connectivity.

Adjusted formatting of the empty message a bit and added the import button too. I think it should be good enough for the purposes of this PR.

small nitpick: it would be nice if the buttons had icons to indicate that they behave the same as the buttons at the top 🙃

Adjusted formatting of the empty message a bit and added the import button too. I think it should be good enough for the purposes of this PR.

Yeah! I find that a lot nicer and more welcoming. :)
Also agree with @gomaproi - the icons could make it more coherent with the rest of the design.

Part of my proposed design aimed to avoid the "pancake stack" effect that happens when multiple center-aligned elements are stacked. I think this hampers readability. If nothing else, I'd recommend turning the 2 paragraph into a single one 👍

avoid the "pancake stack" effect

Could you explain why you think this negatively impacts readability?

I find that you have to go back and forth to find where each block of text (or buttons) starts, since they all have the same separation and there's no easy queue to distinguish where each element starts.
In left-aligned text, your eyes can easily find the shorter length of the last line of each block (not to mention paragraph indentation).
In other words, I find that one can't make out the composition of the text at a glance. You have to slowly parse it instead.

Thanks for the explanation, and it makes sense. Although I would say that for a couple of lines it's not an issue that we should worry about.

what if the sort goes inside the last edited label and alighs with the vertical collum

Some suggestions:
"Asset Library" button:
Maybe call it the "Online Asset Library" , self-explanatory & dosen't require explaining that the button will take you online.
"You don't have any projects yet"
Maybe give an indication of what directory Godot is looking for Projects in.
e.g. "You do not have any projects found at C:/Godotdir/projects"
Icon:
A little icon overlay on the project icon to indicate what version of godot the project is using. e.g.
|               |
|icon.png |
|               |
[        [4.1]]
Sometimes I have 4.0 & 4.3beta projects & am unsure which is which.

Maybe give an indication of what directory Godot is looking for Projects in.

That's just the default directory, it's not mandatory

small suggestion: Maybe the Note at the bottom should be shorter

The part about sending data is relevant and shouldn't be removed, it's not obvious

When you go online in asset lib and then go offline, you end up with this:

The online info only appears after you try to interact with something. All buttons are clickable, but they do nothing. Should the interface disappear when you go offline?

It's nice to have this note:

But maybe it should explicitly say that clicking Open Asset Library makes you go online. It automatically changes the setting after all.

The online info only appears after you try to interact with something. All buttons are clickable, but they do nothing. Should the interface disappear when you go offline?

Right now the locked state of the UI is tied to whether or not we have a "config" downloaded. I was back and forth about disabling and clearing the UI if you go offline, but decided to keep it as is for now. It's an edge case. New requests won't go out, but you also already have some data loaded, so why bother removing it? You can only reach this state if you were online to begin with.

The force-push is just a rebase. I'll work on the feedback, but not yet.

@Riteo What do you mean by making the eyes full? Removing irises? The logo is exactly the same in both light and dark modes, it's just color adjusted like any other icon.

What do you mean by making the eyes full?

The eyes are circles and not dots.

Put a "About Godot" with the white logo is much more appealing!

The two lines would get too cramped, also it'd be confusing as you can't translate the text

@Baiter160 We prefer not to use this version of the monochrome logo.

It seems kinda odd to have the Godot logo directly below where the Godot Icon and the words "Godot Engine - Project Manager" are. Does it look different on other operating systems? (I'm on Win 10)

Does it look different on other operating systems?

On Linux, specifically GNOME and KDE, the window titles are in the middle by default IIRC.

Why not making it like this in the first place?

No reason, it was quickly put together. It probably needs some optimizations still, for example. I did ask Kenney on Twitter, when I had a chance, specifically out of concern about smaller details, and he mentioned that the logo looks great as is.
I'm not against trying it with a simpler form, though. I can even adjust it a bit to better work with the pixel grid on a smaller scale. Was just clarifying that light and dark use the same file, so any difference is up to our SVG rasterizer being non-deterministic and editor display scale.

I think the note about Asset Library is not necessary since the button says "Go Online and Open Asset Library". It could be shown on the Asset Library page when in offline mode.
The description text also feels unnecessary, it's just combing the three buttons' text into a sentence :P
The three buttons feels floating now (don't belong to the list area) compared to those shown in https://github.com/godotengine/godot/pull/87443#issuecomment-1904002935.

Now
Then

I'd suggest removing the "Note:" from the asset library comment, it makes it look like a dev/code comment.

Thanks! Great rework both design and feature wise :1st_place_medal:
Let's see how the community likes it :)

I generally like the redesign (although the logo feels tacked on somehow), but I think it's crazy to set defaults that are useful to only a tiny fraction of users. Seriously, how many people actually care about the privacy implications of a program checking for updates or downloading the latest news posts? It has to be in the 0.01% range at most, surely. Why wouldn't you make it a CLI option for those people and leave sensible defaults for the rest of us?
Think about it this way. If checking for updates automatically is a problem for your privacy, you're already well and truly screwed by a thousand other pieces of software. You couldn't use the internet at all.

So your logic is "you've already got tons of software tracking you, what's one more?" How is that helpful?
Also plenty of people care, despite it not being something you can fathom

No, my logic is "Godot isn't tracking you so why would we make offline mode the default when 99.99% of people will want online mode?" Browsers and websites are the real privacy issue. Setting Godot (of all things) to offline mode by default literally solves nothing.
I get caring about privacy, but this isn't about privacy, this is about setting defaults that apply to only the smallest number of users. There's no way to justify that that I can see. You say it's not a hard thing to enable once? True! Why don't we just disable mouse input by default and give keyboard-only users the default they've always wanted? You only have to enable the setting once, right, so who cares that the default is only useful to a tiny fraction of users? (And yes, this is a massive exaggeration, but you get where I'm coming from, right? It just seems crazy to me.)
Truly caring about privacy is a huge amount of work that very, very few people are willing to put in. People just want convenience... even game devs using open source engines.
(This rant is courtesy of a long-time desire to see Linux become mainstream combined with frustration at Linux devs for their total and complete lack of understanding of and focus on what normal people actually want.)

You do understand that there's more reasons for not automatically going online right? Like not doing random downloads on a slow or metered connection...
But since you're making complete strawmen like:

Why don't we just disable mouse input by default and give keyboard-only users the default they've always wanted?

I'll bid you a good day...

You do understand that there's more reasons for not automatically going online right? Like not doing random downloads on a slow or metered connection

More than most, yes! I've had slow, metered connections for many years and experienced the frustration of not being able to disable automatic updates. However, even on my most limited internet I never thought a program should start in some fully offline mode, only that it should have the option of limiting how much it downloads (mostly, I cared about not auto-updating). But that's entirely beside the point! Godot isn't wanting to do automatic updates, only automatic checking for updates. Godot will never automatically update because it can't; it's a game engine and upgrading your project is often a major undertaking. And yet again, as I've said multiple times now, I'm not suggesting we should remove the offline mode, only that it shouldn't be the default.

But since you're making complete strawmen like

That's not a strawman. That's just getting across how ridiculous the choice seems to me. If you want to ignore my real arguments, that's cool with me. I've said my piece and I'm happy to leave it at that.

Remember that Godot is backed by a foundation based in EU, so we have to be GDPR-compliant at the end of the day. One of the points of GDPR is that you need to ask for explicit consent to do anything that deals with personal data somewhere in the pipeline.

I'm not trying to be contrary, but that's a stretch. While IP addresses are typically considered PII, sending your IP address to a host without explicit consent is not automatically a breach of GDPR, especially if the IP isn't logged. You don't need user consent so long as you have a "legitimate interest". Even if you're logging IPs, it probably counts as "legitimate interest" so long as you're doing it for a good reason (and if you're not logging anything it definitely counts). IANAL but see article 6.1.f.
Either way, a Network Mode switch doesn't constitute user consent to processing of PII, so if that's your concern, this is not an appropriate way to resolve it.

@Clonkex
This change is only in part about privacy, and more about security.
For privacy, we probably want to link/display the privacy policy before going online (so this PR is at least a step in the correct direction).
The security concern is about how certain functionalities of the asset library (and soon Editor Help - WIP in #69751), depends on content hosted on third party websites, over which we have no control.
In general, the Godot Asset Library does not store any content, which is instead hosted on github, gitlab, or other third party site.
This means we have no control over e.g. the images that are used as icons, or screenshots when displaying the asset list in the editor.
Since there have been in the past multiple remote code execution vulnerabilities in image handling libraries, we believe it's safer to not force the risk on the user immediately after selecting the  "Asset Library" tab (which can still be used to install local assets).


i have installed the package imported used snack bar and nothing happen

the title as enough

please write your snippet of code

the title as enough

Please follow the issue form, inserting the reproduction code, description of the problem, expected behavior, version of Flutter, and version of Get, otherwise it will not be possible to follow up on this issue.

the title as enough

Please follow the issue form, inserting the reproduction code, description of the problem, expected behavior, version of Flutter, and version of Get, otherwise it will not be possible to follow up on this issue.

version is latest flutter and the latest package version,    onprsesd button i m calling the get.snackbar();  but nothing happen even not showing in error

Follow the documentation, you skipped the first step which is to exchange MaterialApp for GetMaterialApp

Hi, i already change MaterialApp to GetMaterialApp but still nothing

Oh, nevermind. I figure out the problem. I use the Snackbar to show error before closing the screen (Get.back()).
But, directly calling Get.back() will directly close the snack bar.
I think, it's good to add a documentation about not calling Get.back() directly after snackbar without a delay.

Get.back() do the same as Navigator.pop(). So the default behavior is to close as soon as you call. I can't think on a reason to add a delay to close routes
Why you need to call the function that closes the snackbar right after open it @alifgiant ?

Get.back() do the same as Navigator.pop()

Yes figured that out back then.
Hmm, I don't need a function that close snackbar right after I open it. The use-case is like this, A user is failed in doing something on screen B, then the app shows a snack bar before closing the screen and back to screen A.
Sure, I can await the screen B then check its result before showing snackbar. But if screen B can be opened from multiple other screens, it's a chore to add it in all other places.
My previous suggestion is just add somewhere on the doc "don't call Get.back() right after you show a snackbar".

make sense, i'll do a small update in the docs

The point is not to warn the user "not to use", not least because many users use Get.back() precisely to close snackbars, and not the screens.
I don't remember if I explicitly put in the documentation that Get.back() closes any overlay, regardless of routes, snackbars, dialogs, etc. If not, maybe it would be a good addition.

Thanks @Nipodemos @jonataslaw . That one also works. Since, I intuitively think Get.back will do back navigation. Explicitly say it will also close overlay is good enough.


Check validity of pool metadata

Check required keys, length of values, total length.

https://github.com/input-output-hk/cardano-node-tests/pull/114


Add EC support to Terraform controller

This change adds support for the EC module in terraform-controller. Without this change the EC provider for Elastic Cloud cannot be used via the terraform-controller because it does not know how to find secrets.

@mattkirby BTW, please mention it the support of EC in README https://github.com/oam-dev/terraform-controller#supported-cloud-providers.

This does not quite function yet. "EC_API_KEY" does not load in the Terraform apply job when trying to apply a configuration so I get an error. I am still debugging why. I think I have followed the conventions of other providers, but please let me know if there are additional steps I need to take in the provider code to ensure that "EC_API_KEY" is loaded as an env variable when applying the terraform configuration.

This does not quite function yet. "EC_API_KEY" does not load in the Terraform apply job when trying to apply a configuration so I get an error. I am still debugging why. I think I have followed the conventions of other providers, but please let me know if there are additional steps I need to take in the provider code to ensure that "EC_API_KEY" is loaded as an env variable when applying the terraform configuration.

Can you run kubectl get pod xxx -o yaml to get the detailed information of the Terraform pod?

@mattkirby I don't have the entry to get an API Key per the link you mentioned. Because I am a trial user?

@mattkirby I got the API Key by the following step. Please confirm the link you mentioned.

Clicked into one of you Deployment.

Visit Kibana

Generate an API key

I updated the reference to the EC provider documentation about generating keys. It is more clear than the first link I provided.
After making these changes, and working with the example that is offered for EC deployment, I find I get an error about not having the API key.

Initializing the backend...
Initializing provider plugins...

Reusing previous version of elastic/ec from the dependency lock file
Using previously-installed elastic/ec v0.2.1

Terraform has been successfully initialized!
You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.
If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.
╷
│ Error: Invalid provider configuration
│
│ Provider "registry.terraform.io/elastic/ec" requires explicit
│ configuration. Add a provider block to the root module and configure the
│ provider's required arguments as described in the provider documentation.
│
╵
╷
│ Error: authwriter: 1 error occurred:
│ 	* one of apikey or username and password must be specified
│
│
│
│   with provider["registry.terraform.io/elastic/ec"],
│   on  line 0:
│   (source code not available)

I think this should be ready to go now. I have not yet squashed commits, but am happy to squash before merge so it is not so many. Please let me know if any additional changes are needed.

@mattkirby Thanks for your great work! Now we officially support Elastic Cloud.


[Question] Override FileAppender formatEntry

How would I go about overriding FileAppender? Thanks for your help :)
This doesn't work but shows what I'm trying to do.
const log = snl.createSimpleLogger(logFile)

log.appenders['FileAppender'].formatter = function(entry) {
  const fields = appender.formatEntry( entry );
  fields[2] = stripAnsi(fields[2]);
  fields.push( newline );
  return fields.join( appender.separator );
};

I wouldn't try to override a current appender.  You might try removing the FileAppender then adding a new one with the overrides that you want.  A better way is to create a LogManager and add appenders that you build. (see how snl.createSimpleLogger() works for an example)


Integrate Plaid for Bank Account Integration

Integrate Plaid for Bank Account Integration
Description
Overview:
This issue is to integrate the Plaid API for bank account integration, allowing users to securely connect their bank accounts to the application.
Tasks:

[x] Register and obtain API keys from the Plaid developer dashboard.
[x] Implement client-side authentication flow using Plaid Link.
[ ] Handle server-side webhook events for account linking and data retrieval.
[ ] Store and manage user-linked accounts securely in the database.

Acceptance Criteria:

Users can securely connect their bank accounts to the application using Plaid Link.
Bank account data is retrieved and displayed accurately in the application.
Account linking process is secure and complies with Plaid's security guidelines.

Branch Name:
plaid-integration-#[Issue Number]

@taka-2628 Yes, webhooks would allow us to receive real-time updates about users' financial data and automate processes based on changes in their bank accounts. As of now, we could do without webhooks and add it to our stretch goal. I'll let you take the call.


Fix and modernize starting MariaDB

See individual commits for explanations.

/approve
let's see the CI

/test-centos-integration-main

/test-ubuntu-integration-main
/test-centos-integration-main

/test-ubuntu-integration-main
/test-centos-integration-main

/lgtm


Is it secure to detect whether user is signed in based on whether session could be retrieved?

I'm using Next.js with API routes to handle authentication. I have a /api/signin endpoint that is called from the frontend with email and password. When the user password & email are correct, a session is set & saved on the request with req.session.set and req.session.save. I can't store all of the user data in the cookie because it would be too large, so instead I send back a JSON response with all the user data and just set the user ID in the cookie.
When a user wants to update their information, the frontend calls /api/update with the updated information. The API route will save the changes to the database, but will need to verify that the user is authenticated first.
Is it secure to just check whether req.session.get("user") returns an object that contains an ID?
I thought about this,  but I'm not sure. The session is encrypted and decrypted using a secret password so in theory nobody could set a "fake" session on the request with any user ID. Only users that have signed in using our application ( submitted the right email and password to /api/signin ) should have a session that is decryptable by req.session.get. Am I right? I would tremendously appreciate to hear from you, I can't find any resources on this.

Is it secure to just check whether req.session.get("user") returns an object that contains an ID?
Am I right?

Yes, this is sufficient. As there's no way for someone to tamper with the cookie data (i.e. changing the logged in user id for example).
But you still have to check if the user is active or not, so that if someone steals this user cookie for example if the person was hacked then you have to have a way to deactivate the user in your database (like deactivated = true/false).
Then on every API request you can: get the user with a where deactivated = false and you'll be good.
This is what I do!

Nice! I think you mean I should check with for example Firebase Admin whether the user corresponding to the ID on the session exists and is active?

Thanks so much for your help!

I think you mean I should check with for example Firebase Admin whether the user corresponding to the ID on the session exists and is active?

Yes, you should never trust JUST the session, always check in your database if this particular user exists and has access to the resource they're asking for. Good luck!

Well, since the API routes have a serverless nature, I would need to re-authenticate the user with email and password every time I want to get some of their data if I want to make sure they only get data they have access to.
Instead, can I, after getting the ID from the session and making sure whether the user is not deactivated, get the data with for example Firebase Admin. I'd only get the data corresponding to the user ID in the session. Thanks!

Instead, can I, after getting the ID from the session and making sure whether the user is not deactivated, get the data with for example Firebase Admin? It seems safe to me! I'd only get the data corresponding to the user ID in the session.

Yes it's safe :)

Thanks, have a nice day!


BuildPack NodeJS 18.0.0 Fails /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found

Example of failed build:
https://console.cloud.google.com/cloud-build/builds/b211a24b-b936-4127-8e02-3f606069f241
note that package.json includes
"engines": {
"node": ">= 12.0.0"
},
Logs:
Step #0 - "Buildpack": ===> BUILDING
Step #0 - "Buildpack": === Node.js - Runtime<EMAIL_ADDRESS>===
Step #0 - "Buildpack": Resolving Node.js version based on semver ">= 12.0.0"
Step #0 - "Buildpack": --------------------------------------------------------------------------------
Step #0 - "Buildpack": Running "curl --fail --show-error --silent --location --get --data-urlencode range=>= 12.0.0 http://semver.io/node/resolve"
Step #0 - "Buildpack": 18.0.0Done "curl --fail --show-error --silent --location --get --data-ur..." (542.67211ms)
Step #0 - "Buildpack": Using resolved runtime version from package.json: 18.0.0
Step #0 - "Buildpack": Installing Node.js v18.0.0
Step #0 - "Buildpack": --------------------------------------------------------------------------------
Step #0 - "Buildpack": Running "bash -c curl --fail --show-error --silent --location --retry 3 https://nodejs.org/dist/v18.0.0/node-v18.0.0-linux-x64.tar.xz | tar xJ --directory /layers/google.nodejs.runtime/node --strip-components=1"
Step #0 - "Buildpack": Done "bash -c curl --fail --show-error --silent --location --retry..." (3.115830453s)
Step #0 - "Buildpack": === Node.js - NPM<EMAIL_ADDRESS>===
Step #0 - "Buildpack": Failure: (ID: 653c7ba4) node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by node)
Step #0 - "Buildpack": --------------------------------------------------------------------------------
Step #0 - "Buildpack": Sorry your project couldn't be built.
Step #0 - "Buildpack": Our documentation explains ways to configure Buildpacks to better recognise your project:
Step #0 - "Buildpack":  -> https://github.com/GoogleCloudPlatform/buildpacks/blob/main/README.md
Step #0 - "Buildpack": If you think you've found an issue, please report it:
Step #0 - "Buildpack":  -> https://github.com/GoogleCloudPlatform/buildpacks/issues/new
Step #0 - "Buildpack": --------------------------------------------------------------------------------
Step #0 - "Buildpack": ERROR: failed to build: exit status 1
Step #0 - "Buildpack": ERROR: failed to build: executing lifecycle: failed with status code: 51
Finished Step #0 - "Buildpack"
ERROR
ERROR: build step 0 "gcr.io/k8s-skaffold/pack" failed: step exited with non-zero status: 1

I'm getting the issue.

I am having this issue as well.

i am having the same issue

i am having the same issue

Having the same issue... Is there any 'way around'?

My team was able to solve this by specifying the node version in our package.json file like so
"engines": {
    "node": "17.1.x"
  },

it seems Heroku made an update that attempts to install node version 18 on all apps so it is breaking some that run on older versions.

The error is occurring because node 18.0.0 requires the installation of lib GLIBC_2.28, if the server has nvm installed it will always download the latest versions. In my case I was using amazon linux that was in version 2.26, I made the change to ubuntu 20.4 and it solved.

I'm getting the issue in Google Cloud Run that uses this build pack.
In  our case , we had to fix the engine to a lower version
  "engines": {
    "node": "= 14.x"
  },

FWIW, bumped into the same issue, pinning to Node 16.x in package.json worked for me:
  "engines": {
    "node": "= 16.x"
  },

Heroku deployment output:
remote: -----> Installing binaries
remote:        engines.node (package.json):  = 16.x
remote:        engines.npm (package.json):   unspecified (use default)
remote:        engines.yarn (package.json):  unspecified (use default)
remote:
remote:        Resolving node version = 16.x...
remote:        Downloading and installing node 16.14.2...

Our base images are based on Ubunut 18. Nodejs18 dropped support for Ubunutu 18 because it doesn't include a new enough version of gcc. We are investigating a few solutions, for now you can pin to nodejs16 in your package.json file, as others have suggested:
"engines": {
    "node": "= 16.x"
  },

@matthewrobertson
all of my package.json files are in /usr/lib/node_modules/npm/node_modules/
When can i find the right file to edit.
after editing the file what do i do?

@makhatemakhate you should have one in the root directory of your application source code.

I gather three things from the comments above:

Google (I assume?) needs to add GLIBC_2.28 to the environment so Node 18 runs.
Until Google does that, run an older version of Node.
Possibly build an image outside of Google and use it.

Are these right?


32bit support, please

I ran it on 64bit for testing, but my main setup is 32bit.
Can you build 32bit support please?
Otherwise, I will have to upgrade my motherboard and CPU... which ain't happening soon.

Shouldn't be too hard to add :+1:

Shouldn't be too hard to add 👍

Great! 🎆
I'm on Ubuntu 18, i686, FYI.
Thanks.

Hey @voarsh2, I've released version v0.2.0 which includes 32 bit builds for Linux and Windows. Let me know if this covers your needs.

https://github.com/boringproxy/boringproxy/releases/tag/v0.2.0

Thanks!
I'll give it a test and report back.

I gave it a twurl and I got:
Failed to PUT client on my 32bit client.
In the past I followed instructions exactly on 64bit and it worked.


The problem of yolov3_onnx

Followed the Demo #4: YOLOv3
when i execute this command at step3
python3 yolov3_to_onnx.py --model yolov3-tiny-416
I got the error below figure

I already update my protobuf to a recent version
Do you have any suggestions ?

Are you using onnx==1.4.1?

@jkjung-avt yes, i do .

Reference: https://github.com/onnx/onnx/issues/2534
I was using protobuf-3.8.0, and did not see this problem.  Could you try the same version?

@jkjung-avt
sorry , i'm late for reply .
I try the protobuf-3.8.0 version and using sudo pip3 install protobuf==3.8.0 then it slove my problem
appreciate


No confirmation before deleting to-dos.

Do you want to request a feature or report a bug?
Feature
What is the current behavior?
The to-do gets deleted permanently without confirmation.
What will resolve the issue?
Adding a yes/no confirmation feature before deleting the to-do permanently.

I'm interested in implementing this feature.


minimap2 not found in singularity image

when trying to use Long mode using the singularity image:
./IRFinder Long -t 8 -r REF/gencode/ -d subtest sub1.fastq

I get the following error:

minimap2 not found ( executable: minimap2 ). To use the RunMode Long, install it: https://github.com/lh3/minimap2

If I shell into the image, then minimap2 seems to exist:
singularity shell IRFinder
Apptainer> echo $PATH

/Utils/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Apptainer> ls /Utils/bin/minimap2

/Utils/bin/minimap2

so the following works:
singularity exec -e ./IRFinder IRFinder Long -t 8 -r REF/gencode/ -d subtest05 sub1.fastq

whereas the following gets an error message:
./IRFinder Long -t 8 -r REF/gencode/ -d subtest06 sub1.fastq

minimap2 not found ( executable: minimap2 ). To use the RunMode Long, install it: https://github.com/lh3/minimap2

Other steps work for me without singularity exec -e ./IRFinder e.g. the following works:
./IRFinder BAM -l


'Trash' button in notification bar doesn't work.

Expected Behavior
When receiving and email and getting the notification in the notification bar and then click on the 'Trash' button it should delete the email.
Actual Behavior
Clicking the 'Trash' button on the notification bar does nothing.
Steps to Reproduce the Problem

Receive an email.
Click 'Trash' button.

Specifications

Version: 1.9.2
Platform: Android.
URL:

Reported to mobile team.


bucketing strategy

An issue that we discussed in that past, but I am not sure if we ever prototyped:
I'd like to try writing parquet files from the soon to be ready ADAM dataset api, bucketed by 10 megabase genomic regions using df.write.bucketyby() available in Spark 2.1 , and then compare "random access" performance of lookup and joins (hopefully through partition discovery here: https://spark.apache.org/docs/latest/sql-programming-guide.html#partition-discovery ) use a "chr_bin" filter in a query - as compared with the normal parquet predicate pushdown.
I'll go ahead and experiment with this - but wanted to get anyone else's thoughts on if this seems viable or worthwhile.  I'm hoping to achieve the effect here of a very course index.

Hi @jpdna! I think this is a dupe of #651. I'm closing it as a dupe, but please reopen if you disagree.


Prune the tree: move general functions to base class NNCV

Description
Moved fit function to NeuralNetworkCV class. In addition, added default functions for prepare_dataset, evaluate_dataset and train_epoch
List of changes

[X] Moved fit in NNCV
[X] Added prepare_dataset function (both for base class and children where needed)
[X] Move training parameters (e.g. loss_type for tica) outside fit
[X] add custom_train_epoch to change the workflow
[x] add tests for custom_train
[x] add custom_eval function
[x] change log info (e.g. train loss) to dictionary
[x] changed .to(device) into set_device

I did some refactoring here, moving a lot of stuff from cv classes to base NNCV (@EnricoTrizio see for instance the new TDA file).
The only breaking change is for DeepTICA, related to the parameters of the loss function (loss_type and n_eig) that are removed from the fit function and moved to a specific set_loss_function method
@EnricoTrizio I also changed how the training log is printed, so in principle if you want to print something else (e.g. contribution to tda loss) you could simply add new keys and values to the  self.logs dictionary --> an example is in DeepTICA where I add a new key in the constructor and set it in the evaluate_dataset function


[skip ci] ci: remove label after pr is merged

Don't try to do it in the same action as otherwise the bot will refuse to actually add it to the queue.

No CI, no Schutzbot, no green, so merge on orange!


Fix 0 value

If the metadata value is 0, it will be falsy and thus returned after evaluating the second expression, effectively skipping the toString() call, and causing JSON value '0' of type NSNumber cannot be converted to NSString error (similar to #102). This fix checks for true nullability.

Looks good! Thanks for the PR :)


Auto language detector!

We can have a function that takes the [FILE] name and returns the programming language that the scrip file is written in based on the following LANGUAGES_TYPES:
LANGUAGES_TYPES = {
    'bash': ['.sh', ..],
    'c': ['.c', ..],
    ...
}

We remove the default value for --language and check for any user-made values. If there is no value for this field, detect_language(type) will be called.

This would be so cool, I also recommend using this package and not using the file extension.

Check out the issues. It looks like some people having issues installing that package!

Hey @lnxpy !, Check this out :
>>> from pygments.lexers import guess_lexer, guess_lexer_for_filename

>>> guess_lexer('#!/usr/bin/python\nprint "Hello World!"')
<pygments.lexers.PythonLexer>

>>> guess_lexer_for_filename('test.py', 'print "Hello World!"')
<pygments.lexers.PythonLexer>

I got this from here, I think this is a great way of guessing the code, This even creates the potential of showing the codes with lexing via rich.
This is a list of all available lexers in the pygments library

@SepehrRasouli That's awesome but we don't have pygments as a dependency and since this package's main functionality is code highlighting, that might not be a good solution using this package for this purpose.

@lnxpy, Your reasoning for not using this library is correct, But that's the best choice, The library @Farhaduneci introduced has problems and dictionaries might not be efficent and get too big. Do you still think we should not use this ? This also creates the potential of showing the code to the user, with highlighting.

@SepehrRasouli I prefer the old-school way like detecting based on the file type.

@lnxpy Then we should either gather the extensions of many programming language file types, Or only cover important and popular ones.
Can I work on this ?

Hi @lnxpy, Based on what we talked about last week, I want to work on this issue by the method you said.

We remove the default value for --language and check for any user-made values. If there is no value for this field, detect_language(type) will be called.

Can you please elaborate a little bit more ? I can't understand what you mean by this.

@SepehrRasouli, there is a positional argument called args.file which takes the file. You have access to the file name so you can trim the type using os.path or pathlib. Now, you can set a value for args.language.


Expose menu and value functions on element object

This PR makes a couple changes to the API for TextExpanderElement.

Exposes a setMenu function that allows us to set the contents of the menu. This is necessary for something we're working on that would involve programmatically changing the menu items based on some conditions.
Exposes a setValue function that allows us to trigger replacement of the match with a value of our providing. This is necessary because we are holding a reference to TextExpanderElement and need to have the replacement be performed outside the scope of the onCommit flow.

I don't know if exposing additional functions on the Element object is considered good or bad practice and am open to suggestions for alternative implementations.

I think we found a suitable path to go down (listening to and firing combobox events) instead of exposing these functions, so I'm going to close this one for now.


seems issue with threebot default login page

steps:
1 - create a docker container 18:04
2 - do steps in I followed steps in https://github.com/threefoldtech/js-sdk/blob/development/docs/wiki/quick_start.md
for some point I got an error in the step of starting threebot threebot start , (not sure what is error , terminal history disappeared ) I fix it and start again and threebot started but seems there is an issue with default page in threebot as below

(js-sdk-vpmH-Z_5-py3.6) root@246413201fd5:~/js-sdk# threebot start
2020-07-06 12:57:30.224 | DEBUG    | jumpscale.entry_points.threebot:test_privileged_ports_bind:38 - nginx: the configuration file /tmp/tmpefcxmsdk syntax is ok
2020-07-06 12:57:30.224 | DEBUG    | jumpscale.entry_points.threebot:test_privileged_ports_bind:38 - nginx: configuration file /tmp/tmpefcxmsdk test is successful
2020-07-06 12:57:33.074 | INFO     | jumpscale.core.application.application:start:23 - Application gedis is started, process id: 3151
2020-07-06 12:57:33.077 | INFO     | jumpscale.core.application.application:start:23 - Application threebot_default is started, process id: 3151
2020-07-06 12:57:33.078 | INFO     | jumpscale.servers.threebot.threebot:start:555 - Configuring package auth
2020-07-06 12:57:33.310 | INFO     | jumpscale.servers.threebot.threebot:start:555 - Configuring package chatflows
2020-07-06 12:57:33.343 | INFO     | jumpscale.servers.threebot.threebot:start:555 - Configuring package admin
2020-07-06 12:57:33.576 | INFO     | jumpscale.servers.threebot.threebot:start:555 - Configuring package admin_old
2020-07-06 12:57:33.609 | INFO     | jumpscale.servers.threebot.threebot:start:555 - Configuring package weblibs
Cloning into 'jumpscaleX_weblibs'...
2020-07-06 12:57:35.175 | INFO     | jumpscale.servers.threebot.threebot:start:555 - Configuring package tfgrid_solutions
2020-07-06 12:57:35.290 | INFO     | jumpscale.servers.threebot.threebot:start:565 - Reloading nginx
2020-07-06 12:57:35.316 | INFO     | jumpscale.servers.threebot.threebot:start:570 - Threebot is running at http://localhost:80 and https://localhost:443

Yes, should go to /admin/ instead

fixed by adding default page


Release Google.Cloud.AIPlatform.V1 version 1.2.0

Changes in this release:
New features

Add enable_private_service_connect field to Endpoint (commit 9ca7ec1)
Add id field to DeployedModel (commit 9ca7ec1)
Add service_attachment field to PrivateEndpoints (commit 9ca7ec1)
Add endpoint_id to CreateEndpointRequest and method signature to CreateEndpoint (commit 9ca7ec1)
Add method signature to CreateFeatureStore, CreateEntityType, CreateFeature (commit 9ca7ec1)
Add network and enable_private_service_connect to IndexEndpoint (commit 9ca7ec1)
Add service_attachment to IndexPrivateEndpoints (commit 9ca7ec1)
Add stratified_split field to training_pipeline InputDataConfig (commit 9ca7ec1)

Created release for Google.Cloud.AIPlatform.V1-1.2.0


Solidity function which take bytes as an argument doesn't work properly

If you have a solidity contract which takes an argument of type bytes, the typechain conversions will change the data you're sending in. The current definitions expect BigNumber[] to be the passed in value for bytes. When we convert that BigNumber array, it gets split out into a totally different format than what we input. For Examples:
contract TypeChainBugDemo {
  // Calling this returns an unexpected value
  function callWithBytes(bytes bytesArg) public returns (uint256){
    return bytesArg.length;
  }
}

This generates the following typescript
public callWithBytes(bytesArg: BigNumber[]): Promise<BigNumber> {
  return promisify(this.rawWeb3Contract.callWithBytes, [bytesArg.map(val => val.toString())]);
}

As a caller, I assumed if I wanted to pass a bytes string of length 2, represented by the string "0xA20F", I would pass [new BigNumber('0xA2'), new BigNumber('0x0F')]. Unfortunately, when this gets converted by typechain, it will change to ["162", "15"]. When that gets passed into web3, it actually cocatenates these strings, then gets their ASCII values for each character. Ultimately, the 2 byte input array gets expanded into a totally different 5 byte array.
I think the right fix is to have bytes always take in a string for TypeChain. If you want the string to be interpreted as hex, it's just prepended with 0x and web3 takes care of things. Otherwise, web3 converts to utf-8 and passes in the byte stream for the string.

Closed by #42. Finally decided to use strings to pass bytes arrays.

@krzkaczor -- Is this issue also fixed for bytes32? I'm using Typechain 0.2.1 and it's converting bytes32 to BigNumber instead of a string. Any resolution for this? Thanks!


Show unknown line endings

If a file is set to CR line endings (ancient mac style) this plugin has no idea what is going on and reports it as whatever the file was before conversion to CR.
Reproduce:

Install line-ending-converter
Use that to switch the file to CR endings

(Or any other method of your choice)

Yeah, this case is not covered. It would be good (and easy to add) to detect CR line endings properly. I probably wouldn't want to offer CR line endings in the selector though.

I agree with you that it shouldn't really offer that, the only reason I even found out it didn't support it was testing whether it was a viable replacement for the package I was using before :wink:.


CSS not applied

I have made following file:
src/shared/components/loader/loader.component.scss
Somehow these css rules do not apply to main css. Is this a task/compile issue?
How could we solve this? Thank you in advance.

My understanding is, it will be applied at the component level using the shadow dom based off the style/styleUrls defined in the component:
@Component({
selector: 'sd-loader',
moduleId: module.id,
templateUrl: './loader.component.html',
styleUrls: ['./loader.component.css'],
...
there's a bit of relevant reading here: http://blog.thoughtram.io/angular/2015/06/29/shadow-dom-strategies-in-angular2.html
if it's not applying to the component when it's run, check you have specified the file as .css, not as .scss

@asgarddesigns thank you for pointing me out. As I have tried to write some CSS in .scss file, it is fully generation CSS to .css file.
But I am getting error: http://localhost:5555/loader.component.css 404 (Not Found). Any ideas how to fix the path issue?

It looks like you are either:-
a) manually linking the file in the head
or
b) you have set the stylesUrls incorrectly as /loader.component.css rather than ./loader.component.css (note the dot at the beginning). meaning it's looking for the file in the root directory.

Thank you for your reply. This is still not working although I have set it up like this:
Component location
src/shared/components/loader/loader.component.ts

Code
@Component({
  selector: 'loader',
  styleUrls: ['./loader.component.css'],
  template: `<div></div>`
})

Error
GET http://localhost:5555/loader.component.css 404 (Not Found)
EXCEPTION: Error: Uncaught (in promise): Failed to load loader.component.css

My component works just fine (except for the CSS). Perhaps any ideas more?

I am guessing you also have src/shared/components/loader/loader.component.scss as well?
Might be some sort of resolution issue...maybe look at losing the 'loader' subfolder, as it's already in the shared/components folder?
i.e. src/shared/components/loader.component.*

@asgarddesigns thank you for your reply again.
Yes, I am having .scss file as well. I have tried solution without loader subfolder (have put the files in components folder) but this does not work either.
It would be nice to be able to have components also in shared folder.

Yep, it makes sense to be able to place in the shared folder, agreed, it was just a troubleshooting measure.
I'll try reproducing when I have a chance, but I have a new kid due in a few weeks so spare time isn't a thing right now!

Good luck! :)

@be-codified, I tried moving the home component to the shared folder and it works perfectly fine. Please try this and check how it is different from what you are doing:

Move the files from src/home/components to src/shared/components/home.
Delete src/home.
Modify import in app.component.ts to import {HomeComponent} from '../../shared/components/home/home.component';.
Modify import in home.component.ts to import {NameListService} from '../../services/name-list.service';

Now the home component should be working correctly from the shared folder. Make changes to the scss file and they should reflect correctly.
Please reopen the issue if you still can't get this to work.
P.S. As noted by @asgarddesigns, component scss applies only to the component and not globally.


rofi: 1.7.2 -> 1.7.3

Motivation for this change
New release: https://github.com/davatorium/rofi/releases/tag/1.7.3
Things done

Built on platform(s)

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

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

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

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

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

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

16 packages built:

clerk
i3-layout-manager
plasma-hud
rofi
rofi-calc
rofi-emoji
rofi-file-browser
rofi-menugen
rofi-pass
rofi-pulse-select
rofi-systemd
rofi-unwrapped
rofi-vpn
rofimoji
todofi-sh
wl-mirror

Thanks!


Why not use imports?

This ontology seems to not be importing other ontologies it uses like BFO but instead "duplicating" then, is there a reason for this? Could it be changed to use imports instead?

The iao-edit.owl file shows how IAO imports BFO and some external ontology terms into the editor's version of the ontology. When the main iao.owl file is prepared for release, all the imports are merged, reasoning is done, and the result is a single self-contained OWL file, sometimes called a "full" release file in the OBO community.
OBO projects are starting to also publish "base" release files, which link to external terms without including them in the file. This might be what you're after. IAO doesn't yet publish a base file, but you could build one with ROBOT.
Full files and base files each have advantages for different applications.


feat(maker-wix): Expose the property associateExtensions

See here for documentation https://js.electronforge.io/classes/_electron_forge_maker_wix.InternalOptions.MSICreator.html#associateExtensions

[x] I have read the contribution documentation for this project.
[x] I agree to follow the code of conduct that this project follows, as appropriate.
[x] The changes are appropriately documented (if applicable).
[x] The changes have sufficient test coverage (if applicable).
[x] The testsuite passes successfully on my local machine (if applicable).

Summarize your changes:
Adding to the MakerWixConfig interface property associateExtensions that allows one to specify exts to be associated with the app icon.

@felixrieseberg let me know if there is anything else I need to do. I rebase the branch so it should be up to date.

Not sure about the process here. Seems like ci needs fixing

Hey @fras2560, working on it right now! https://github.com/electron/forge/pull/3596
Need to fix our CI setup to re-include Python's distutils.


Profile does not apply in helidon mp configuration made by meta-config.yaml

Profiles in helidon-mp yaml configuration do not override config parameters.
Environment Details

Helidon Version: 4.0.9
Helidon MP
JDK version: openjdk 21 2023-09-19
OS: Ubuntu 22.04.4 (WSL)

Problem Description
When using a meta-config.yml file to specify a configuration file, this configuration file does not respect profiles. If I have a value
And i run my program with said profile, currently the value without profile is active, where as I expect the profile version to be active.
Steps to reproduce
Starting from a new helion-mp project, this is how I came to the described situation:

Add a config parameter with profile to microprofile-config.properties:
I added for example "%dev.app.greeting=Hello-dev" after the default line "example app.greeting=Hello".
When compiling, and running java -Dmp.config.profile=dev -jar target/helidon-quickstart-mp.jar, now curl http://localhost:8080/greet returns the following: {"message":"Hello-dev World!"}

Add the file meta-config.yaml with reference to the default configuration filemicroprofile-config.properties:

sources:
  - type: "classpath"
    properties:
      resource: "META-INF/microprofile-config.properties"

When I run mvn clean package, followed by java -Dmp.config.profile=dev -jar target/helidon-quickstart-mp.jar and finally curl http://localhost:8080/greet , I would expect the same response, but the response is  {"message":"Hello World!"}

The bug reproduces if I use mp-meta-config.yaml (I think this is how I should have done it to begin with).
However, if I use mp-meta-config.yaml and add add-default-sources: true, the expected behavior does occur, even if there is no microprofile-config.properties present

Meta-config yaml replaces other configuration options of MP Config.
You can configure profie in the meta-config.yaml file itself (and have a different file on each environment).

Thank you for your response Thomas. I see I should have added system-properties as a source.


Add additional test instructions to README

I'm new to poetry workflows, and noticed that the test suite assumes two environment variables are set.
By the way, is there any particular reason why MAINNET_PROVIDER and PROVIDER can't be consolidated into a single variable?

Thanks for the contributions and the shoutout on Twitter!

By the way, is there any particular reason why MAINNET_PROVIDER and PROVIDER can't be consolidated into a single variable?

There used to be, but there isn't really anymore. I'll push changes to fix this in a couple min.


Automated Package Upgrade

:tada: This PR is included in version 7.7.93 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Add actual rate of production to SNAs

Is your feature request related to a problem? Please describe.
Currently the SNAs display for polonium doesn't display the actual production rate of polonium, nor does the displayed flow coming out of it or the SPS's input rate.
Describe the solution you'd like
Add an OUT entry to the SNAs and change the flow rate on the pipes and SPS input rate to the actual rate, which can be relatively trivially calculated by doing math.min(sna.getInput().amount / 10, sna.getProductionRate()).

Implemented in the development branch now. As a note, this reduced precision of some fields, but given that the trade-off is accuracy, I don't really mind.
I didn't add an "OUT" since it would be redundant with the pipe flow right next to it.


How to customize style?

Hi there, this module is great. However, I'm not sure how to customize the style when using it with Next.js. The included CSS file has compiled class names. This is the approach we have to use, which will clearly break if the module gets updated.
          <style jsx global>{`
            ._2IvMF {
              background-color: transparent;
            }
            ._GzYRV {
              font-size: 11px;
              font-family: Menlo, monospace;
              line-height: 14px;
            }
            ._2bkNM {
              margin: 0 15px;
            }
            ._f10Tu {
              margin-left: -15px;
            }
          `}</style>

OK, thanks! It's still kinda difficult to theme since I have a few things to tweak. It would be great if I could copy and paste some kind of default theme but with un-uglified CSS class names.
Thanks for your help and keep up the good work.


py: Use nightly MLMD

Use MLMD nightly so we can extend support to Python 3.11 and also support environments with attrs>=21.4.0 e.g. ODH notebook images.
Depends on: #181
Description
Use https://pypi-nightly.tensorflow.org/simple as the new source for the MLMD package, taking the nightly version from there.
How Has This Been Tested?
This has been tested on ODH notebook environments, as well as using nox -s tests.
Merge criteria:

[x] The commits and have meaningful messages; the author will squash them after approval or will ask to merge with squash.
[ ] Testing instructions have been added in the PR body (for PRs involving changes that are not immediately obvious).
[x] The developer has manually tested the changes and verified that the changes work

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

Comparison is base (7deb5a3) 74.60% compared to head (0a1e91d) 70.44%.

:exclamation: Current head 0a1e91d differs from pull request most recent head 6761402. Consider uploading reports for the commit 6761402 to get more accurate results

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #182      +/-   ##
==========================================
- Coverage   74.60%   70.44%   -4.17%
==========================================
  Files          15        4      -11
  Lines        2099     1563     -536
  Branches       67        0      -67
==========================================
- Hits         1566     1101     -465
+ Misses        387      334      -53
+ Partials      146      128      -18

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Update SystemModules.md to succeed on OS X 10.11

El Capitan's System Integrity Protection prevents the user from installing
anything in /usr/include or /usr/lib, so use /usr/local instead, which is
also where Homebrew installs jpeg.
Also remove the statement about Homebrew’s jpeglib.h being correct
because that's false.

These instructions are also/mostly for Linux where the system packager will be installing to /usr.

Thanks for the feedback, @kylef and @mxcl! I've updated the PR to just refer to the Homebrew-specific parts.

Don't reference brew, if we must have this addition, simply point out that libraries may also be installed into other places that /usr, for instance: /usr/local.

Done.

Great, thank you. Can we squash these changes? I'm sorry to ask as it is tedious, but there are many effects and emails when I merge and people prefer singular histories where appropriate.

No problem at all, rebased and squashed.


kafka consumer, intercept poll(Duration timeout) first

poll(long timeout) is deprecated since 2.0.
Ref:
https://kafka.apache.org/20/javadoc/org/apache/kafka/clients/consumer/KafkaConsumer.html#poll-java.time.Duration-
https://kafka.apache.org/20/javadoc/org/apache/kafka/clients/consumer/KafkaConsumer.html#poll-long-

@yjqg6666 I am going to check it. Thanks  :)

@yjqg6666
Following code is actual code in Kafka 2.0.0 version.

    @Deprecated
    @Override
    public ConsumerRecords<K, V> poll(final long timeout) {
        return poll(timeout, false);
    }

    @Override
    public ConsumerRecords<K, V> poll(final Duration timeout) {
        return poll(timeout.toMillis(), true);
    }

    private ConsumerRecords<K, V> poll(final long timeoutMs, final boolean includeMetadataInTimeout) {
        ...
    }

Method chaining is like following.
   poll(final long timeout)  -> poll(final long timeoutMs, final boolean includeMetadataInTimeout)
   poll(final Duration timeout) -> poll(final long timeoutMs, final boolean includeMetadataInTimeout)

Even though poll(final long timeout) method shows deprecated, but kafka could not force to user to not use.
Even if Kafka plugin is going to apply this PR, it is going to be impossible to trace when Users use poll(final long timeout) method.
This is the reason why Kafka plugin choose poll(final long timeoutMs, final boolean includeMetadataInTimeout) method.
I sincerely ask for your understanding.

Understood. Thanks for the clarification.


Resolve dependencies and implement batch deploy functionality

User Story
Users want to deploy from infrastructure to application with one command.
Acceptance Criteria

To be implemented according to the following design.
To be able to deploy containers to the App Service using this function.

Design & Specification
The following command creates all resources defined in dacrane.yaml. However, updating is not supported at this time.
$ dacrane up

The following command deletes all resources that had been created.
$ dacrane down

Wait for resources given in "dependencies".
For example, foo waits for the creation or update of bar when defined as follows
kind: resource
type: providerA
name: foo
dependencies: [resource.bar]
parameters:
  a: 1
  b: 2

---

kind: resource
type: providerB
name: bar
parameters:
  a: 1
  b: 2

Implemented.


Fixes for new Timers and Such

[x] Download from new URL
[x] Add URL for new tokenizer with commas
[x] Remove comma preprocessing
[x] Update experimental results

@mravanelli , everything seems to be working. Let me know if I can merge.

Great job @lorenlugosch! Let me do a final test to make sure everything is fine.

I did tests (on the HuggingFace part as well) and everything is working. Feel free to merge it!


New feature: slash line breaks vs parenthesis

Currently on this code:
from returns._generated.pointfree.bind_ioresult import _bind_ioresult as bind_ioresult

And these settings:
[isort]
include_trailing_comma = true
multi_line_output = 3
default_section = FIRSTPARTY
line_length = 80

isort reformats this line to:
from returns._generated.pointfree.bind_ioresult import \
    _bind_ioresult as bind_ioresult

But, I don't use \ in my programs at all (with the help of https://github.com/sobolevn/flake8-broken-line), so instead I would love to have it formatted like so:
from returns._generated.pointfree.bind_ioresult import (
    _bind_ioresult as bind_ioresult,
)

But, currently I am not able to find this setting. So, I propose to add it 🙂

You need use_parentheses = true, it does exactly this:
@@ -1 +1,3 @@
-from returns._generated.pointfree.bind_ioresult import _bind_ioresult as bind_ioresult
+from returns._generated.pointfree.bind_ioresult import (
+    _bind_ioresult as bind_ioresult,
+)

I'm not sure why it's not in the README but it is in the configuration wiki

Thanks, I have missed it. 🤝


Can't use mockttp in the browser without a CommonJS bundler

In the Readme, you have an in-depth tutorial that gives an example of the browser code in the format const mockttp = require('mockttp').getLocal(); which would work in Node.js but not in Chrome.
I know that AMD works in the browser, but the commonJS fashion of var = require('package') isn't browser-friendly. The guide shows that the browser and nodeJS code are of the same kind.
Is there a way to load commonJS properly in a browser like that? RequireJS vomits when I attempt that. Or can I simply rebuild the project to AMD?
What's missing?

Ah, yes, right now it's not built for AMD I'm afraid.
Building for Common JS like this means it works out of the box in both Node & with tools like Webpack/Browserify/Parcel/etc, but no, not with RequireJS (which, to be fair, has rather fallen out of popularity in recent years). You can see an example of this in Mockttp's tests if you're interested: within the Karma config there's an embedded webpack configuration, which both compiles all the TS, and bundles all required CommonJS modules into something that'll run in a browser en route.
Adding built-in AMD support is harder to do than you'd think I'm afraid. It's very easy to get TypeScript to output AMD code, but Mockttp itself requires various other modules internally, and you'd need all of them to be AMD-compatible as well, and their dependencies too, and for all of that to consistently use module identifiers throughout that will resolve happily with your final downstream require config too.
Imo, the easiest solution to all that would be to define a single prebuilt browser bundle here, which uses webpack or similar to bundle up all the necessary dependencies into one single UMD file, which anybody not using a CommonJS-capable build tool can use. Would that solve your problems? I'm unlikely to get to that soon myself, but I'd happily accept a PR to do so.

I see you originally posted this with an error where Mockttp wasn't building too btw. I assume you've fixed that - out of interest, what was the issue? If there's any extra steps that it would've been useful to have in the readme to get you started, just let me know.

Ah. Yes, for commonJS to work in any form, I'd need all the modules downloaded before the require calls are run. I have not learned Webpack yet.
I was trying to build it with AMD, but then I saw that its dependencies didn't afford me the opportunity to compile them to AMD - they shipped in commonJS. So I saw what you are saying.
I could venture into webpack. See if I can set up a bundled script.

Well, I had typescript errors, but I noticed they were based on missing modules, so I made sure then to npm install.
At first, I was trying to build it from a node_modules folder int he project for which I wish to use it, but then I noticed among other things, that the npm install mockttp didn't copy over tsconfig.json among others. So I cloned it into its own folder and once I made sure to install typescript and rimrag and run an npm install, it worked.

(If you would believe, at my company, I work on an advertising web player, and to keep size down I use plain old file concatenation. AMD adds a lot of fluff for all its niceties)

Ok, sounds like a plan! Let me know if you have any questions.
Yes, you'll need to npm install first. You shouldn't need to separately install typescript or rimraf I think - a single npm install should give you everything.
I've worked in those kind of environments too. Simple tools like that can be useful sometimes, but they do get limiting once you start trying to do anything more complicated.

I got a bundle built with this command

mxp-sea-0261:mockttp cthomas$ webpack-cli --entry ./dist/main-browser.js --output lib/mockttp-browser.js --mode development

I had to modify main-browser.ts to have a creation of window.Mockttp = {} with the getLocal, getRemote, and getStandalone functions attached to it though. It doesn't have anything fancy to tie it down to AMD or another module framework.

Nice! That looks promising.
You should be able to get webpack to generate those last bits itself for you too. Take a look at https://webpack.js.org/configuration/output/#output-librarytarget. I've never tried it, but in principle you can build with libraryTarget: 'umd' in your config and it should work out how to create a UMD module that'll automatically work with AMD, CommonJS or global variables, depending on the environment.


Kotlin 1.0 Beta Candidate support

Please update Fuel for Kotlin 1.0 Beta Candidate.
http://blog.jetbrains.com/kotlin/2015/10/kotlin-1-0-beta-candidate-is-out/

Sure. I am working on it. Thanks :)
—
Sent from Mailbox
On Thu, Oct 22, 2015 at 10:03 PM, Gael Ribes<EMAIL_ADDRESS>wrote:

Please update Fuel for Kotlin 1.0 Beta Candidate.
http://blog.jetbrains.com/kotlin/2015/10/kotlin-1-0-beta-candidate-is-out/
Reply to this email directly or view it on GitHub:
https://github.com/kittinunf/Fuel/issues/29

Fuel 0.56, using Kotlin 1.0-beta plugins; IntelliJ and Android Studio says classes.jar has an unsupported format.

@peleteiro I am not sure what is going wrong? Should I clean it and pack another version to see whether it helps?

@kittinunf I did that and worked. I checked out Fuel code and clean build it.

Ok I'll do it.


defaults: Disable debug mode

Debug mode is enabled in the backend app even when DEBUG env is set to False (as in docker-compose.yml:L46).
It is caused by the return value fallback branch when JSON cannot be decoded from given environmental variable.
In case of backend debug mode the returned value is str("False") instead of bool(False) which is a truthy value:
$ docker-compose exec backend /bin/sh
/backend # source $(poetry env info -C ./backend --path)/bin/activate
(backend-py3.12) /backend # ./manage.py diffsettings --all | grep DEBUG
DEBUG = 'False'
### DEBUG_PROPAGATE_EXCEPTIONS = False
(backend-py3.12) /backend # python -c "print(bool('False'))"
True

This is why debug mode is always enabled.
I suggest switching default backend behaviour to disable debug mode and only make it optional for development environments. Also direct comparison of env value with expected string ("true", case insensitive) could be useful before casting it to Django setting value.

This was handled in the linked PR, DEBUG is now opt in


LNURLw does not generate valid invoice

when scanning an LNURLw, an error message is displayed after trying to claim the invoice.
This may require a backend change to the graphql query for LNURLw

@islandbitcoin can you test now? I think it is working now.

@brh28 Can you check this mutation?
gql`
  mutation lnInvoiceCreate($input: LnInvoiceCreateInput!) {
    lnInvoiceCreate(input: $input) {
      errors {
        message
      }
      invoice {
        paymentHash
        paymentRequest
        paymentSecret
        satoshis
      }
    }
  }
`

Getting following error when send the request:

Not sure where this query is coming from, but at first glance, looks because it's a query to lnInvoiceCreate rather than lnUSDInvoiceCreate. We don't have a BTC wallet, so haven't updated the BTC-related resolvers


docs: Additional badges and categorization

The categorization is to be consistent with Argo CD. Also added release badge and LinkedIn badge.

Is there a way to use the root level README file in the docs website? e.g. https://github.com/argoproj/argo-workflows/blob/main/docs/README.md  is pretty redundant and we don't want to update both places every time.

Is there a way to use the root level README file in the docs website? e.g. https://github.com/argoproj/argo-workflows/blob/main/docs/README.md is pretty redundant and we don't want to update both places every time.

If we want them to be equivalent, yes, I'm pretty sure there's a few ways to do it. They weren't the same until your #11358 I think, so that is a more recent change. I can handle that

Addressed comments

Agreed that this looks ugly. I re-purposed the PR to just add the additional badges.

If we want them to be equivalent, yes, I'm pretty sure there's a few ways to do it. They weren't the same until your #11358 I think, so that is a more recent change. I can handle that

I added a script for this in #12752. It's not quite a straight copy+paste because of needing to change relative and absolute links.


Broken API Rate Limiting Handler and Exception Handler

Describe the bug

Replicon Handler attempts to get the Execution Correlation ID from the Response Headers of each call it made.
Rate limiting response from Replicon API does not including x-execution-correlation-id in the Response Headers.
Rate limited calls made by Replicon Handler to the Replicon API are raising a KeyError, pushing the handler into a retry loop.

Issues Observed

Replicon APIs Rate Limiting Responses are not handled properly.
Any exception is pushing the Replicon Handler into a retry loop.

Affected Release(s)

1.1.7 and lower.

Steps to Reproduce

Make enough calls to the Replicon API from an instance to trigger the rate limiting phase.
Trigger any Python exception, and the Replicon Handler will run into a retry loop.

Expected behavior
Rate Limiting Handler

When calls to the Replicon API are rate limited, the handler should pause till the rate limiting time passes.
The call which was rate limited and the following should be retried after the handler unpauses.

Exception Handler

Not all the exceptions should kick the handler into a retry loop.
Network related and SSL related exceptions should be retried.

This was fixed a long time ago, but the fix wasn't deployed to PyPI as a new release because I couldn't find the time. The fix is in the development branch.


chore: drop iOS 13 support use webps again

This PR resolves MOPLAT-721
Description

Drops support for iOS 13, webps only supported on 14 and above and I was off by one in the previous PR 😬
Runs the script to convert all pngs in the images/ folder to webps

Nice size drop images folder now 21.9 MB from 39.6 MB
Potential follow-up:

Find the uncompressed png images of the jpegs in the image directory and convert those to webp and use instead

PR Checklist

[x] I have tested my changes on iOS and Android.
[x] I hid my changes behind a feature flag, or they don't need one.
[x] I have included screenshots or videos, or I have not changed the UI.
[x] I have added tests, or my changes don't require any.
[x] I added an app state migration, or my changes do not require one.
[x] I have documented any follow-up work that this PR will require, or it does not require any.
[x] I have added a changelog entry below, or my changes do not require one.

To the reviewers 👀

[ ] I would like at least one of the reviewers to run this PR on the simulator or device.

Changelog updates
Changelog updates

Cross-platform user-facing changes

iOS user-facing changes

Android user-facing changes

Dev changes

Use webp images, drop iOS 13 support - Brian

Need help with something? Have a look at our docs, or get in touch with us.

Very excited to see this! Maybe we can look into dropping old android versions as well given that they might also not support webp by default
Edit: we're at 21- so we're good theoretically https://developer.android.com/studio/write/convert-webp#:~:text=Lossy WebP images are supported,WebP images to PNG format.

very good point, I assumed we were good with webp on Android but should have checked!


TSL - implement tsl_global_execute_instructions() and update tests

Right now the tests are using the raw global scope instructions for validation, but should actually be tested after executing instructions and check the variable_list_t for validation.

done in e6ffc0ab792ef65176d4c637bb197830074bce1e


add idelta function

Main purpose of this PR is adding the idelta function as described in #1773
Along the way I ...

moved the normal delta functions tests from legacy.test to the functions.test file and made sure to clear values before and after
refactored the duplicated code from irate and idelta into the instantValue function. (open for naming improvements)

The idelta function implementation was chosen to match the behavior of the delta function as in that it works with positive and negative deltas.
As the issue was originally created by him I'm tagging @brian-brazil here.

That seems about right 👍
@brian-brazil you mentioned in the issue that it should return the "absolute" value. This didn't seem aligned with delta() and loss of information as we have an abs() function. What was your intention behind that?

Looks like I badly worded that, this PR looks correct.
👍

Cool, thanks.


Upgrade rancher/dapper version to avoid CI errors.

Problem:

Drone CI often runs into error when running build jobs for PRs.
Solution:

Upgrade rancher/dapper to v0.5.8 to try to avoid error.

@Mergifyio backport v1.1