Split operator to separate out cloud provider specific code

Summary
The cilium-operator currently imports cloud-provider specific SDKs which bloat up the binary size and lead to unnecessary complexity when operated outside of the context of that cloud-provider.
Details
TBD

Per discussion in the meeting today, the first task here will be to define more details. Just a few initial thoughts below.
Two path I can think of so far are these (I think we mentioned this on the call):

provider-specific code runs in a separate process and there is some kind of an API, perhaps gRPC

packaging: could be a separate pod/service, or a sidecar
general considerations:

API needs to be defined

even if that would be a mapping of Go library we have now, supposedly it becomes a contract that we will need to maintain going forward

API access needs to be secure
remote API would introduce loose coupling, thereby making it potentially more extendible and enabling separate release cycles

provider-specific code is part of the main operator binary and is called as a Go library

packaging: a separate version of the binary and image are built for each provider, the right image is picked during installation
general considerations:

current Go library API can be used (possibly with some minor changes)
supposedly it's can also be seen as a contract, but I believe it's easier for us to evolve it as it tightly coupled

From the first look at the operator code, I think it would make sense to separate out some packages, as it's currently a single (and relatively large) main package.

I also noted that operator currently depends on pkg/probe, which uses bpf.Map, and that appears to be non-intentional.

@tgraf do we mostly care about the size of binary and the image, or we might want to isolate the dependencies also?
(I don't know if it is possible to have separate go.mod files one repo, but even if we had to extract the operator's main package into provider-specific repo, that still could be doable. Just wonder if that matters at all.)
I am mostly leaning towards the route where there are just separate binaries/images, it just seems like the path of least resistance to start with.
Since this was referenced from #10056, I assume the binary size matters to us primarily for the impact on memory usage, and not so much for image download time. If that's the case, we can probably keep the image the same, just have separate binaries, which would make the build changes simpler.

Thinking more about the route with separate binaries, it looks like there are two way:

separate main packages
one main package, different allocators are included based on build tags (to illustrate: for provider in none aws azure; do go build -tags "$provider" -o "cilium-operator-${provider}" ; done)

Since this was referenced from #10056, I assume the binary size matters to us primarily for the impact on memory usage, and not so much for image download time. If that's the case, we can probably keep the image the same, just have separate binaries, which would make the build changes simpler.

Exactly, afaics binary size mainly matters because it increases RSS of the process. Regarding image size, I think operator size is not the main factor and we also have some other leverage there to reduce size, see e.g. #10542

2. one `main` package, different allocators are included based on build tags (to illustrate: `for provider in none aws azure; do go build -tags "$provider" -o "cilium-operator-${provider}" ; done`)

I'm not very familiar with the operator yet but I'd guess this way would be easier to implement given the current build system. It would probably also need less duplicated code than the separated main solution.

@tgraf do we mostly care about the size of binary and the image, or we might want to isolate the dependencies also?
(I don't know if it is possible to have separate go.mod files one repo, but even if we had to extract the operator's main package into provider-specific repo, that still could be doable. Just wonder if that matters at all.)
I am mostly leaning towards the route where there are just separate binaries/images, it just seems like the path of least resistance to start with.
Since this was referenced from #10056, I assume the binary size matters to us primarily for the impact on memory usage, and not so much for image download time. If that's the case, we can probably keep the image the same, just have separate binaries, which would make the build changes simpler.

it's simpler to have a single go.mod file in the entire repo, the main concern is around the binary size and the dependency isolation for each binary. For example, a cilium-operator dedicated for gce does not need to import any packages from aws for example.

it's simpler to have a single go.mod file in the entire repo, the main concern is around the binary size and the dependency isolation for each binary. For example, a cilium-operator dedicated for gce does not need to import any packages from aws for example.

Sure, thanks for clarification! I just wanted to double-check, as sometimes dependency sub-tree conflicts can be an issue, but I guess SDKs do maintain good dependency hygiene and don't introduce a conflicting version of k8s.io/client-go 😉

These are the numbers I got for the 64-bit macOS binaries (du operator / du -h operator):

with AWS & with Azure: 169016 / 83M
with AWS & without Azure: 164472  / 80M
without AWS & with Azure: 123608  / 60M
without AWS & without Azure: 118208  / 58M

I must say that refactoring operator main package into a few sub-packages is not very easy, as we are using quite a few global variables, and I am not sure whether to get rid of some of those globals, or do something else...
Aside from IP allocators inside of the operator main package, there is also one additional offender:
https://github.com/cilium/cilium/blob/10fcc779fa4b50a35249f11ea80f3f924ca60de5/pkg/policy/groups/providers.go#L15-L20
It appears that this pkg/policy/groups is only used by the operator main package, albeit pkg/policy and it's other sub-packages are in ported in various places.

I must say that refactoring operator main package into a few sub-packages is not very easy, as we are using quite a few global variables, and I am not sure whether to get rid of some of those globals, or do something else... E.g. it would be possible to move code inside of the main package without break it apart, or maybe create a sub-package with global variables?
Aside from IP allocators inside of the operator main package, there is also one additional offender:
https://github.com/cilium/cilium/blob/10fcc779fa4b50a35249f11ea80f3f924ca60de5/pkg/policy/groups/providers.go#L15-L20
It appears that this pkg/policy/groups is only used by the operator main package, albeit pkg/policy and it's other sub-packages are in ported in various places.

@errordeveloper I guess we need to look it case-by-case. For example, that file can easily be fixed by adding a go build tag to it for which only build of cilium-operator-aws would have it set.

Which global variables?

It's the nodeManager and it's ciliumNodeUpdateImplementation that puzzled me yesterday evening.
https://github.com/cilium/cilium/blob/0f49fc60bd517ea20836e04b6d768a88f3f610e1/operator/cilium_node.go#L34
https://github.com/cilium/cilium/blob/0f49fc60bd517ea20836e04b6d768a88f3f610e1/operator/cilium_node.go#L109
https://github.com/cilium/cilium/blob/0f49fc60bd517ea20836e04b6d768a88f3f610e1/operator/eni.go#L73
I'll have another go at these now, I have an idea.

@errordeveloper An upcoming refactoring in the GCP IPAM PR will remove the global nodeManager for the node IPAM. We can defer this work until that has happened. Same for ciliumNodeUpdateImplementation, the global variable has been done out of laziness.
Are there any other blockers that you have identified? How complex is the work overall?

@tgraf is that refactoring work on a branch yet? I started having ago at it, I am not very far from finishing  refactoring operator/node_manager.go as operator/tasks/node_manager/node_manager.go. The way node manager is done is the only thing here, the rest looks fairly trivial, I think I should be able to open a PR later today.
The intention so far is to have operator/task/aws_allocator and operator/task/azure_allocator, and introduce build tags. It makes sense to have two iterations - the first iteration would keep current behaviour+packaging and just introduce packages and build tags. And in the second iteration I'd change behaviour+packaging - start building 3 binaries and and remove the IPAM flag. The reason I'd rather have two iterations is because we'd need to make a decision about defaults and compatibility.

@tgraf I have got to stage where I have operator/node_manager.go and operator/k8s_node.go moved under operator/tasks/node_manager and somewhat tidied, it mostly complies, but I realised it's a bit more convoluted now, I'll way for your PR and would be very keen to review it :)

Since #10758 was merged, we need to discuss how are we going to ship the operator.
Open option would be to ship large binary that we ship now, and smaller binaries along the side. We can make Helm select small binaries and eventually deprecate the large binaries.
Another, slightly different  option would be to have a wrapper binary (perhaps a shell script) that calls the right binary based on what flag was passed in.
Alternatively we can just start shipping new small binaries, namely 3 of them, and make sure Helm chart does the right thing. We would have to document this in the change log and upgrade guide as a breaking change to those who aren't using the official Helm chart or manifests that we ship in the repo.
From a UX perspective, it seems nicer if we can avoid an instant breaking change and provide a window of 1 or 2 releases, but in a way this can be consider as a low level element and it would only affect those who aren't using the Helm chart.

After thinking about it for a while, I think that personally I'd probably prefer to go with the approach where agent fat agent is the default for non-Helm installs, so the image will have old large binary as well as new smaller ones, and the smaller ones will have to have IPAM flag removed. Helm installs will make use of new smaller binaries.

Which non-helm installs are you thinking about? I can think of the quick-install.yaml and that's all. AFAIK everything else (including any cloud integration) relies on Helm today.

After thinking about it for a while, I think that personally I'd probably prefer to go with the approach where agent fat agent is the default for non-Helm installs, so the image will have old large binary as well as new smaller ones, and the smaller ones will have to have IPAM flag removed. Helm installs will make use of new smaller binaries.

Yes, agreed. This also ensures we are not breaking anything.

Open option would be to ship large binary that we ship now, and smaller binaries along the side. We can make Helm select small binaries and eventually deprecate the large binaries.

This makes sense to me. We already have helm options for several cloud providers (azure.enabled=true, eni=true) to do the right thing by default. This can simply optimize the container image for the operator as well.


Add Azure "E" VM sizes to templates

What does this PR do?
Add Azure "E" instances as selectable VM sizes to templates.
How should this be manually tested?
Choose one of the newly added E or ES VM sizes when filling out the template form on Azure platform. Expected result: The VMs have the selected profile.
Is there a relevant Issue open for this?
No relevant issues.
Who would you like to review this?
cc: @tomassedovic @bogdando PTAL

@glennswest do you mind to take a look? Thx

Sure
Sent from my iPhone

On 19 Oct 2017, at 3:40 PM, Eduardo Mínguez<EMAIL_ADDRESS>wrote:
@glennswest do you mind to take a look? Thx
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

@glennswest do you mind to take a look at this? Thanks.


coercion to universe polymorphic type

Currently, when I define the following inductive type in a polymorphic way
inductive trunc_index : Type₊ :=
minus_two : trunc_index,
trunc_S : trunc_index → trunc_index

-- trunc_index.{l_1} : Type.{succ l_1}

the map with the following type
nat_to_trunc_index.{l_1} : ℕ → trunc_index.{l_1}

is not allowed to be a coercion. Is it expensive to allow this?
It does work if I make nat also universe polymorphic, and restrict the function from nat.{l} to trunc_index.{l}. Is that the way to go?

Since we postponed #297, this can probably also be postponed. It is not clear whether we ever need it.


Repeatedly asks for permission on device boot

Environment
Windows build number: 10.0.18363.778
PowerToys version: Version v0.16.1
PowerToy module for which you are reporting the bug (if applicable): all?

Steps to reproduce
Ever since I installed the last update, Powertoys asks if I want to make changes to the OS whenever I reboot.
Expected behavior
I have not experienced this behavior before. It is as if the last update didn't finish and it keeps asking if I want it to.
Actual behavior
On boot, the OS pauses and the Powertoys update popup asks if I want to make changes to the operating system. This is what usually happens whenever an app or program updates. Except that it keeps happening.
Screenshots

Hi @rodent0529
we haven't seen this particular issue but we are aware of a problem with the 0.16.x installer, the fix is almost ready and we will release 0.17 soon. Hopefully if will fix the problem you are experiencing.
I suggest that you uninstall 0.16.1 and use 0.15.2 until next week when 0.17 will be available.
To uninstall it use Windows 10 Settings -> Apps -> Apps & Features, and not the legacy Control Panel.
Thanks.

Thank you. Uninstalling and then using 0.15.2 did make the issue go away. I'll check for the update next week.

@rodent0529
this should not be fixed in 0.18.1 https://github.com/microsoft/PowerToys/releases
Please reopen the issue if the problem still persists.
Thank you.

Hi,
I'm on v0.18.1 and I've been getting this too

@orbitaleccentric
are you getting the exact same dialog or are you getting the UAC dialog because you set PT to always run as administrator?

Thanks for the clarification enricogior - my error.
I'm not getting the same dialog and I am running PT as administrator (can't remember why).

@orbitaleccentric
open the Settings and turn OFF/ON the option to Run at startup, that should fix the problem.

@orbitaleccentric
open the Settings and turn OFF/ON the option to Run at startup, that should fix the problem.

I had this problem too and can confirm that this fixes the issue.

This is happening to me on v0.18.2

@migueldotcom
I suspect you are experiencing a different issue, this one is specific of an older version of PowerToys when running a second user account that doesn't have admin privileges.
In your case it might be a different problem.
Are you running PowerToys always as administrator and also have the "Run at startup" option on?
In that case simply turn on and off the "Run at startup" option and it should fix it.


The Rootly card in the Overview tab is clipped if the main navigation is pinned

Have replicated this in Safari and Chrome

Sorry, this isn't actually a bug. We had contained the Rootly card in a Grid that was too small


Drop down menu

need to change the order in the drop down box for the voices. Should be  Language (Country code): Name of voice? So for example "English (US): Michael". This way it allows for easier sorting by language.

Good Idea!


jumpscale installer needs to have the branch parameterized

This is to enable autotesting on multiple branches as well as prevent merge issues with branch names in the installer.
It should default currently to development_jumpscale until we merge back to development

We have two scenarios now
Case 1

install normally without passing a branch.
/tmp/jsx install
That will download InstallTools.py and installs from the default branch which is hardcoded in the jsx.py script
Case 2
Passing the branch through installation
/tmp/jsx install -b hamada
That will download InstallTools.py and installs from the hamada branch.
Commit: https://github.com/threefoldtech/jumpscaleX/commit/487a8044cf6ab3bc8b8ce065dbeab20023e667b0 ; branch: development_jumpscale

blocked on https://github.com/threefoldtech/jumpscaleX/issues/738

when I install from branch exist in jumpscale ,it return the following error  as it can't checkout from this brnach in digital me
+ cd /sandbox/code/github/threefoldtech/digitalmeX
+ git checkout development_builders -f
error: pathspec 'development_builders' did not match any file(s) known to git.

EXCEPTION

        jsx                                                          : 587 : cli()
        /root/.local/lib/python3.6/site-packages/click/core.py       : 764 : return self.main(*args, **kwargs)
        /root/.local/lib/python3.6/site-packages/click/core.py       : 717 : rv = self.invoke(ctx)
        /root/.local/lib/python3.6/site-packages/click/core.py       : 1137: return _process_result(sub_ctx.command.invoke(sub_ctx))
        /root/.local/lib/python3.6/site-packages/click/core.py       : 956 : return ctx.invoke(self.callback, **ctx.params)
        /root/.local/lib/python3.6/site-packages/click/core.py       : 555 : return callback(*args, **kwargs)
        jsx                                                          : 316 : installer.install(sandboxed=False, force=force, gitpull=pull)
        /tmp/InstallTools.py                                         : 2948: self.repos_get(pull=gitpull)
        /tmp/InstallTools.py                                         : 3006: Tools.code_github_get(repo=sourceName, account=self.account, branch=self.branch, pull=pull)
        /tmp/InstallTools.py                                         : 1808: raise RuntimeError("Could not checkout branch:%s on %s" % (branch, args["REPO_DIR"]))

Mon 29 12:55:44 core.py          - 762 -                                    : EXCEPTION: Could not checkout branch:development_builders on /sandbox/code/github/threefoldtech/digitalmeX
CANNOT CONTINUE
Connection to localhost closed.

EXCEPTION

        /tmp/jsx                                                     : 587 : cli()
        /usr/lib/python3/dist-packages/click/core.py                 : 722 : return self.main(*args, **kwargs)
        /usr/lib/python3/dist-packages/click/core.py                 : 697 : rv = self.invoke(ctx)
        /usr/lib/python3/dist-packages/click/core.py                 : 1066: return _process_result(sub_ctx.command.invoke(sub_ctx))
        /usr/lib/python3/dist-packages/click/core.py                 : 895 : return ctx.invoke(self.callback, **ctx.params)
        /usr/lib/python3/dist-packages/click/core.py                 : 535 : return callback(*args, **kwargs)
        /tmp/jsx                                                     : 253 : docker.jumpscale_install(branch=branch, redo=reinstall, pull=pull, web=web)
        /tmp/InstallTools.py                                         : 3567: self.sshexec(cmd)
        /tmp/InstallTools.py                                         : 3404: Tools.execute(cmd2, interactive=True, showout=False, replace=False, asfile=True)
        /tmp/InstallTools.py                                         : 1259: original_command=command,
        /tmp/InstallTools.py                                         : 1266: res = Tools._execute_interactive(cmd=command, die=die, original_command=original_command)
        /tmp/InstallTools.py                                         : 671 : % (original_command, returncode)

Mon 29 12:55:44 core.py          - 720 -                                    : EXCEPTION: ***ERROR EXECUTE INTERACTIVE:
Could not execute:ssh -oStrictHostKeyChecking=no -t root@localhost -A -p 9122 'cd /tmp;python3 jsx install --branch development_builders'
returncode:1

Will checkout the passed parameter, if it's not available on digitalme will checkout development_jumpscale. commit: https://github.com/threefoldtech/jumpscaleX/commit/61d8182b39eb4ce9a10ecd8c0c88213a50637193

verified using developmemnt_builders branch

interactive:insystem/docker


Identify requests coming from external meshes and enforce AuthorizationPolicies at Gateway level

Objective
Identify requests coming from external meshes and enforce AuthorizationPolicies at Gateway level.
Context
I'm currently investigating and doing my first tests with multiclusters deployments for the company I work for. Our scenario has a couple of constraints that condition the architecture to implement:

High availability: We can't, by any means, risk to have issues because the istio-proxies running in one cluster cannot contact the istiod in another.
Large scale: Our clusters run thousands of containers in hundreds of namespaces. Therefore, we must control the amount of unnecessary updates the proxies receive and the control-plane is listening for.
Locality Load Balancing: Our clusters are not always geographically close, also, we already have lots of services deployed in the same namespace that are repeated among clusters. So, by default, the traffic that goes from service A to service B should always go to pods of service B running in the same cluster than service A, unless configured otherwise.
Different networks: We've a hybrid cloud scenario and, although there are ways for the pods to see a unified network, a priori we cannot ensure there will be no repeated IPs between clusters.

Considering all those premises and a couple more, after reading lots of documentation, we resolved that the most suitable deployment model for our scenario would be a multimesh-multicluster-multinetwork deployment. Each kubernetes cluster will have its own istiod running and this will only be connected to the API server of its home cluster. Also, each cluster will have its own Istio Gateway to receive traffic from others.

Requirement
One of the features we need to provide is the ability to recognize the source meshID of a request when this arrives to another mesh, in order to:

Metrics correlation: Link the outgoing request in the source cluster with the incoming request in the destination cluster in our metrics.
Access-Control: Enforce AuthorizationPolicies at the Gateway level in order to control which external mesh services are able to query a particular internal endpoint.

Some ideas/thoughts
Metrics correlation
For this, the main limitation is the fact that the Istio Gateway doesn't present metrics for incoming requests, only outgoing. Nevertheless, at least for this we can rely on the request_id header and maybe track it with tracing in the future. I also thought about configuring the Gateway entry as PASSTHROUGH instead of ISTIO_MUTUAL in order to check if that way I would see the source_cluster tag of the metric generated by the destination pod with the name of the actual source cluster but, I always see the destination cluster in that field (I assume the pod always see the Istio Gateway as the request source).
I also explored the possibility of using the destination/source_principal tags but the value in those is always spiffe://cluster.local/ns/istio-ingress/sa/istio-ingress. I think this is related to the trustDomain field hardcoded to cluster.local in the helm chart we use for deployment:
https://artifacthub.io/packages/helm/istio-official/istiod/1.15.2?modal=template&template=configmap.yaml
(I could override it but I'm not sure if that was on purpose).
Access-Control
In regards to the enforcement of AuthorizationPolicies to allow/deny requests from external clusters, I don't see any metadata I could use in the policy to properly match with external requests of a particular mesh. So far, the only solutions we came-up to overcome this are:

IP-based AuthorizationPolicies: It will work in general but doesn't scale much and they will be tied to the actual IP range each cluster is assigned (that might change in the future).
Custom meshID header: We thought about enforcing a global configuration to stamp each request with a header containing the meshID value of the corresponding mesh and then use this header as match in AuthorizationPolicies. The problems I see with this are:

We would be introducing a very custom configuration.
It is a parameter that can probably be overriden at the namespace level with an EnvoyFilter or VirtualService.

Question
Do you have any idea about how to achieve these objectives apart from the options I mentioned?
I thank you in advance for any help/suggestion/idea you may have. Also, please, don't hesitate to ask me for more information if I'm missing some detail you consider important.

One small clarification on this point:

the istio-proxies running in one cluster cannot contact the istiod in another.

The istio-proxies do not communicate with the istiods in other clusters. From the deployment models docs:

To enable endpoint discovery for a cluster, an administrator generates a remote secret and deploys it to each primary cluster in the mesh. The remote secret contains credentials, granting access to the API server in the cluster. The control planes will then connect and discover the service endpoints for the cluster, enabling cross-cluster load balancing for these services.

With this in mind, it sounds like multicluster, single mesh may be a more appropriate topology for you?

Thank you for your input @keithmattix . According to that same document, the istio-proxies can communicate with an istiod running in another cluster (primary/remote cluster). When I said:

the istio-proxies running in one cluster cannot contact the istiod in another.

I was mainly referring to that possible configuration, which is not convenient for our use-case.
On the other hand, regarding the singlemesh-multicluster approach, there are 2 main drawbacks for us:

That will merge the endpoints of services with the same name running under the same namespace in both cluster by default. This is not possible for us since deployments of the same app running in different clusters usually will not be able to attend the same request. Also, the clusters are not always close to each other, so some requests would have unnecessary delay.
Our clusters are quite big, with thousands of services. An istiod consuming the information of services running in an external cluster will start consuming resources and injecting configurations into the proxies that are not necessary.

Hi @mauro770 @keithmattix -- I was looking into the same setup for my use-case too. I have few questions:

How are you handing the automation for remote-secrets in all the controlplane clusters? Is there any Istio recommended way to do this? All I can see in docs is to use the istioctl create-remote-secret which uses the SA token
How to handle the root CAs? I hope you need to have the same root CA to be deployed in all the clusters to enable the communication. Can we able to make use cert-manager with this approach?

@Kavinraja-G I'm not working on this anymore (I changed jobs). Sorry for not being of much help.


Refactor classes screen code

The code in classes_screen.dart can be refactored and made more concise. Can I work on this?

sure, go ahead! @ishanailwal
I'll assign it to you.


Automatically Reset/Clear signalscope signals/frequencies from uninstalled addons

Feature
Addon-unique Signalscope signals & frequencies haunt profiles after their respective addons have been uninstalled.  probably fix maybe?  yes i know about save.json
Context
No response

What does "yes i know about save.json" mean?

it means he knows about deleting save.json to remove the signals and frequencies but does not want to do that


Documentation on OpenAPI Specification

Hi @r00ta,
I would like to suggest that the new MAAS API v3 be documented in the OpenAPI Specification, this will help developers to have an easier time reading its documentation and understanding the requests.
Today the documentation is practically impossible to read and very confusing, as the requests are together, in addition to the descriptions being confusing.

Hey @joelemanoel ,
Thank you for reaching out, I just love community contributions! I opened this repository to start playing around v3, as I personally see it as the baseline to build all the SDKs and the new CLI.
The idea of this repository is to have FastAPI that exposes some dummy endpoints just to automatically generate an openapi schema of v3. My idea is to properly design v3 with the focus on openapi, because I see it as the baseline to generate all the SDKs (Python - move away from python-libmaas, Typescript and so on ) and the new CLI.
Please note that this is a personal brainstorming repository . If you want to keep an eye on this repo and provide some feedbacks, I would really appreciate!


Changing focus

User need to be able to change focus from one widget to another, e.g. between OK and Cancel buttons.
tui should be able to construct a default focus chain that can be overrided.
Cycling widgets should probably be done with Tab and Shift-Tab.

If you could catch mouse input (if available) in order to gain focus, or other similar stuff, it would be really appreciated.

Mouse support is definitely something I'd like to look into. I've tried a couple of approaches for focus events but none that I've been happy about. I'll make sure to consider mouse support in the next iteration.

Random though; In GUI applications, the Tab/Shift-Tab way is pretty standard, but I'm not convinced I want to adopt it as a opinionated focus strategy. Compare with vim or emacs that use key combinations for switching buffers.

There's also up/down, left/right, page up/down, home/end... where the behavior, can vary from widget to widget... + shortcuts.

Right, there's just too many variants to choose from. I'm thinking of leaving the means of interaction entirely to the user and only providing something like (pseudo code-ish):
func SetFocusChain(chain ...Widget) { ... }

type Chain []Widget
chain.FocusNext()
chain.FocusPrev()

... that only takes care of sending the appropriate focus events.

The appropriate place to focus can change dynamically.
E.g. if you can auto-fill address based on the zip code, you could skip those fields. Similarly, the focus order forward/backward are not necessarily the same (this is a rarer case, e.g. you skipped the address field, but need to make a minor edit to it).
I would most likely use some tab-order + allow explicit modification of focus. Of course the chain approach could work as well... although custom handling would be more difficult... one additional approach would be to allow "complete custom handling" with something like type FocusHandler struct { Next(w Widget) Widget } at the cost of making the API more complicated.
PS: I'm not saying that you should handle all those cases; do what makes more sense for this library... Usually adding extendability adds complexity.

Valid points indeed! I'm working on improving layout management for now, and probably won't look seriously into this for a while. If anyone's interested in giving it a shot, I'd be happy to accept a pull request :)

I've added initial support for changing focus. Check out the http and login examples. Ideally, a default focus chain should be provided that changes focus in the order the widgets where added to the layout. Meanwhile, introducing a FocusChain interface should allow users to implement similar functionality themselves.

Shift - Tab is usually used for walking the focus in reverse order.

You're totally right about that, and indeed it was my initial approach. Unfortunately - and this was new to me - terminals generally are not able to provide information on which modifier that was pressed. Meaning tcell can't tell me if Shift+Tab was pressed. From the tcell documentation:

For example, if the rune is 'A', this will be reported without the ModShift bit set, since really can't tell if the Shift key was pressed (it might have been CAPSLOCK, or a terminal that only can send capitals, or keyboard with separate capital letters from lower case letters).

Not sure what the best way forward would be. Ctrl seems to work, so maybe have Ctrl+Tab do reverse focusing, despite not being intuitive.

On windows you can get all the details you need (https://gist.github.com/egonelbre/609a4e3f64dc50c4707207e8aed60ac6).
On linux you usually get a backtab sequence (you can test with showkey -a to see the raw input).
For more information: https://stuff.mit.edu/afs/sipb/user/daveg/Info/backtab-howto.txt

Thanks for the resources! Ideally, I think this is something that should be handled in tcell. I will make sure to look into the options before this issue can be closed.

Found this commit: https://github.com/zyedidia/micro/commit/c409f1cc07f5c0e4b6e9766ab9bb10f1ebd92015

I was under the impression that tcell couldn't detect shift tab
key presses, but this was incorrect. It turns out that tcell just
calls it backtab.

I'm guilty of the same impression :) Looking closer, indeed there is a tcell.Backtab in tcell. Will have a look at it later today!

tcell.Backtab is now default for reversing focus order


How to not encode the entire dataset each time ?

On huggingface, each time the entire table is being encoded for every query.
data = {
    "year": [1896, 1900, 1904, 2004, 2008, 2012],
    "city": ["athens", "paris", "st. louis", "athens", "beijing", "london"]
}
table = pd.DataFrame.from_dict(data)

# tapex accepts uncased input since it is pre-trained on the uncased corpus
query = "select year where city = beijing"
encoding = tokenizer(table=table, query=query, return_tensors="pt")

How to encode the dataset only once and then query against it multiple times ?

@coderookie1994 Thanks for your interest on our work! Since the table will be serialized and be fed into the model at each time, it should be the same even we modify the interface to only encode the table once.

@coderookie1994 Thanks for your interest on our work! Since the table will be serialized and be fed into the model at each time, it should be the same even we modify the interface to only encode the table once.

Sorry could you elaborate a little bit more ?. My doubt is, my table has thousands of rows, each time passing it to the tokenizer will incur a huge cost and also be slow ?. Do we need to reduce the search space by using vector dbs ?

@coderookie1994 Okay I see your point. Currently the model may not respond correctly to large databases since its input length can be at most 2k tokens. Maybe you can first truncate the large database into a relatively small one (~40 rows and ~10 cols) for a better performance.

@coderookie1994 Okay I see your point. Currently the model may not respond correctly to large databases since its input length can be at most 2k tokens. Maybe you can first truncate the large database into a relatively small one (~40 rows and ~10 cols) for a better performance.

Yes I figured it out, I am new to this domain. I am using a vector database to get the relevant rows, using that TAPEX works very accurately. Could you suggest any table reader models which would work well with TAPEX ? Currently I am using "deepset/all-mpnet-base-v2-table".  It does the job but would like to know if there is something better that I can use.

@coderookie1994 Thanks for your feedback! I'm not sure if there is any better retrieval method 😂 Will let you know if we have better solutions.


New databroker v0.13.3

This was updated/tested via https://github.com/nsls-ii-forge/databroker-feedstock/pull/4, simply mirroring the changes here.

Thanks for merging.


Preferences window title isn't localized

I just completed the German localization for an app of mine. The app's development language is English.
When I start the app in Xcode with the language set to German, everything's localized correctly except for the Preferences window's title:

Adding "Preferences" = "Einstellungen"; to my Localizable.strings did nothing. Is this a bug or am I missing something?

@SamusAranX the current implementation of the window doesn't declare "Preferences" on its own. It relies on the main menu item title instead and drops the ellipsis:
		window.title = String(System.localizedString(forKey: "Preferences…").dropLast())

That's probably not going to work with any language that doesn't resemble English, so a patch would be needed.

That's probably not going to work with any language that doesn't resemble English

Why not? The intention is that it would get the localization from the system, since the system supports most localizations.

The dropLast() is the culprit: even when the correct localization is fetched because this is the standard string, it could be that in some RTL language you'd get "…XYZABC" and drop the "C" instead of the "…"

@DivineDominion That's a good point. We need to handle that better. But the issue here is that it doesn't get the system localization at all.

Turns out https://github.com/sindresorhus/Preferences/blob/d9ad07c5382064d379d2941fe3a86a6815d50b81/Sources/Preferences/util.swift#L6-L8 probably never worked. I adopted it from a UIKit snippet I found somewhere, but AppKit is different and it doesn't work for macOS. I tried to find a way to get the translations from system strings on macOS, but I have not been able to figure it out yet.

@issuehunt has funded $100.00 to this issue.

Submit pull request via IssueHunt to receive this reward.
Want to contribute? Chip in to this issue via IssueHunt.
Checkout the IssueHunt Issue Explorer to see more funded issues.
Need help from developers? Add your repository on IssueHunt to raise funds.

I don't think it'll be possible to do this without manually adding all localizations for "Preferences".
Also, with #15 existing, is a fix for this still needed?

Never mind, I missed that "Preferences" is still used for windows with just one tab.
I've submitted a pull request: #24

Fixed by https://github.com/sindresorhus/Preferences/pull/24

@sindresorhus has rewarded $90.00 to @samusaranx. See it on IssueHunt

:moneybag: Total deposit: $100.00
:tada: Repository reward(0%): $0.00
:wrench: Service fee(10%): $10.00


Qpid 8474 add statistics for session

Added the below Statistics for Session
*bytesIn
*bytesOut
*messagesIn
*messagesOut
*transactedMessagesIn
*transactedMessagesOut

Dedeepya,
The changes look reasonable to me.
Please merge them into a single commit.
Kind Regards,
Alex

Aggregation of the changes into a single commit is expected

Done Alex!


feat: Change "Mode" to visual interpretation

Fixes #232
Changes:

Mode is now Animation and It Displays animation from the led

Screenshots for the change:

@yashk2000 @iamareebjamal @mariobehling Please Review

The changes seem to be fine. Just fix the Travis issues.

@yashk2000 glide itself had issues with androidx, fixed it :)

@iamareebjamal @mariobehling Please Review

Good job. Let's see how that works out. Snowflake is not so clear for me yet, but can be improved later.
Please check if you could also do this with "Effects" https://github.com/fossasia/badge-magic-android/issues/245 Thanks!

I also need to check in more detail if the red color is the same as on the top area. If not, please change it in subsequent PRs.

@mariobehling The red color is currently the accent color. I will change it to primary color as well as create the effects visually in the upcoming pr by today

@mariobehling about the snowflake, it is visible only if the characters go beyond the badge, I will try to create another animation which depicts it perfectly sometime later this week


make clef part of visualOffset

There hasn't been a way to shift clefs.

Used for something like this:

<layer>
  <clef shape="F" line="4" fontsize="tiny" vo="-15" />
</layer>

the build error is due to the deprecated maven-repo URL

ready to be merged at tomorrow's ODD Friday


engine: structured errors

Hello @hyu, @maiamcc,
Please review the following commits I made in branch nicks/errors:
1512ede5e735bc7f4106a659ef9b717524574938 (2020-01-08 12:45:46 -0500)
engine: structured errors
a42c508f46989bc9bf6e2e867fb45bb3a7198814 (2020-01-08 12:36:20 -0500)
engine: attach span ids instead of counts to build events, now that they can happen in parallel

this might be too subtle!

changed to 5px


techcommunity.microsoft.com, login.live.com, e8318.dsca.akamaiedge.net, m.media-amazon.com, steamstore-a.akamaihd.net, steamcdn-a.akamaihd.net, login.microsoftonline.com

Energized Protection - block ⚡

Let's make an annoyance free, better open internet, altogether!

Issue Submit Form

  Provide the following infos properly, which will help us to resolve your issue quickly.

Issue(s):
Type x in between [ ] and make sure there isn't any space between brackets. Example; for Your Selected Issue(s), type like this - [x]
You can select more than one category of issues if you need to!

[x] Whitelist
[ ] Blacklist
[x] App Broken
[ ] Website Broken
[ ] Request
[ ] Other Issue

Pack(s):
Write the name of the pack(s) you are using.

Pack(s) Name: Regional Extension

Extension(s):
Also name the extension(s) if you are using any. If you don't then leave it blank.

Extension(s) Name: Regional Extension

Domain(s):
If you are submitting this issue for whitelist/blacklist issue, send us the domain(s) for whitelisting/blacklisting here. Kindly use the Code Tag to prevent tracking.

Domain(s):

`techcommunity.microsoft.com`, `login.live.com`, `e8318.dsca.akamaiedge.net`, `m.media-amazon.com`, `steamstore-a.akamaihd.net`, `steamcdn-a.akamaihd.net`, `login.microsoftonline.com`

Your Config:
Just to ensure there is no issues or conflicts with other app/software/magisk module/extension/source list.
Make sure you are running Energized Protection Service only.

Client: Adguard Home

Version: 20.10.305.18

Details:
Write us a lil bit more about your issue or query. You can attach any screen shot or log of the issue or advert, this will help to highlight it.

Your Issue Detail:

These are safe websites. Not ad related.

Thank you for making Energized Protection great, with your kind help!
A project by Ador with ❤

The following URLs are related: login.windows.net, login.microsoftonline.com, a.privatelink.msidentity.com, azure.microsoft.com.
They are currently being blocked, but they are not ads and they prevent access to Microsoft services.


Setup start options

Add options so users can change the grid size and wait time between each new grid without changing the code.

I'll take care of this one !


Adding support to the Long Method code smell.

In this pull request I am adding the code smell Long Method.
For more informations see: https://martinfowler.com/bliki/FunctionLength.html

Thanks Felipe!


Add Support for Building the VisionFive2 Image in the just File

This commit introduces a new command in the just file, enabling users to build the VisionFive2 image with a single command, incorporating Miralis support.

@CharlyCst Can you please review this branch?


[FLINK-33081] Apply parallelism overrides in scale

What is the purpose of the change
Simplify the scale / parallelism override flow based on previous feedback. This change is a refactor and does not introduce new behaviour.
Brief change log

Unify scale / applyParallelismOverride methods
Move scaling before reconciling spec diffs
Refactor JobAutoscalerImpl and extract some methods to simplify the core flow

Verifying this change
This change is a trivial rework / code cleanup without any test coverage.
Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): no
The public API, i.e., is any changes to the CustomResourceDescriptors: no
Core observer or reconciler logic that is regularly executed: yes

Documentation

Does this pull request introduce a new feature? no

cc @mxm @1996fanrui

@1996fanrui @mxm , I addressed the comments and simplified further based on that. PTAL


Cortex queryable is incompatible with latest Prometheus

I had to revert #763 because the querier started returning blank for all queries.
querier/main.go creates two structs with a flag saying one is for metadata-only and one is for queries.
@juliusv says:

the web API took an engine (which was only used for full queries) and a querier (which was only used for metadata queries)
now the engine only takes a queryable and also creates queries based on it, while the engine doesn't know of a queryable upon construction

So we need to either change upstream Prometheus to tell us what kind of result is needed, or figure out some other way to differentiate within Cortex.

I believe we can differentiate based on whether the SelectParams passed to Select is nil.  But this is somewhat fragile, relying on the particular implementation of Prometheus.  Then again, that was what we were doing before.

Fixed in #802


Double clicking on search button selects placeholder and unable to type

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:

Click the search button
Type some random to trigger "No results found" message
Close the modal
Double click on search button back to back

Expected Result:
Text Input should be in focus and user should be able to write
Actual Result:
Placeholder gets selected and user is unable to write
Workaround:
Can the user still use Expensify without this being fixed? Have you informed them of the workaround?
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android / native
[ ] Android / Chrome
[ ] iOS / native
[ ] iOS / Safari
[x] MacOS / Chrome
[ ] MacOS / Desktop

Version Number: 1.2.78-0
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos:
https://user-images.githubusercontent.com/43996225/222604228-088cf3c8-5630-4fea-8846-11562a6816ed.mov
Expensify/Expensify Issue URL:
Issue reported by:
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1677244790953179
View all open jobs on GitHub

Triggered auto assignment to @sophiepintoraetz (Bug), see https://stackoverflow.com/c/expensify/questions/14418 for more details.

Bug0 Triage Checklist (Main S/O)

[ ] This "bug" occurs on a supported platform (ensure Platforms in OP are ✅)
[ ] This bug is not a duplicate report (check E/App issues and #expensify-bugs)

If it is, comment with a link to the original report, close the issue and add any novel details to the original issue instead

[ ] This bug is reproducible using the reproduction steps in the OP. S/O

If the reproduction steps are clear and you're unable to reproduce the bug, check with the reporter and QA first, then close the issue.
If the reproduction steps aren't clear and you determine the correct steps, please update the OP.

[ ] This issue is filled out as thoroughly and clearly as possible

Pay special attention to the title, results, platforms where the bug occurs, and if the bug happens on staging/production.

[ ] I have reviewed and subscribed to the linked Slack conversation to ensure Slack/Github stay in sync

Can reproduce (though not every time)

Triggered auto assignment to @techievivek (Engineering), see https://stackoverflow.com/c/expensify/questions/4319 for more details.

This can be worked externally.

Job added to Upwork: https://www.upwork.com/jobs/~01af2f520108bae0a4

Current assignee @sophiepintoraetz is eligible for the External assigner, not assigning anyone new.

Triggered auto assignment to Contributor-plus team member for initial proposal review - @mollfpr (External)

Current assignee @techievivek is eligible for the External assigner, not assigning anyone new.

I think we can use the event.details to handle the double click event to solve this issue.

📣 @rjharish333! 📣
Hey, it seems we don’t have your contributor details yet! You'll only have to do this once, and this is how we'll hire you on Upwork.
Please follow these steps:

Get the email address used to login to your Expensify account. If you don't already have an Expensify account, create one here. If you have multiple accounts (e.g. one for testing), please use your main account email.
Get the link to your Upwork profile. It's necessary because we only pay via Upwork. You can access it by logging in, and then clicking on your name. It'll look like this. If you don't already have an account, sign up for one here.
Copy the format below and paste it in a comment on this issue. Replace the placeholder text with your actual details.

Format:
Contributor details
Your Expensify account email: <REPLACE EMAIL HERE>
Upwork Profile Link: <REPLACE LINK HERE>

Proposal
Please re-state the problem that we are trying to solve in this issue.
Double pressing search icon on dashboard results in search input placeholder being selected and unfocused.
What is the root cause of that problem?
The root cause of the issue is that the search input is being focused before the search modal fully opens.
What changes do you think we should make in order to solve the problem?

There are multiple solutions.

We can debounce the click on the search icon on dashboard.
We can set shouldDelayFocus to true here. This will cause the focus to happen on when screen is fully open.
If we want to get even more accurate than shouldDelayFocus, we can use didScreenTransitionEnd property defined here to focus the input only when it becomes true.

What alternative solutions did you explore? (Optional)
None

@rjharish333 - please email - as per the instructions - to<EMAIL_ADDRESS>

Proposal
Please re-state the problem that we are trying to solve in this issue.
Placeholder gets selected and search input is not focused when double-clicking on the Search icon.
What is the root cause of that problem?
There're 2 problems here:

The placeholder is currently selectable, so when we double click on the search input it will make the placeholder show the selected style

If we check other messaging apps like Slack & WhatsApp, the placeholder of text input is never selectable at all, so I think we should do the same.

The search input it not focused, this is because when we double click, the second click places the focus on the whole screen's div element, causing the search input to blur (and not focused as we expect)

What changes do you think we should make in order to solve the problem?

To fix 1, we need to introduce a didTransitionEnd prop to the OptionsSelector to indicate that the page transition is completed.
Then we need to add the userSelectNone to the OptionsSelector's TextInput here https://github.com/Expensify/App/blob/faff1b52f9e2dd8d52eafc54ea1b8275892158be/src/components/OptionsSelector.js#L340
like:
inputStyle={(!this.props.didTransitionEnd) ? [styles.userSelectNone] : []}

This will make sure that during page transition, the placeholder does not show selected style.
We can optionally use the styles.userSelectNone for TextInput in all cases (not just the above case) since it's consistent with other messaging apps like Slack & WhatsApp.
We can pass the didTransitionEnd into the OptionsSelector by using this didScreenTransitionEnd property of the screen https://github.com/Expensify/App/blob/da61f3663c8662047807e1f9fe3ffb2ba58b0f17/src/pages/SearchPage.js#L173
For the above to work, this Safari hack will also needs to be removed https://github.com/Expensify/App/pull/3613, I've tested and confirmed that removing the hack will not reintroduce the bug (that the hack is fixing) with the latest code in main.
To fix 2, we need to add a logic to the OptionsSelector's componentDidUpdate to focus the input only after the page transition end like:
if (this.props.didTransitionEnd && !prevProps.didTransitionEnd && this.props.autoFocus) {
            this.textInput.focus();
        }

We need both fixes, because if we only fix 2 but not 1, the selectable style of the TextInput will flicker.
What alternative solutions did you explore? (Optional)
We can use shouldDelayFocus to delay the search input focus (and use to control its styles.userSelectNone style).

Result
Working well after the fix:
https://user-images.githubusercontent.com/113963320/223070579-a21dec00-3907-48b3-85e5-70a1c02be3ca.mp4

Thank you for the proposals! I'll review this after finishing a prioritized PR.

Proposal
Please re-state the problem that we are trying to solve in this issue.
Double clicking on search button selects placeholder and unable to type #15632
What is the root cause of that problem?
Upon Double clicking on search button, on chrome and only on the macOS, the placeholder text gets highlighted and input gets disabled due to focus shift during the transition as the data from the search endpoint have also not been rendered yet in that time span.
What changes do you think we should make in order to solve the problem?
We should capture the transition of the side modal, during transition and when everything have not been rendered yet we should disable the placeholder or we can delay the focus.
What alternative solutions did you explore? (Optional)
A quick fix would be to disable the double click on the search button since it certainly does nothing and then a delayed followed click should close the modal.

📣 @muhammadbahroz! 📣
Hey, it seems we don’t have your contributor details yet! You'll only have to do this once, and this is how we'll hire you on Upwork.
Please follow these steps:

Get the email address used to login to your Expensify account. If you don't already have an Expensify account, create one here. If you have multiple accounts (e.g. one for testing), please use your main account email.
Get the link to your Upwork profile. It's necessary because we only pay via Upwork. You can access it by logging in, and then clicking on your name. It'll look like this. If you don't already have an account, sign up for one here.
Copy the format below and paste it in a comment on this issue. Replace the placeholder text with your actual details.

 Thank you for contributing to Expensify!

👍🏼 Once we agree on the expected behavior, one of these issues should be closed.
I'm personally leaning towards mimicking the same behavior as when double-clicking the LHN avatar. But we'll wait on @sophiepintoraetz @techievivek @mollfpr to weigh in!

@MariaHCD expected behavior is a matter of perspective but this issue was reported first so even if you close one issue don't you think the other issue should be closed

📣 @BhavyaKoshiya! 📣
Hey, it seems we don’t have your contributor details yet! You'll only have to do this once, and this is how we'll hire you on Upwork.
Please follow these steps:

Get the email address used to login to your Expensify account. If you don't already have an Expensify account, create one here. If you have multiple accounts (e.g. one for testing), please use your main account email.
Get the link to your Upwork profile. It's necessary because we only pay via Upwork. You can access it by logging in, and then clicking on your name. It'll look like this. If you don't already have an account, sign up for one here.
Copy the format below and paste it in a comment on this issue. Replace the placeholder text with your actual details.

Format:
Contributor details
Your Expensify account email: <REPLACE EMAIL HERE>
Upwork Profile Link: <REPLACE LINK HERE>

👍🏼 Once we agree on the expected behavior, one of these issues should be closed.
I'm personally leaning towards mimicking the same behavior as when double-clicking the LHN avatar. But we'll wait on @sophiepintoraetz @techievivek @mollfpr to weigh in!

@MariaHCD For a little more context, please check this thread. This basically contains the reason why we are not using the full screen loader and showing the search input while the drawer is transitioning.

Contributor details
Your Expensify account email<EMAIL_ADDRESS>Upwork Profile Link: https://www.upwork.com/freelancers/~01a4213e283ebb2d46

✅ Contributor details stored successfully. Thank you for contributing to Expensify!

Thanks, @MariaHCD, for bringing this to the discussion. I think we can close this issue because we don't want to fix the behaviour here allowing users to type after a double click. The solution that appeals to me is just to close the right-hand panel. Any thoughts?

Aaah, I see you have suggested the same here.
@sophiepintoraetz @mollfpr any thoughts?

@MariaHCD @techievivek IMO the expected in https://github.com/Expensify/App/issues/15692 are the correct behavior.

I agree with @MariaHCD that the expected result in https://github.com/Expensify/App/issues/15692 is the correct behavior.

I'm actually going to take this conversation internally just to make sure we're being consistent in following programme expectations. Bear with me!

Thanks for your patience all! Given that https://github.com/Expensify/App/issues/15692 has the expected behaviour outlined, I am going to close this issue in favour of that one.
If you have made a proposal here and think your proposal will also fix https://github.com/Expensify/App/issues/15692 - please add it there and @s77rt will review them!
Additionally, the reporting bonus will be paid out to both @BhavyaKoshiya and @tienifr given that Conor and I missed the similarities between the two issues.


Add InList and NotInList

This PR does the following:

Add InList and NotInList for given types:

[x] Value
[x] Object
[x] Array
[x] String
[x] Number
[x] Boolean (just for completeness)
[x] Duration
[x] DateTime
-Since AssertionList rejects a single slice as a param, single array param in InList will behave like IsEqual and NotInList will behave like NotEqual. Addressed in commit https://github.com/gavv/httpexpect/commit/649ee8caf0e8c918aa9a2de8a8d6f6c5c3ec1cf7

https://github.com/gavv/httpexpect/blob/86f366a2d10b8a8ddd3cb1a9b2a5c00f37a1df68/assertion_validation.go#L186-L190
For issue https://github.com/gavv/httpexpect/issues/250

Coverage: 94.824% (+0.3%) from 94.555% when pulling b06cca5905d0d5af35101b4722bd37f3b6d8ef52 on fahimbagar:add-InList-and-NotInList into 86f366a2d10b8a8ddd3cb1a9b2a5c00f37a1df68 on gavv:master.

I think we should have separate check for zero-length list.
Such call will always fail, but AssertBelongs will look confusing.
Since it anyway will fail, let's forbid this case. If length of list is zero, let's fail with AssertUsage with error "unexpected empty list".

Since it anyway will fail, let's forbid this case. If length of list is zero, let's fail with AssertUsage with error "unexpected empty list argument".

Also would be nice to cover these usage checks with tests.

Addressed both, let me know if I miss out anything. Also removed unneeded canonArray in https://github.com/gavv/httpexpect/pull/256/commits/b7fc213ce722a152f674015a898290fe3475e965 and https://github.com/gavv/httpexpect/pull/256/commits/b885435c99ef42ba2d7c82b34021ef29f6de229c

Thanks!

Small follow-up commit: 8fe2ffba3601d60a56a162077d20f4a40833233b

PS. If you like chat format, welcome to our discord :)


Optimize by introducing stages

This optimization is big! :tada: Benchmark running time decreased by 74%.
Fixes #6

I got another idea how to optimize this even more, hold on.

Yeah! I finally got it finished.

bors r+
Thanks @Object905 @WaDelma @kvark for reviewing!


Could not inspect Wpf (System.Windows.DataTemplate) element using FlaUI

Describe the bug
I am trying to inspect an WPF element of type System.Windows.DataTemplate using FlaUI, but it is not getting listed on object tree.
The same object I have tried to identify with UFT and there it is getting identified.
So could you please suggest what changes do we need to do so that the element can be identified by FlaUI as well.
Screenshots
This is how it is getting identified using UFT object spy.

Here, element is not getting listed in the tree.

UFT seems to use the logical WPF tree to find this element, FlaUI (currently) solely relies on UIA. And for UIA, it is the duty of the WPF controls to correctly provide all elements. I guess you're using Infragistics, so you should inform them, that this button is not exposed to UIA.

@Roemer Yes, its an Infragistics control. So is it possible to expose it to UIA? Could you please suggest any document to do the same. I have checked with my dev team, but they don't have any idea for the same.


Modifiers Test

[ ] ! Negative modifier.
[ ] # Print modifier.
[ ] ? Doc modifier.
[ ] @ Debug modifier.
[ ] * Override modifier.
[ ] * Override panic! at release.
[ ] $ Exclusive modifier.
[ ] % Guard modifier.
[ ] % Guard block always true at release.
[ ] % Guard block never added at release.
[ ] % Guard block no branch activated.
[ ] + Always branch.
[ ] - Never branch.
[ ] _ Exclusive branch.

Not needed anymore. Bc Hyg


Accessories (zones) not showing up in home app (sort of)

I am new to Homebridge.
I just installed a Duo in a Vista 15P panel. All went well and it is set up correctly.
I'm running Homebridge and Envisalink-Ademco as a child bridge.
Homebridge v1.8.5 (HAP v0.12.3) (Envisalink-Ademco) is running on port 56950.
I have the Envisalink-Ademco plugin set up with 2 zones:

"zones": [
    {
        "name": "30 garage door West",
        "partition": "1",
        "zoneNumber": "30",
        "sensorType": "door",
        "bypassEnabled": false
    },
    {
        "name": "20 Vestibule S doors",
        "partition": "1",
        "zoneNumber": "20",
        "sensorType": "door"
    }
],

I have both Homebridge and Envisalink-Ademco added to the Home app as bridges. When adding Envisalink-Ademco plugin it asked me to set up both zones and assign them to rooms, which I did. However when I look at the appropriate room the only accessory that is shown is the alarm panel itself, no zones.
However, I can see the zones (and the panel) if I look at the following:

Home Settings / Home Hubs and Bridges / Evisalink-Ademco 6CEB / Accessories

But they are slightly greyed although I can click on them an perform edits and create Automations.
Ant ideas how I can get these accessories to appear in the main screen with all the other HomeKit accessories?
Thanks,
Martin

If you see the accessories in home hub and bridges, they are added to Home.
Sensor doesn't show up as "tiles" in the home app, they appear across the top of various rooms. There are way to change/alter the display, but that beyond the scope of this this plug-in. You may also look at application such as Eve Home Home Controller.


Poloniex API is seriously broken on the exchange side

This issue is probably not fixable by the Zenbot project, but is reported as an issue anyway to make it visible for both Poloniex and users of Zenbot. In short: Complaints should go to Poloniex
It proves that Poloniex is seriously broken. In attempt to reduce the nonce problems, I have done some experiments to use websockets for the API calls with support for it.
Websockets on Poloniex needs a lot of time to start. Therefore it is neccessary to use the REST API while waiting for WS (websockets) to get ready. As seen here, what Zenbot asks for (trade_cursor) it gets from REST call to Poloniex (restTrades / 1000)
2017-06-21 08:40:53  0.00010805 XRP-BTC  +0.0%  140.26k ---  -0.1074  0.0150  sold  7.98 XRP  886.29394 BTC  -11.4%  -5.3%
trade_cursor --><PHONE_NUMBER> ('2017-06-21 06:40:53')
restTrades ----><PHONE_NUMBER>000
restTrades / 1000 ---------> ('2017-06-21 06:40:53')

About 30 seconds later the rest API starts to stream trade data. As seen here, the time difference is quite substantial. The difference is an odd number of hours, minutes and seconds that cannot be expained as a time zone difference. This also means that the WS API is totally unsuitable for bot trading.
The human readable dates are for UTC timezone, BTW.
2017-06-21 08:41:24  0.00010799 XRP-BTC  -0.1%  228.74k ---  -0.1147  0.0151  sold  7.98 XRP  886.29394 BTC  -11.4%  -5.3%
wsReady:  true
trade_cursor ==><PHONE_NUMBER> ('2017-06-21 06:41:24')
wsTrades ======><PHONE_NUMBER>000
wsTrades / 1000 ===========> ('2017-06-21 03:14:31')

Any updates on this?
Is it true that poloniex's ws api lags?


write: incoherent naming for position properties

can u illustreate? why did u close it already?

Because I was thinking about append without prepend, but it is not a big deal at all... I hesitated to open it and I did it accidentally. And AFAIK there is no way to rollback with issues


Add a Database to Your Business Application

Tutorial URL: https://developers.sap.com/tutorials/cp-apm-03-add-database.html
After successfully following first few steps and building successfully, build fails once initial data files and .hdbtabledata file are added and built.

12:09:06 (HDB)      Merged from "src/gen/CATALOGSERVICE_BOOKS.hdbcds"     Deploying "$cds.merge/CATALOGSERVICE_AUTHORS"...      Merged from "src/gen/CATALOGSERVICE_AUTHORS.hdbcds"     Deploying "$cds.merge/LOCALIZED_CATALOGSERVICE_BOOKS"...      Merged from "src/gen/LOCALIZED_CATALOGSERVICE_BOOKS.hdbcds"      Error: com.sap.hana.di.tabledata: The target table "MY_BOOKSHOP_ORDERS" does not have a "BUYER" column; check your "import_columns" definitions in the "import_settings" section [8251510]       at "src/csv/Data.hdbtabledata" (34:3)    Error: com.sap.hana.di.tabledata: Deploying "src/csv/Data.hdbtabledata.expand"... failed [8212145]      at "src/csv/Data.hdbtabledata.expand" (0:0)    Error: Worker 12 has encountered an error; all remaining jobs will be canceled [8214600]
12:09:06 (HDB)     Deploying "$cds.merge/LOCALIZED_MY_BOOKSHOP_BOOKS"... ok  (3s 417ms)    Deploying "$cds.merge/LOCALIZED_MY_BOOKSHOP_AUTHORS"... ok  (3s 416ms)    Deploying "$cds.merge/CATALOGSERVICE_BOOKS"... ok  (3s 415ms)    Deploying "$cds.merge/CATALOGSERVICE_AUTHORS"... ok  (3s 415ms)    Deploying "$cds.merge/LOCALIZED_CATALOGSERVICE_BOOKS"... ok  (3s 414ms)   Error: Processing work list... failed [8212102]   Make failed (5 errors, 3 warnings): tried to deploy 4 files, undeploy 0 files, redeploy 10 dependent files   Error: Making... failed [8211605] Error: Starting make in the container "BOOKSHOP_BOOKSHOP_DB_HDI_CONTAINER_83" with 4 files to deploy, 0 files to undeploy... failed [8214168]
12:09:06 (HDB) Deployment to container BOOKSHOP_BOOKSHOP_DB_HDI_CONTAINER_83 failed - error: HDI make failed [depId].
12:09:06 (HDB) Error: HDI make failed
12:09:06 (HDB) (10s 132ms)
12:09:06 (HDB) Deployment failed with exit code: 1
12:09:06 (HDB) STRUCTURED LOG CHECKSUM be4bc63516cea14e8337fd7d9038c08872dfc530fc562c5565d789f30b0c163a
12:09:06 (HDB) STRUCTURED LOG SIZE36581
12:09:06 (HDB) SENDING STRUCTURED LOG
12:09:06 (HDB) Ended because of error: Deployment failed with exit code: 1
12:09:06 (HDB) Build command failed : Please check the Problem view for more information.: hdi-build operation failed: Deployment failed with exit code: 1
12:09:06 (HDB) Build of /bookshop/db failed.

Above are the warnings and errors in Web IDE. Unsure why BUYER is not importing as it is under "import_columns" in Data.hdbtabledata.
Using a trial account in Cloud Foundry region: Europe (Frankfurt): api.cf.eu10.hana.ondemand.com
SAP HANA Schemas & HDI Containers available and active instance in Cockpit.

Issue resolved.
By editing bookshop/db/src/data-model.cds to include "buyer : String;" under Orders entity, then errors emerged for date missing from MY_BOOKSHOP_ORDERS so updated to include "date : Date;"
Rebuilt bookshop/db and build was successful. Data now visible when application is run.

See image above for working version of bookshop/db/src/data-model.cds
Closing issue. Thank you.


Add option ot mark the build item as complete if all tests passed

Fixes #6006

@martonmiklos thanks for looking at this, and apologies for the delayed response.
Looking at the new model field implementation here, I think that it should be an option against the BuildOrder instance, rather than the Part instance.
@matmair @wolflu05 any thoughts or preferences here?

@martonmiklos thanks for looking at this, and apologies for the delayed response.

No worries.

Looking at the new model field implementation here, I think that it should be an option against the BuildOrder instance, rather than the Part instance.
@matmair @wolflu05 any thoughts or preferences here?

I see your point, but I would say both options could make sense. In my use case most of the products got packaged as the part of the last teststep so closing the build order when all units passed makes sense. Enabling the "autoclose" feature for each build order created would not makes too much sense in this case.

@martonmiklos I was envisioning a much "simpler" approach, where you can set the "default value" for the "auto close" option as a global setting, but then adjust on a per-build level as needed.
Having this as a "per part" option seems a bit messy (for lack of a better word) especially as most parts cannot be "built" (they are components, e.g. ) and so the option does not even make sense for them. At a bare minimum the option should be hidden for parts which are not "assemblies".
The issue here is that we do not have any other "dependent attributes" - the attributes such as "purcahsesable", "trackable" , "salable" (etc) are all independent of each other.

@martonmiklos thinking about this further, I believe that this would be much better as a custom plugin. This way we do not need to add new internal logic to multiple points in the code to implement a feature which most people would disable anyway.
We have a comprehensive set of event triggers  which could be hooked into by a plugin to "auto-complete" a build when the tests are completed. And, the plugin could expand with additional complexity as required, without needing to change core behaviour.

@martonmiklos I'm going to close this out, but if you want to discuss further how to implement this as a plugin I'd be happy to assist


chore(deps-dev): updates dependency constraints

Makes the package work with Dart 3 and newer versions of its dev_dependencies. The code was also modified to fit the newer version of the linter used.

Thanks for your contribution, @tomasaquiles-ca!


A lot of conflicting dependencies

I am getting constantly conflicting dependency issues, such as Clip, Taichi, etc:
The conflict is caused by:
    The user requested torch==2.0.1
    accelerate 0.19.0 depends on torch>=1.6.0
    carvekit-colab 4.1.0 depends on torch
    controlnet-aux 0.0.7 depends on torch
    functorch 0.2.1 depends on torch<1.13 and >=1.12.1

I think both the Readme file and the Requirments.txt file do not correlate with each other, both mention different dependency versions.

Thank you for pointing out the issue. We've updated the installation code. Please check it out.


Update documentation for RHEL 8

Hi team,
I moved this from here: https://github.com/MicrosoftDocs/sql-docs.es-es/issues/74
@sirio3mil commented 9 hours ago — with docs.microsoft.com
This are more accurate commands for RHEL 8 using dnf instead of yum
dnf -y install dnf-plugins-core
dnf config-manager --add-repo https://packages.microsoft.com/config/rhel/8/mssql-server-2019.repo
dnf config-manager --add-repo https://packages.microsoft.com/config/rhel/8/prod.repo
ACCEPT_EULA=Y dnf -y install mssql-server

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 3b543b57-f397-779d-6fe4-1bc2ecd3bdca
Version Independent ID: e274a0f3-ec74-e809-f4d3-515782b29a92
Content: RHEL: Install SQL Server on Linux - SQL Server
Content Source: docs/linux/quickstart-install-connect-red-hat.md
Product: sql
Technology: linux
GitHub Login: @VanMSFT
Microsoft Alias: vanto

@sirio3mil
Thank you for the submission. We're reviewing.
@CeciAc  thank you for moving it int our queue

Python2 reached EOL on 31st Jan, 2020. So still SQL Server needs Python2? When it will be switched to Python3?

Thanks! Currently looking into this

Since we've tested with yum, and not dnf, we will not be updating our documentation. The customer can choose to use dnf, but there are no plans for us to test this.
FYI - @CeciAc Thanks!
@Susanthab - We're looking for guidance on Python3 in the future, but currently, SQL Server on RHEL 8 only supports Python2.


User main login and adding AETs

(Please use pg (postgresql) library for all SQL related stuff in Node.)
(PLEASE USE QUERY PARAMETERS!!!!!!!!!!! (e.g. $1::text))

[x] Create AET interface on server (the model's name is NiicAet, see /public/src/fe-models/NiicAet)

[x] - [ ] Add a /login route into the users router (the full route then becomes /api/users/login) where you do:
You get:

{
     username: "…"
}

[x] Check for user in DB
[x] If user doesn't exist ⇒ respond with status code 400
[x] If user exists get AETs from DB and map them to an array of the NiicAet interface
[x] Respond with 200 and the following body:

{
     username: "…",
     aets: […]
}

[x] Add an AET route for adding an AET. The POST route should be /api/aets/ and the body

{
    username: "…",
    title: "…",
    description: "…",
    (etc., just get all important info for your interface.)
}

[x] The route should then add the AET to the user if the username is found, otherwise respond with 400. If the user is found and the AET was added, answer with http code 201 and with body:

{
    id: …
}

finished


fix: patch docstrings in signature help

Format params in signature help content also:
Before:

After:

Thanks!


Retry to run an autoupdater up to 3 times. close #486

Deploy preview for landscape ready!
Built with commit 6ba4302634cdfce0bbf383b76c1e32f5fb9414f1
https://deploy-preview-488--landscape.netlify.com


Python debugger not working properly in 1.88 with Git Bash shell

Since I updated to VSCode 1.88 im facing issues with debugging python on windows.
Im using
Environment
Version: 1.88.1 (user setup)
Commit: e170252f762678dec6ca2cc69aba1570769a5d39
Date: 2024-04-10T17:41:02.734Z
Electron: 28.2.8
ElectronBuildId: 27744544
Chromium: 120.0.6099.291
Node.js: 18.18.2
V8: 12.0.267.19-electron.0
OS: Windows_NT x64 10.0.22631
git version 2.44.0.windows.1
"terminal.integrated.defaultProfile.windows": "Git Bash"
If i run the following launch configuration
{
            "name": "Python: Current File",
            "type": "debugpy",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "justMyCode": true
        },

launching test.py
print('hello world')

with a breakpoint , the first time i launch the debugger i get the following commandline output
$/usr/bin/env c:\\mygits\\deepose\\.venv\\Scripts\\python.exe c:\\Users\\IvanL\\.vscode\\extensions\\ms-python.debugpy-2024.4.0-win32-x64\\bundled\\libs\\debugpy\\adapter/../..\\debugpy\\launcher 52743 -- C:\\mygits\\deepose\\python\\experimental\\test.py
which is correct. If I then hit the restart debug command, i get
$^C
$anL\\.vscode\\extensions\\ms-python.debugpy-2024.4.0-win32-x64\\bundled\\libs\\debugpy\\adapter/../..\\debugpy\\launcher 52831 -- C:\\mygits\\deepose\\python\\experimental\\test.py
bash: anL\.vscode\extensions\ms-python.debugpy-2024.4.0-win32-x64\bundled\libs\debugpy\adapter/../..\debugpy\launcher: No such file or directory

which is incorrect, for some reason the
/usr/bin/env c:\\mygits\\deepose\\.venv\\Scripts\\python.exe c:\\Users\\Iv
got peeled of from the command line input.

Version: 1.88.1 (user setup)
Commit: e170252f762678dec6ca2cc69aba1570769a5d39
Date: 2024-04-10T17:41:02.734Z
Electron: 28.2.8
ElectronBuildId: 27744544
Chromium: 120.0.6099.291
Node.js: 18.18.2
V8: 12.0.267.19-electron.0
OS: Windows_NT x64 10.0.17763
After I updated VSC this morning, it won't be able to debug the python code anymore,
The last two lines of the messages look like these:
[441C:3D80][2023-06-08T11:47:40]i001: Burn v<IP_ADDRESS>18, Windows v10.0 (Build 17763: Service Pack 0), path: C:\WINDOWS\Temp{15A7C23D-BD96-4211-9F47-AEAC065355A1}.cr\VC_redist.x64.exe
^
SyntaxError: invalid decimal literal

but all work good if default terminal is cmd

I have this problem too. If someone finds a solution or if it's fixed in the next version, please tell me.
for now, I'm using "console": "internalConsole" in launch.json, which lets me debug.
but the internal console doesn't look as nice as my custom Git Bash terminal, maybe i will used the vscode1.87 instead

i face the same in java on vscode-1.89. luckily,  vscode-1.90 fixed this problem today.

Hi! Looks like this might be fixed from the last comment, if not please comment and we can reopen. Thanks!


chore: remove verify_cell_kzg_proof

This PR removes single cell verification like the spec did:

https://github.com/ethereum/consensus-specs/pull/3830

Fixes #70. Depends on #80.

Thanks! Can you also remove them from consensus_test_vectors ?

Oops yes of course. I'll fix this!


UX Metrics - Customer/User statistics

We should collect customer and user statistics automatically, so we have reliable and current data to tailor our product strategy and to plan features more accurately.
For that we need...

[ ] write/present the collected data readable/accessible for UX/marketing
[ ] it should be filter and search enabled

Possible data to collect (not a final list):

[ ] How many users does a customer have?
[ ] How many customers have more than X users?
[ ] How many customers have more than X instances?
[ ] How many customers have an account but never logged into console? (dead accounts)
[ ] How many customers use multi tenancy?
[ ] How many customers use feature X?
[ ] What technologies are used with ZITADEL (in apps, for example)?
[ ] nice to have: multi-argument-filter: How many Multi-Tenancy customers use feature X?
[ ] nice to have: demographic data (i know, it's hard to come by, but region/country would help quite a bit to see what language we could implement next, look for cultural differences to optimize UX in certain regions, marketing targets, etc..

close in favour of internal issue


querier: per-endpoint configuration

The Thanos Querier component supports basic mTLS configuration for internal gRPC communication. This works great for basic use cases but it still requires extra forward proxies to make it work for bigger deployments.
This PR add support for per-endpoint TLS configuration in Thanos Query Component for internal gRPC communication. Here we are introducing a new CLI option --endpoints.config, which will accept the content/path to a yaml file which contains a list as follows:
- name: ""
  tls_config:
    cert_file: ""
    key_file: ""
    ca_file: ""
    server_name: ""
  endpoints: []
  endpoints_sd_files:
    - files: []
  mode: ""

Changes
Based on proposal #4377

Added new --endpoint.config cli option
Added new file pkg/store/config.go to load config from cli options (in list form)
Few changes in query.go to iterate over the list items

Verification
Added e2e tests for --endpoints.config with mutual TLS.

I am stuck with testing mTLS in querier.

I've created certs using this script.

Without mTLS all e2e-tests are passing in this feature branch.

I've also tried enabling one way TLS (server side only OR client side only) but got the same error.

I've also tested mTLS on the main branch with same TLS credentials but tests are failing with the same err log as on this branch.

14:00:33 Killing querier-1
14:00:33 querier-1: level=warn name=querier-1 ts=2021-07-28T14:00:33.424080098Z caller=storeset.go:574 component=storeset msg="update of store node failed" err="getting metadata: fetching store info from e2e_test_query_config-sidecar-alone:9091: rpc error: code = DeadlineExceeded desc = latest balancer error: connection error: desc = \"transport: authentication handshake failed: tls: first record does not look like a TLS handshake\"" address=e2e_test_query_config-sidecar-alone:9091
14:00:33 Killing sidecar-ha2
14:00:34 Killing prometheus-ha2
14:00:34 Killing sidecar-ha1
14:00:34 Killing prometheus-ha1
14:00:34 Killing sidecar-remote-and-sidecar
14:00:35 Killing prometheus-remote-and-sidecar
14:00:35 Killing sidecar-alone
=== CONT  TestQueryWithEndpointConfig
Error:     query_test.go:283: query_test.go:283:

         unexpected error: unable to find metrics [thanos_store_nodes_grpc_connections] with expected values. Last error: <nil>. Last values: [4]

Finally I was able to test mutual TLS in querier. Earlier I was configuring tls only in querier for both client and server. Which was wrong as in our case sidecar is the server and after configuring the same in sidecar it worked 😄.
This PR needs another round of review.
PS: Failing tests seems unrelated as all tests are passing locally.

rebased successfully to main 😵💫

[ ] move endpointConfig to query/config.go
[ ] let's try to have one function that loads the config (if non empty) and merge flags into one endpoint config - might be cleaner
[ ] try to have one endpoint set in cmd/thanos/query.go

This PR works fine (see approval) but there is a suggestion to ensure a single storeset. The work for which would be carried out on another PR.
This was my Google Summer of Code 2021 project. ❤
Closing


build(pkg): v0.7.1

PR Checklist

[x] Fix linting errors
[x] Label has been added

Change information
fix #73

@WittBulter multi select placeholder works now but single select placeholder not

@yinjs upgrade to v0.7.2 .


Replace AssetTransferred with AllocationUpdated event

This emits a close-to-minimal amount of information when transfer or claim is called: the information is sufficient for clients to construct a new AssetOutcome for a given channel in a given AssetHolder. They need this up-to-date data in order to successfully call transfer in future.
Example 1: my counterparty concluded, pushed, and transferred their own money out of a channel. Now I want to transfer my money out, but my view of the outcome on chain is out of date and my transaction will fail if I don't keep it fresh.
Example 2: someone called concludePushOutcomeAndTransferAll, and I want to be sure all the money got paid out. It's not the only way of doing this, but I can catch the AllocationUpdated event, feed it into the new typescript functions this PR introduces, and infer which payouts have been made.

[x] contracts updated with new event type
[x] off-chain version of _computeNewAllocation. We could go down the pureEVM route, but for now I just reimplemented it in typescript and
wrote a test that uses random data to check against the solidity version.
[x] existing tests updated to catch and assert on new event
[x] AssetTransferred deprecated in nitro-protocol and the documentation
[x] Chain Service updated to watch for the new event and call into computeNewAllocation to infer the data it wants to understand.
Closes #3046

@andrewgordstewart thanks for the detailed review. I think I addressed all of your points in 70c01d6 to 57f8357. I just need to solve the merge conflicts next.

Looking at the gas artifacts for concludePushOutcomeAndTransferAll on this branch: - for 100 TOK payouts we need 2379417 gas . And on a recent, prior test run on master  2566892 gas.
This is consistent with saving approx 1893 gas per payout (as expected). If we get into the thousands of allocation items, we are now saving millions of gas overall.


CPU usage in Mem Usage chart

Hi,
i imported your prepared grafana dashboard via https://grafana.com/grafana/dashboards/18226-frigate/ and I found an error in one of the queries.
In the Memory Usage chart is a reference to cpu usage, which should be mem usage. You need to replace cpu by mem in this query:

Thank you for your really nice and helpful tool. :)
Best wishes
Konni

Hi @IAmKonni ,
I have updated the dashboard with your fix at https://grafana.com/grafana/dashboards/18226-frigate/
Thanks for finding this issue and letting me know!


updated integrations for homepage

Added SushiSwap to 'Exchanges'
Updated Balancer DPI pool link, added link for INDEX
'Prices & Analytics' section now evenly distributed

Noted, will for next time


New version: OpenTofu.Tofu.Beta version 1.6.0-beta5

Pull request has been created with Komac v1.11.0 :rocket:
Microsoft Reviewers: Open in CodeFlow

@wingetbot waivers Add Validation-Executable-Error


Adding Support For Multiple Note Accounts

Summary of changes
Provide a detailed description of proposed changes.

Adding support for multiple note accounts at the same time.
Indexing encrypted notes by account public key.
Allow creating note account on the wallet dropdown menu.
Update the note account when the user switch account from a third-party wallet (e.g. MetaMask).

This includes aborting the sync note progress when users switch their wallet account.

Adding clear cache option (with the cached size) on the menu setting dropdown.

Proposed area of change
Put an x in the boxes that apply.

[x] apps/bridge-dapp
[x] apps/hubble-stats
[ ] apps/stats-dapp
[ ] apps/webbsite
[ ] apps/faucet
[ ] apps/tangle-website
[x] libs/webb-ui-components

Reference issue to close (if applicable)
Specify any issues that can be closed from these changes (e.g. Closes #233).

Closes https://github.com/webb-tools/webb-dapp/issues/1730
Closes https://github.com/webb-tools/webb-dapp/issues/1692
Closes https://github.com/webb-tools/webb-dapp/issues/1658
Closes https://github.com/webb-tools/webb-dapp/issues/1711

Screen Recording
If possible provide a screen recording of proposed change.
Switching note account when switching account from a third-party wallet
https://github.com/webb-tools/webb-dapp/assets/60747384/5f439e81-3f13-4018-8275-fed8bf9b6df3
The encrypted notes are updated based on the active note account
https://github.com/webb-tools/webb-dapp/assets/60747384/fd36885b-2df8-4137-8d55-303b9e32fbd9

Code Checklist
Please be sure to add .stories documentation if any additions are made to libs/webb-ui-components.

[x] I have added tests that prove my fix is effective or that my feature works
[x] I have added necessary documentation (if appropriate)

All requested changes have been addressed. I am going to merge this PR.


named: predicate is never registered.

I'm not sure if this is intentional or not, since the named-search-[gs]et commands are in the pk command-line.
AFAICT it's a single-line change to register it and it works fairly well when changed to be registered, so I guess I'm curious if there's a reason this predicate isn't enabled.

Not intentional. I think it was lost in a cleanup change.


Maintenance mode page

https://github.com/CartoDB/cartodb-platform/issues/5632
MERGE FIRST https://github.com/CartoDB/cartodb/pull/14960

Acceptance: the migration and rakes work fine, but we have found an error on the dashboard page

@oleurud In case you can continue with the acceptance, it is ready.

The problem is still happening:
if the user is logged, when she/he goes to the dashboard https://oleurud2com.carto-staging.com/u/oleurud2com-1/dashboard/ an infinite redirection starts:

retest this please

Retried the failing acceptance case (user org accessing the dashboard URL) and it works \0/~


Add ⍥

Introduced into Dyalog APL 18.0 which is just about to be released.

Thank you for contributing @abrudz!


Benchmarks: Publish benchmarks on TechEmpower

WIP — https://github.com/TechEmpower/FrameworkBenchmarks/pull/6447

PR merged. Hence closing this issue.


TS-4824: gcc enumeral and non-enumeral type in conditional expression

👍 +1:

Linux build successful! See https://ci.trafficserver.apache.org/job/Github-Linux/634/ for details.

FreeBSD build successful! See https://ci.trafficserver.apache.org/job/Github-FreeBSD/738/ for details.


Bat files

After I downloaded the (v1.3.3, including Google Services and Play Store) and unzipped I can't find the bat files.
RG405M-FlashPartitions.bat
EraseUserData.bat
I'm using Win 11

hello
You can grab it from the github page
https://github.com/TheGammaSqueeze/GammaOS.git

I had the same problem. Can't find it

https://www.techadvisor.com/article/734213/how-to-show-or-hide-file-extensions-in-windows-10.html


Report: pin the title and navigation buttons

Pin the title and navigation buttons so that they don't disappear when scrolling.

You mean this? @ol-nata


Add support for genders

Basic male and female cisgenders
additional non-binary genders

Hey, mate @billythakidd04 , sorry for the late reply, so busy lately.
I'll appreciate it if you make a PR for this, and I can help you with reviewing it.

@bxcodec hope this is it
https://github.com/bxcodec/faker/pull/104

Thanks @musinit


HTTP 500 errors should be retried

Bug Report
During maintenance windows, when pod, km or agent is down, HTTP calls can result in HTTP 500. Such calls need to be retried.
For instance, on one of our bots, we got:
2021-04-20 18:26:26.546  INFO 1 --- [_DatafeedThread] c.s.b.c.s.datafeed.impl.DatafeedLoopV1   : Recreate a new datafeed and try again
2021-04-20 18:26:26.684  INFO 1 --- [_DatafeedThread] .s.b.c.r.r.Resilience4jRetryWithRecovery : Retry in 64.0s...
2021-04-20 22:01:45.235  INFO 1 --- [_DatafeedThread] c.s.b.c.s.datafeed.impl.DatafeedLoopV1   : Recreate a new datafeed and try again
2021-04-20 22:01:45.389 ERROR 1 --- [_DatafeedThread] c.s.b.s.s.DatafeedAsyncLauncherService   : An API error has been received while starting the Datafeed loop in a separate thread, please check error below:

com.symphony.bdk.http.api.ApiException: {"code":500,"message":"Received an error when calling a pod endpoint"}
        at com.symphony.bdk.http.jersey2.ApiClientJersey2.invokeAPI(ApiClientJersey2.java:168) ~[symphony-bdk-http-jersey2-2.1.3.jar:2.1.3]
        at com.symphony.bdk.gen.api.DatafeedApi.v4DatafeedCreatePostWithHttpInfo(DatafeedApi.java:479) ~[symphony-bdk-core-2.1.3.jar:2.1.3]
        at com.symphony.bdk.gen.api.DatafeedApi.v4DatafeedCreatePost(DatafeedApi.java:414) ~[symphony-bdk-core-2.1.3.jar:2.1.3]
        at com.symphony.bdk.core.service.datafeed.impl.DatafeedLoopV1.createDatafeedAndPersist(DatafeedLoopV1.java:144) ~[symphony-bdk-core-2.1.3.jar:2.1.3]
        at com.symphony.bdk.core.retry.RetryWithRecovery.executeOnce(RetryWithRecovery.java:105) ~[symphony-bdk-core-2.1.3.jar:2.1.3]
        at io.github.resilience4j.retry.Retry.lambda$decorateCheckedSupplier$3f69f149$1(Retry.java:137) ~[resilience4j-retry-1.6.1.jar:1.6.1]
        at io.github.resilience4j.retry.Retry.executeCheckedSupplier(Retry.java:419) ~[resilience4j-retry-1.6.1.jar:1.6.1]
        at com.symphony.bdk.core.retry.resilience4j.Resilience4jRetryWithRecovery.execute(Resilience4jRetryWithRecovery.java:65) ~[symphony-bdk-core-2.1.3.jar:2.1.3]
        at com.symphony.bdk.core.service.datafeed.impl.DatafeedLoopV1.createDatafeed(DatafeedLoopV1.java:139) ~[symphony-bdk-core-2.1.3.jar:2.1.3]
        at com.symphony.bdk.core.service.datafeed.impl.DatafeedLoopV1.recreateDatafeed(DatafeedLoopV1.java:127) ~[symphony-bdk-core-2.1.3.jar:2.1.3]
        at com.symphony.bdk.core.retry.RecoveryStrategy.runRecovery(RecoveryStrategy.java:48) ~[symphony-bdk-core-2.1.3.jar:2.1.3]
        at com.symphony.bdk.core.retry.RetryWithRecovery.handleRecovery(RetryWithRecovery.java:159) ~[symphony-bdk-core-2.1.3.jar:2.1.3]
        at com.symphony.bdk.core.retry.RetryWithRecovery.executeOnce(RetryWithRecovery.java:112) ~[symphony-bdk-core-2.1.3.jar:2.1.3]
        at io.github.resilience4j.retry.Retry.lambda$decorateCheckedSupplier$3f69f149$1(Retry.java:137) ~[resilience4j-retry-1.6.1.jar:1.6.1]
        at io.github.resilience4j.retry.Retry.executeCheckedSupplier(Retry.java:419) ~[resilience4j-retry-1.6.1.jar:1.6.1]
        at com.symphony.bdk.core.retry.resilience4j.Resilience4jRetryWithRecovery.execute(Resilience4jRetryWithRecovery.java:65) ~[symphony-bdk-core-2.1.3.jar:2.1.3]
        at com.symphony.bdk.core.service.datafeed.impl.DatafeedLoopV1.readDatafeed(DatafeedLoopV1.java:121) ~[symphony-bdk-core-2.1.3.jar:2.1.3]
        at com.symphony.bdk.core.service.datafeed.impl.DatafeedLoopV1.start(DatafeedLoopV1.java:86) ~[symphony-bdk-core-2.1.3.jar:2.1.3]
        at com.symphony.bdk.spring.service.DatafeedAsyncLauncherService.uncheckedStart(DatafeedAsyncLauncherService.java:88) ~[symphony-bdk-core-spring-boot-starter-2.1.3.jar:2.1.3]
        at com.symphony.bdk.http.api.tracing.MDCUtils$MdcRunnable.run(MDCUtils.java:59) ~[symphony-bdk-http-api-2.1.3.jar:2.1.3]
        at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]

Expected Result:
HTTP 500 errors should be retried, see: https://github.com/finos/symphony-bdk-java/blob/main/symphony-bdk-http/symphony-bdk-http-api/src/main/java/com/symphony/bdk/http/api/ApiException.java#L81
Actual Result:
HTTP 500 errors lead to bot failing.

@symphony-elias i am a newbie to open source contribution, can i start working on this issue.

No problem @SivaTharun, your contribution will be very welcome!
Do you need any help before starting?

Thanks @symphony-thibault for following up, i just need to know how to reproduce the above scenario, if you can point me to  a unit test, which asserts for the 500 error from DatafeedAsyncLauncherService class (or) you can point to me to the resource for reproducing the above exception.


Drop deprecated arguments for html attributes of form components

Replaces #986
@jelhan took your PR, reverted the button#buttonType removal for now, to unblock the PR, and also removed the attributeBindings of control components.

Thanks a lot for pushing this one forward. Need to make sure that we don't forget to add warnings for the removed arguments of the control components. As we don't have deprecations for them, these ones would profit most from such warnings.


dataset problem -  Project stuck in graph validating state

Dataset/group this task is for:
Project stuck in graph validating state
In addition, this is a submission which I would like to delete. Hence, if possible, unsticking it and then deleting the submission (not the project) would be great.
https://contribute.data.humancellatlas.org/projects/detail?uuid=a4f154f8-5cc9-40b5-b8d7-af90afce8a8f&tab=project
https://github.com/ebi-ait/hca-ebi-wrangler-central/issues/853

@ami-day to close or to double-check

The submission status is Metadata Invalid
@ami-day to check

This is sorted.


add onChange callback

I needed to listen for value changes,
this PR introduces onChange callback

closing this one, could not make it work

closing this one, could not make it work

Reopen it again and I'll merge it


Excessive re-creation of all Foreign Key, index and unique constraints, plus primary key sequence default values in plugin 2.x with postgres 9.5.x

I recently migrated from grails 2.5 to grails 3.1. My datamigration changelogs on the existing database are filled with recreations of all my pre-existing Foreign Key, index and unique constraints, plus postgres primary key sequences.
I had a few repeated, re-recreations in each diff in the 1.x plugin around booleans, but they were manageable to hand delete each time. With the 2.x plugin,  I get over 600 lines of re-creations on each diff, interspersed with the real changes. It makes it very difficult to use this version of the plugin to manage my database.
Furthermore, I tested to see if this was purely a problem of moving from from database-migration plugin 1.x to 2.x. I backed up my old data, and let the 2.0.0 data-migration plugin take my existing changelogs to recreate my database schema from scratch. The resulting db schema looks correct for all tables, foreign keys, uniques, indexes, sequences, etc. (great!)
Then, I ran dbm-gorm-diff immediately without making any other changes to my code base.
It spits out the same 600+ lines recreating all my Foreign Key, index and unique constraints, plus postgres primary key sequences.
Then, I tried dbm-update with these 600 lines to see if they could be applied and not be recreated in the future. However, running these changes raises the following exception after 100 lines:
ERROR liquibase - changelog.groovy: changelog_049_recreate_test.groovy::1479746974168-25::myuser (generated): Change Set changelog_049_recreate_test.groovy::1479746974168-25::myuser (generated) failed.  Error: ERROR: constraint "FK_b7lh7f3gvmok8q8f8a5i09m05" of relation "my_table" does not exist [Failed SQL: ALTER TABLE public.my_table DROP CONSTRAINT "FK_b7lh7f3gvmok8q8f8a5i09m05"]
Command execution error: Migration failed for change set changelog_049_recreate_test.groovy::1479746974168-25::myuser (generated):
Reason: liquibase.exception.DatabaseException: ERROR: constraint "FK_b7lh7f3gvmok8q8f8a5i09m05" of relation "my_table" does not exist [Failed SQL: ALTER TABLE public.my_table DROP CONSTRAINT "FK_b7lh7f3gvmok8q8f8a5i09m05"]
I investigated in my newly created schema, and the constraint in question was named in the db:
FK_6c1rtv3qh3phfrobas8tdrwxh
And the plugin diff is trying to use this in the changeset:
FK_b7lh7f3gvmok8q8f8a5i09m05
Hence the error.
What's even more confusing, is that the plugin was able to generate the correct fk constraint name in 12 changesets leading up this one.
So, I think this may represent 2 distinct bugs in the 2.x.x database migration plugin
Ideas?
Environment Information:
Old:
grails 2.5.5
liquibase database-migration:1.4.1
org.postgresql:postgresql:9.4.1207
postgresql-extensions:4.6.1
hibernate4:4.3.10
org.jadira.usertype:usertype.core:4.0.0.GA
Postgres 9.5
Java 8
Ubuntu 14.04LTS
New:
grails 3.1.14
runtime 'org.grails.plugins:database-migration:2.0.0'
compile 'org.liquibase:liquibase-core:3.5.3
org.postgresql:postgresql:9.4.1212
postgresql-extensions:4.6.8
compile "org.grails.plugins:hibernate4:5.0.12"
compile "org.hibernate:hibernate-core:4.3.11.Final"
compile "org.hibernate:hibernate-ehcache:4.3.11.Final", {
exclude module: 'ehcache-core'
}
compile("org.jadira.usertype:usertype.core:4.0.0.GA") {
exclude group: 'org.hibernate', module: 'hibernate-entitymanager'
}
//BEGIN spring-security-ui depends on explicit hibernate4:5.0.x
compile 'org.grails:grails-datastore-core:5.0.12.RELEASE'
compile 'org.grails:grails-datastore-gorm-support:5.0.12.RELEASE'
compile 'org.grails:grails-datastore-gorm:5.0.12.RELEASE'
compile 'org.grails:grails-datastore-simple:5.0.12.RELEASE'
compile 'org.grails:grails-datastore-gorm-hibernate4:5.0.12.RELEASE'
compile 'org.grails:grails-datastore-gorm-hibernate-core:5.0.12.RELEASE'
Postgres 9.5
Java 8
Ubuntu 14.04LTS

The 1.x versions of this plugin is in no longer being maintained. Most likely your problems are with liquibase which would require you to upgrade to Grails 3 and DBM 2.x or 3.x

@jameskleeh Sorry, a keyboard short cut key published my post while I was still editing. Please see my updated issue report.

Part of this is a duplicate of https://github.com/grails-plugins/grails-database-migration/issues/95
Essentially you should raise issues with liquibase-hibernate. The plugin is working as designed, it is the liquibase side that is not working as you would expect.
My advice is to create your changesets manually until the issues are resolved

ok, thanks

Looks like they were able to fix the problem for the hibernate5 version of liquibase-hibernate:
https://github.com/liquibase/liquibase-hibernate/issues/129

@jameskleeh given that the Grails 2.x version of this plugin currently works fine with hibernate4. Is it possible to roll back to a previous, correctly functioning, liquibase-hibernate dependency in the Grails 3.x database migration plugin?

@edwardotis Previous versions had other issues that were resolved, so I don't see the benefit in doing so

@jameskleeh ok, fair point

I added a pull request to liquibase-hibernate
https://github.com/liquibase/liquibase-hibernate/pull/138

Fixed by https://github.com/grails-plugins/grails-database-migration/pull/175