feat(k8s/volume): add nfs volume creation

Close #4419

/azp run

/azp run

@pull-dog down

@pull-dog down

@pull-dog up

@pull-dog up

To recap concepts and what we were doing/are doing now.
PersistentVolumes & PersistentVolumeClaims
From Persistent Volumes documentation

Introduction

Managing storage is a distinct problem from managing compute instances. The PersistentVolume subsystem provides an API for users and administrators that abstracts details of how storage is provided from how it is consumed. To do this, we introduce two new API resources: PersistentVolume and PersistentVolumeClaim.
A PersistentVolume (PV) is a piece of storage in the cluster that has been provisioned by an administrator or dynamically provisioned using Storage Classes. It is a resource in the cluster just like a node is a cluster resource. PVs are volume plugins like Volumes, but have a lifecycle independent of any individual Pod that uses the PV. This API object captures the details of the implementation of the storage, be that NFS, iSCSI, or a cloud-provider-specific storage system.
A PersistentVolumeClaim (PVC) is a request for storage by a user. It is similar to a Pod. Pods consume node resources and PVCs consume PV resources. Pods can request specific levels of resources (CPU and Memory). Claims can request specific size and access modes (e.g., they can be mounted ReadWriteOnce, ReadOnlyMany or ReadWriteMany, see AccessModes).
While PersistentVolumeClaims allow a user to consume abstract storage resources, it is common that users need PersistentVolumes with varying properties, such as performance, for different problems. Cluster administrators need to be able to offer a variety of PersistentVolumes that differ in more ways than just size and access modes, without exposing users to the details of how those volumes are implemented. For these needs, there is the StorageClass resource.

Lifecycle of a volume and claim

Provisioning
There are two ways PVs may be provisioned: statically or dynamically.
Static
A cluster administrator creates a number of PVs. They carry the details of the real storage, which is available for use by cluster users. They exist in the Kubernetes API and are available for consumption.
Dynamic
When none of the static PVs the administrator created match a user's PersistentVolumeClaim, the cluster may try to dynamically provision a volume specially for the PVC. This provisioning is based on StorageClasses: the PVC must request a storage class and the administrator must have created and configured that class for dynamic provisioning to occur. Claims that request the class "" effectively disable dynamic provisioning for themselves.

While PVCs are easy to understand and straightforward to use, there is a important nuance regarding PVs.

A PersistentVolume (PV) is a piece of storage in the cluster that has been provisioned by an administrator or dynamically provisioned using Storage Classes

Today (this PR excluded) we are only exploiting the dynamic provisioning concept using StorageClasses when we are adding a volume while creating an application, and we are reusing existings volumes (previously dynamically created) when not creating new ones.
In a technical level when creating an application:

when a user creates a new volume: we are creating PVCs with storageClass field defined to whatever storage class the user selected and we delegate everything to Kubernetes auto-provisioning system.
when a user reuses an existing volume: we are only reusing existing PVCs.

In a nutshell, we are doing what is explained here and it is the recommanded way to do it.
To illustrate using an image from Kubernetes In Action, we are doing this in background, skipping steps 1 and 2 (we don't provide anything to control these steps).

Storage classes
From Storage classes documentation

A StorageClass provides a way for administrators to describe the "classes" of storage they offer. Different classes might map to quality-of-service levels, or to backup policies, or to arbitrary policies determined by the cluster administrators. Kubernetes itself is unopinionated about what classes represent. This concept is sometimes called "profiles" in other storage systems.

Provisioners
From Kubernetes default provisioners list

You are not restricted to specifying the "internal" provisioners listed here (whose names are prefixed with "kubernetes.io" and shipped alongside Kubernetes). You can also run and specify external provisioners, which are independent programs that follow a specification defined by Kubernetes. Authors of external provisioners have full discretion over where their code lives, how the provisioner is shipped, how it needs to be run, what volume plugin it uses (including Flex), etc. The repository kubernetes-sigs/sig-storage-lib-external-provisioner houses a library for writing external provisioners that implements the bulk of the specification. Some external provisioners are listed under the repository kubernetes-sigs/sig-storage-lib-external-provisioner.
For example, NFS doesn't provide an internal provisioner, but an external provisioner can be used. There are also cases when 3rd party storage vendors provide their own external provisioner.

So what?
UX wise, the simpliest way for us to provide NFS volumes to end users would be to make them able to create PVCs on the fly as they are doing it today, selecting a "nfs" StorageClass that can auto provision their volumes.
Thing is, Kubernetes doesn't have a default provisioner for NFS shipped with it (see Provisioners) so we can't provide a UI to setup StorageClasses for this particular volume type, or we could and be opinionated on how to manage NFS volumes with Portainer (e.g. run a kube provisioner and don't make the feature available for setups running nfs-utils/nfs-common).
When you don't have an auto provisioner (so no NFS storage class), you must use static provisioning. That's where we went with this PR.
Basically what we are doing is:

create a PV, using all the required informations
Basically the following:

FieldName
Type
Description

path
string
Path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

readOnly
boolean
ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

server
string
Server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

mountOptions (discarded by Anth feedback)
string array
A list of mount options, e.g. ["ro", "soft"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options

capacity
object
A description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity

create a PVC and bind it to the PV so it can be used by applications

Regarding your feedback

I have tested this functionally, and it works. Good to note that if you do not have any storage enabled, you are unable to use NFS.. no idea why that is, but i guess because kube needs to save a small pointer in that persistent disk containing the mount details.

That was a relicate and it should not be the case. NFS can exist without any StorageClass as we are not going with auto provisioning.
However anyone that has access to this view can create a PVC and use it in his application. But when the user deletes his application PVC will stay and can be reused by another user (can't remember if we have ownership on kube resources). This can lead to situations where data can be transmitted between users I guess ? Which will be a major security flaw.

When creating the NFS volume, we are prompted for a size, which i dont believe has any use as the capacity is inherited by the NFS server. Maybe that capacity entry box is used to create the "stub" file (so we should always just default that entry to 10MB and never prompt for it??

Size is a requirement when creating PVs/PVCs. It's only linked to the real NFS size when using auto provisioning.

Additionally, On this page, we need a note "Please ensure that your hosts are running either nfs-utils or nfs-common software before attempting to use NFS" (like we do with Docker)

Yes as we are not using NFS provisioner + StorageClass pattern.
Examples of NFS setups with Kubernetes

NFS CLI setup: https://github.com/kubernetes/examples/tree/master/staging/volumes/nfs
Using hostPath volume type (dev type) to simulate NFS (which will be used in production): https://kubernetes.io/docs/tasks/configure-pod-container/configure-persistent-volume-storage/
Deploying Dynamic NFS provisioning in Kubernetes: https://blog.exxactcorp.com/deploying-dynamic-nfs-provisioning-in-kubernetes/

To recap concepts and what we were doing/are doing now.
PersistentVolumes & PersistentVolumeClaims
From Persistent Volumes documentation

Introduction

Managing storage is a distinct problem from managing compute instances. The PersistentVolume subsystem provides an API for users and administrators that abstracts details of how storage is provided from how it is consumed. To do this, we introduce two new API resources: PersistentVolume and PersistentVolumeClaim.
A PersistentVolume (PV) is a piece of storage in the cluster that has been provisioned by an administrator or dynamically provisioned using Storage Classes. It is a resource in the cluster just like a node is a cluster resource. PVs are volume plugins like Volumes, but have a lifecycle independent of any individual Pod that uses the PV. This API object captures the details of the implementation of the storage, be that NFS, iSCSI, or a cloud-provider-specific storage system.
A PersistentVolumeClaim (PVC) is a request for storage by a user. It is similar to a Pod. Pods consume node resources and PVCs consume PV resources. Pods can request specific levels of resources (CPU and Memory). Claims can request specific size and access modes (e.g., they can be mounted ReadWriteOnce, ReadOnlyMany or ReadWriteMany, see AccessModes).
While PersistentVolumeClaims allow a user to consume abstract storage resources, it is common that users need PersistentVolumes with varying properties, such as performance, for different problems. Cluster administrators need to be able to offer a variety of PersistentVolumes that differ in more ways than just size and access modes, without exposing users to the details of how those volumes are implemented. For these needs, there is the StorageClass resource.

Lifecycle of a volume and claim

Provisioning
There are two ways PVs may be provisioned: statically or dynamically.
Static
A cluster administrator creates a number of PVs. They carry the details of the real storage, which is available for use by cluster users. They exist in the Kubernetes API and are available for consumption.
Dynamic
When none of the static PVs the administrator created match a user's PersistentVolumeClaim, the cluster may try to dynamically provision a volume specially for the PVC. This provisioning is based on StorageClasses: the PVC must request a storage class and the administrator must have created and configured that class for dynamic provisioning to occur. Claims that request the class "" effectively disable dynamic provisioning for themselves.

While PVCs are easy to understand and straightforward to use, there is a important nuance regarding PVs.

A PersistentVolume (PV) is a piece of storage in the cluster that has been provisioned by an administrator or dynamically provisioned using Storage Classes

Today (this PR excluded) we are only exploiting the dynamic provisioning concept using StorageClasses when we are adding a volume while creating an application, and we are reusing existings volumes (previously dynamically created) when not creating new ones.
In a technical level when creating an application:

when a user creates a new volume: we are creating PVCs with storageClass field defined to whatever storage class the user selected and we delegate everything to Kubernetes auto-provisioning system.
when a user reuses an existing volume: we are only reusing existing PVCs.

In a nutshell, we are doing what is explained here and it is the recommanded way to do it.
To illustrate using an image from Kubernetes In Action, we are doing this in background, skipping steps 1 and 2 (we don't provide anything to control these steps).

Storage classes
From Storage classes documentation

A StorageClass provides a way for administrators to describe the "classes" of storage they offer. Different classes might map to quality-of-service levels, or to backup policies, or to arbitrary policies determined by the cluster administrators. Kubernetes itself is unopinionated about what classes represent. This concept is sometimes called "profiles" in other storage systems.

Provisioners
From Kubernetes default provisioners list

You are not restricted to specifying the "internal" provisioners listed here (whose names are prefixed with "kubernetes.io" and shipped alongside Kubernetes). You can also run and specify external provisioners, which are independent programs that follow a specification defined by Kubernetes. Authors of external provisioners have full discretion over where their code lives, how the provisioner is shipped, how it needs to be run, what volume plugin it uses (including Flex), etc. The repository kubernetes-sigs/sig-storage-lib-external-provisioner houses a library for writing external provisioners that implements the bulk of the specification. Some external provisioners are listed under the repository kubernetes-sigs/sig-storage-lib-external-provisioner.
For example, NFS doesn't provide an internal provisioner, but an external provisioner can be used. There are also cases when 3rd party storage vendors provide their own external provisioner.

So what?
UX wise, the simpliest way for us to provide NFS volumes to end users would be to make them able to create PVCs on the fly as they are doing it today, selecting a "nfs" StorageClass that can auto provision their volumes.
Thing is, Kubernetes doesn't have a default provisioner for NFS shipped with it (see Provisioners) so we can't provide a UI to setup StorageClasses for this particular volume type, or we could and be opinionated on how to manage NFS volumes with Portainer (e.g. run a kube provisioner and don't make the feature available for setups running nfs-utils/nfs-common).
When you don't have an auto provisioner (so no NFS storage class), you must use static provisioning. That's where we went with this PR.
Basically what we are doing is:

create a PV, using all the required informations
Basically the following:

FieldName
Type
Description

path
string
Path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

readOnly
boolean
ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

server
string
Server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

mountOptions (discarded by Anth feedback)
string array
A list of mount options, e.g. ["ro", "soft"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options

capacity
object
A description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity

create a PVC and bind it to the PV so it can be used by applications

Regarding your feedback

I have tested this functionally, and it works. Good to note that if you do not have any storage enabled, you are unable to use NFS.. no idea why that is, but i guess because kube needs to save a small pointer in that persistent disk containing the mount details.

That was a relicate and it should not be the case. NFS can exist without any StorageClass as we are not going with auto provisioning.
However anyone that has access to this view can create a PVC and use it in his application. But when the user deletes his application PVC will stay and can be reused by another user (can't remember if we have ownership on kube resources). This can lead to situations where data can be transmitted between users I guess ? Which will be a major security flaw.

When creating the NFS volume, we are prompted for a size, which i dont believe has any use as the capacity is inherited by the NFS server. Maybe that capacity entry box is used to create the "stub" file (so we should always just default that entry to 10MB and never prompt for it??

Size is a requirement when creating PVs/PVCs. It's only linked to the real NFS size when using auto provisioning.

Additionally, On this page, we need a note "Please ensure that your hosts are running either nfs-utils or nfs-common software before attempting to use NFS" (like we do with Docker)

Yes as we are not using NFS provisioner + StorageClass pattern.
Examples of NFS setups with Kubernetes

NFS CLI setup: https://github.com/kubernetes/examples/tree/master/staging/volumes/nfs
Using hostPath volume type (dev type) to simulate NFS (which will be used in production): https://kubernetes.io/docs/tasks/configure-pod-container/configure-persistent-volume-storage/
Deploying Dynamic NFS provisioning in Kubernetes: https://blog.exxactcorp.com/deploying-dynamic-nfs-provisioning-in-kubernetes/

@xAt0mZ awesome update, I'll have a look.

@deviantony I want to point out a critical point (I updated my above comment to keep context).
However anyone that has access to this view can create a PVC and use it in his application.
But when the user deletes his application PVC will stay and can be reused by another user (can't remember if we have ownership on kube resources).
This can lead to situations where data can be transmitted between users I guess ? Which will be a major security flaw.
:warning: However :warning: anyone that has access to this view can create a PVC and use it in his application.
But when the user deletes his application PVC will stay and can be reused by another user (we don't have ownership on kube resources).
This can lead to situations where data can be transmitted between users sharing the resource pool (already the case with current PVC implementation). As this is NFS, the data can be used somewhere else by another program (synced between servers). The new user can modify / extract / delete data and thus modify the behaviour of programs running outside of the kubernetes cluster. This is a major security breach

/azp run

@xAt0mZ
Got a few questions on that one then after your update:

Size is a requirement when creating PVs/PVCs. It's only linked to the real NFS size when using auto provisioning.

Based on Neil's latest comment regard this, what would be the potential impact of using a placeholder/default value when creating PVs for NFS then?

However warning anyone that has access to this view can create a PVC and use it in his application.
But when the user deletes his application PVC will stay and can be reused by another user (we don't have ownership on kube resources).
This can lead to situations where data can be transmitted between users sharing the resource pool (already the case with current PVC implementation). As this is NFS, the data can be used somewhere else by another program (synced between servers). The new user can modify / extract / delete data and thus modify the behaviour of programs running outside of the kubernetes cluster. This is a major security breach

We don't think this is a security issue as users are assigned to a resource pool / namespace where they have full control over it. So indeed they could share/alter data across multiple apps within the same namespace.
Do you have an example/use case of what you think might be dangerous?
Overall do you think we should continue with the existing solution or would you recommend another approach?

@pull-dog down

Based on Neil's latest comment regard this, what would be the potential impact of using a placeholder/default value when creating PVs for NFS then?

After more research Kubernetes doesn't enforce capacity on backend storages so using a placeholder is definitely something we can do here.
To recap important points, as I said previously there are 2 ways of using NFS shares inside kubernetes.

using the share directly
using a provisioner (only external provisioners exist for NFS) + StorageClass
We are opinionated with this view: we only support direct nfs server shares.
NFS provisioners are not supported in this specific view, but we can still suport them using our advanced deployment view.
Then it will be a matter of requesting a new volume on application creation using the nfs provisioner StorageClass instead of manually creating the volume.

Mirantis has a pretty clear documentation on how to consume NFS shares directly (without external providers):

Defining the share in the Pod definition
Exposing the share as a Cluster object

We are using the cluster object way as it's the only way to setup a volume before an application is created.
In this PR and your specs we are asking for a StorageClass to use, which doesn't fit with the direct share context. I suggest we need to get rid of the entire "Volume configuration" section as we don't need both Size and StorageClass fields for the direct share context.

We don't think this is a security issue as users are assigned to a resource pool / namespace where they have full control over it. So indeed they could share/alter data across multiple apps within the same namespace.
Do you have an example/use case of what you think might be dangerous?

As you are binding your volume to a NFS share, other servers (outside of the Kubernetes cluster) can use the same server share. Modifying the content of the share can have side effects on programs running outside of the Kube cluster. Even if it's more a "NFS related" issue, for me it's a security hole we should prevent to protect our users. Or we can consider it's out of our scope.
A simple step to fill the hole would be to delete the PVC when the application using the NFS share is deleted and use the Delete reclaim policy to remove the PV when the claim is deleted so the share is not accessible anymore through this specific volume. As it is NFS, data will stay in the share but no access to it will be available until you create a new volume with the NFS server information.
That's a bit "meh" for UX because if you want to reuse the share you need to specifically recreate a volume, but it's worth the security imo.
Note on: As it is NFS, data will stay in the share
That's Mirantis claim, even if I trust them we definitely need to test it :grin:

Documentation
Some NFS CSI drivers that are worth listing as they are good candidates/options for someone that wants to use dynamic NFS provisioning on its cluster:

Provisioner for own running and configured NFS server
NFS server + provisioner
Basic NFS CSI Driver (alpha)

Ganesha may support size limit enforcement as it's a port of the archived original nfs server which supported it through xfs quotas.

@xAt0mZ sorry for the late update, let's go with your first option of removing the Volume configuration section and use a default placeholder for the size (should we use a low number here like 10MB?).
Regarding the security issue, let's put it aside for now and consider it out of our scope. If needed, we'll revise in the future.

should we use a low number here like 10MB?
We can use any number as it's tied to nothing and it's only a placeholder. Let's go with 10MB and see.

@pull-dog down


Kernel const evaluation must use platform integers

See https://github.com/dart-lang/sdk/issues/33282 for context.
The semantics of const object evaluation depends on the platform.  On platforms that compile to JS, literals are interpreted as doubles, and integer operations are performed using double operations.
This issue is to verify that no const evaluation is done using the wrong semantics, since in the short term dart2js and ddc will be relying on receiving faithful representations of the original program literals in order to issue errors.
cc @rakudrama @jmesserly

We don't do any const evaluation using the wrong semantics because we don't do any const evaluation.  Eventually we should, and we're definitely aware that the different platforms have different number semantics.

yeah, FWIW, dev_compiler overrides kernel's ConstantEvaluator class, in particular evaluateBinaryNumericOperation and canonicalize, so we can handle JS number semantics. It's not the cleanest approach but it's working alright. (we needed to override it anyway to handle "outline summaries". They make constant fields look like their values are null).

@jmesserly @leafpetersen
The kernel2kernel constant evaluator in package:kernel was written by me. Currently we only use it in our AOT compilation in the VM (and hopefully in the JIT in the non too-distant future as well).
The front-end itself doesn't use it (that was what @kmillikin is referring to), so we run it as an extra transformation afterwards. It surfaces also compile-time errors which the front-end didn't catch (since it doesn't do constant evaluation atm afaik).
If you would want to restructure the package:kernel/transformations/constants.dart to make the interface nicer for the package:dev_compiler, you are welcome to send a CL to me!


[IMPAC-331] Display layout & calculations on first add

@xaun @cesar-tonnoir This PR should be ready to go. KPI's now have context on first add 👍. Cheers!

@xaun @cesar-tonnoir Made all of the recommended changes and added another screenshot to JIRA, please review :)

@cesar-tonnoir pending your review on this one, I'll manage rebasing it onto a new release branch.


Rlimit parameters are added to the elastic configuration.

RLIMT_STACK , RLIMIT_NPROC , RLIMT_MEMLOCK has been implemented with in elastic with the value by which elastic service getting up and running successfully.

Closing this PR as code check is failing

Will fix code check in same PR.

Hm, this is kind of tricky at this current moment. Due to Elastic repo currently in-transit to a new repo and CI pipeline, we aren't checking to see if the tests you created are actually run.
Can you continue the work but for another FW inside of dcos-commons? Like Cassandra or HDFS?

Okay, RLIMIT in Cassandra already done with test cases and today will work on HDFS. Should I Raised new PR for Cassandra so that logic can be reviewed ? Or all remaining framework in single PR?

Elastic was moved to dcos-elastic-service, please open your PR there instead.


Callback when user interacts with the map

Hi, is there any way to know when the user interacts with the map and to understand which type of interactions he performs?
I know that there is the MapEventListener, but its OnMapMoved callback is called whenever the map focus changes, while I'm only interested in catching user interactions like panning, rotations and pinch to zoom.

SDK 4.4.0RC1 now has onMapInteraction method in MapEventListener, that can be used to detect interaction types.

Closing, as 4.4.0 is released now.


More Simple APIs

We need more Simple APIs for the most common usecases.

The most important case, homogeneous functions, is now properly supported in the package. More variants should be added.

I closed this because it's unspecific. Feel free to open a new issue regarding a concrete API


Incompatibility with create steam n rails 1.5.0 fabric

heya! so recently create steam n rails updated their mod to add new bogies, but it crashes when selecting the new bogies (pressing alt with train casing) if used with farmers delight fabric. i reported to them the problem and they said its a farmers delight incompatibility and i should go ask you guys. so here i am! any chance anything could be done to make them compatible?
crash-2023-09-01_18.58.19-client.txt

Hello @BrickidyBlockidy,
Seems to have the same issue than #205, I keep the last one because it is more complete.


add support for using host docker from the container

In case a workspace needs docker-based services, you can now also launch them from your workspace container

This still requires docker to be installed inside the container right?

Yes, but the docker daemon of the host is used.
Here, all docker stuff is started in the container is running on the hosts docker, which affects networking and ports used.
There are special images to use docker in docker, but with that approach we' have to use those as base images. Ans this is still a corner case wean you want to test your workspace code with servers that are run by e.g. docker-compose (where the workspace code is probably later added as image to the docker-compose file anyways.


[Frontend] Build system - Making sure minified of bower deps are published in dist

Using SystemJS instead of bower.


chore: Introduce a tech snacks file to track small tech tasks

I wanted to run this by you all for an easy way to track small tech tasks that we want to do. I've used this on other teams and found it valuable.
Tech snacks are small, short, and don't really qualify as a full user story that makes it onto the JIRA board. The word "snack" is purposeful, its not a full meal, just a snack. It should be able to be done in an hour or less, and should be doable by a single developer.
The idea is that when you find a small tech task that is outside of the scope of your current story/task, you can add it to the Tech Snacks list so that we don't lose track of it. When you find that you have a little bit of extra time (end of the day, end of the week, while waiting for a PR review, etc) you can work on one of the outstanding Tech Snacks! Don't forget to remove it from the list when its done.
If we like this idea, we can merge in this PR and then you all can add anything you might know about to the list.

Is this file meant to be updated as we find more 'tech snacks'? I think the 'low hanging fruit' label solves this, and has higher visibility. If existing issues with that label don't feel small enough in scope (less than 1 hour) then perhaps we could re-appropriate the low hanging fruit label?

Is this file meant to be updated as we find more 'tech snacks'?

Yes. Add to it and commit it back in. When you complete one, either remove it from the list or we could use strikethroughs to keep history.

I think the 'low hanging fruit' label solves this, and has higher visibility.

Ahhh, yes, good point about the "low hanging fruit" label. Yes, I suppose that would work too.
My hesitance for that is the I see the Github Issues are more geared towards "real" things such as new features or defects. I would see the tech snacks as even too small for that, and more for the core team.
I feel like it may "clutter" the Issues to be putting these tiny things in there. For example, yesterday I cleaned up some unused docs files, which I would consider a Tech Snack. Is it necessary to create a Github Issue that the support hero is going to have to notice and track and think about and prioritize just for that? Seems overkill.

I like the idea of having the low-hanging fruit separate from the core team tech snacks.
I think we will always have maintenance tasks that the community doesn't need to be aware of.

@lzcabrera @theetrain
I'll leave it to you all to decide whether or not to merge this idea. :)
If you all decide to not go this direction, let me know what the strategy is for dealing with these type of internal tech tasks.


Update Skill Sample Comments

Fixes #2250
Minor typo fixes and comment string changes in JS Skill Sample 81.

Once this is merged, I'll need to double check all my code snippets in the related how-to articles, so please ping me when that happens.


request: ability to change language declaration for auto-generated pages such as categories

as far as I can tell it's not currently possible to change the language declaration for a category listing page
perhaps something could be added to the "edit category" screen?
maybe on "edit tag" as well?

This has been added in the latest Release.
It works slightly different than anticipated, though:

Defining a custom language locale on a Category or Tag is only used to attribute the corresponding Archive page's title & description with the custom locale! But this does not inherit to all Posts categorized by it nor the whole Category archive page.
However, every Post preview shown on Archive pages (like categories or tags) now also has its custom language locale attributed for the post/page title and excerpt snippets.

The reason being:
Attributing a whole page with a lang-attribute indicates that everything on that page is translated; including Labels, Footer, etc. This is not something that this Plugin is meant for and neither supports doing.


Set encoding to utf-8 by default

Addresses https://github.com/dhruvmanila/remove-print-statements/issues/31

See https://github.com/dhruvmanila/remove-print-statements/issues/31
I don't know if this is the right approach for certain edge cases (I.E. maybe someone wants utf-16 on their Python files, etc.).
However, PEP 686 seems to be moving everything forward in the utf-8 direction anyway.

Hi, sorry I'm out of town will look at this in a couple of days. I think this should be good although black/isort handles it differently. I'm not sure why the MacOS tests are failing 🤷🏻


Issues with .timely countdown

You can set timely to be x amount of flowers every y hours, however when I've set my timely to be 100 every 48h it restricts access for 48 hours BUT counts down as 24 hours when you do .timely to check your cooldown. Once the first 24 hours hits 0 the 24 hour cooldown will restart when you check again. It will, after 48 hours, work. So the issue is with the countdown.
Here's some screenshots:

(Checks at 19:28, sees 19 minutes left implying at 19:47 he'll be able to get his flowers)
 (Checks again at 19:56, should be able to according to countdown but then the countdown shows 23h 51m left, and this is 9 minutes after it hit 0 so it is looping).

It's not looping, it just didn't show the days value. I guess i have to change that to show d.hours:minutes;seconds instead of just hours:minutes:seconds


No freeBSD support?

Ref: https://github.com/s-a/iron-node/issues/41
Can you point me to a OS list supported by electron?

@s-a here are the binaries they publish https://github.com/atom/electron/releases
if the linux ones dont work then its an upstream issue and you'd have to open an issue on that repository


Change logo in Facebook in messages (ASAP)

Current label: helsi logo
Expected label: ehealth logo

for which resource ? portal?


Update Platform.md

Issue #, if available:
None
Description of changes:
Added some clarification about OpenSSL on Windows. The non-"light" version of OpenSSL is required, but not mentioned at all in docs.
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Thank you for submitting this pull request. We will review it and let you know if we plan on merging it.

Thanks for the clarity, I updated with the requested text. I appreciate both of you guys' time.


Freemarker request params

Is there a way to get request params from Freemarker view?

Request params come from HTML/HTTP, freemaker is just what you're using to render HTML. You can get request params by doing
request.queryParams("name-of-html-input");


CSS Selector Complex Bridge throws Error Code "0" when parsing time

Describe the bug
I am trying to create an rss feed for this news site: https://www.kicker.de/hessen-kassel/team-news
Everything is working, except parsing the timestamp. The provided time on the article site is formatted like this: 01.05.24 - 13:51. After consulting the documentation on "DateTimeImmutable::createFromFormat" (php.net), I am using this string: d.m.y - h:i
Error code: 0 with message Call to a member function getAttribute() on null in Line 444
To Reproduce
Steps to reproduce the behavior:

Use 2CSS Selector Complex Bridge"
Use time selector .kick__article__time
Use string d.m.y - h:i to parse the time
Get error code 0

Expected behavior
Parsing the article's time correctly by using the above string
Screenshots

Desktop (please complete the following information):

OS: Linux
Browser: Firefox 125.0.3 (64-Bit)

Additional context
The error is occurring with or without using quotation marks around the format string.
Could this be caused by the ::before selector?
Everything else is working fine.

@ORelio @LarsStegman

Can you try it with d.m.y - H:i

That works! I am a bit bamboozled, though, since I'm quite sure that I tried that variant earlier and remember it not working.
However, thanks a lot!


Umm what am I looking at?!?!?

So I wanted to see what my daughter looked like in anime but it honestly looked ugly. here is a photo of her:

Anime:

It's pretty good, but I don't think the training is very good

It seems really close to being excellent. I don't know a thing about image processing or training, but maybe adjust the color balance because the window light is dominating all the subtle face lighting and you probably want more of a portrait look.

why my results are such a mess?? but the test images performed well

@guchengxi1994 Have you found the solution? I met this problem too. The model cannot work well on my own dataset but can produce well results on its own dataset.

@syz825211943 i was using ugatit pytorch version https://github.com/znxlwm/UGATIT-pytorch and i think that is better than this.
I used my own dataset and made a funny thing. https://github.com/guchengxi1994/Hand-painted-faces-to-real-faces


glfw application missing title bar

Hi, I am running this glfw based application on Bunsen Labs (a Debian 8 distro). It has an Open Box desktop + Xfce environment. A long time ago the title bar was showing but now its gone. I can confirm that the application runs normally in gnome (ubuntu) env. Is this bug related to glfw? Sorry if I am being dumb here. Best.

Haven't seen that problem before. Do the GLFW test programs get a title bar on your Xfce?

Ok, please, where are those test programs?

They are in the tests directory of the GLFW source tree (this repository) and are by default built along with the library.

ok, so I need build from source check I guess.

May I ask if you have any out-of-the-box binaries for testing?

Not for Linux, no.

:cry:

You can try this one if you're running x86_64 and don't mind running unsigned binaries from strangers on the Internet: boing.zip

The sha256 of that binary is d77ee34fffae56ffe061ce5b1d38b885347a84c1639b371de0aeae0296232148.

I will try to build glfw locally first. If I fail, then I will test the binary in a temporary system running from a pendrive. Not today though. Thank you for your support.


Update the logging information in a consistent way accross the Flow Tasks

We need to define a consistent way in logging the information from the verified Tasks.
After that we need to update the tasks accordingly.

Closing issue since it was opened in the wrong repo.


Update sbt-scalafmt to 2.4.6

Updates org.scalameta:sbt-scalafmt from 2.4.3 to 2.4.6.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.scalameta", artifactId = "sbt-scalafmt" } ]

labels: sbt-plugin-update, early-semver-patch, semver-spec-patch, commit-count:1

sbt-scalafmt is at 2.4.6 in the master branch, so this PR is no longer necessary. Closing.


Resizing text annotations in DRD is not safed

Describe the Bug
When I add text annotations at decisions or input data in an DRD diagram and resize them, they are displayed with the default size when I restart camunda modeler.

Steps to Reproduce

Create e.g. Decision in DRD
Append TextAnnotation
Enter Text
Resize TextAnnotation
Restart camunda modeler
TextAnnotation has default size again

Expected Behavior
Changed size of TextAnnotaiton should be safed and shown after application restart.

Environment

OS: Windows 10
Camunda Modeler Version: 4.2.0

Thanks for reporting! I was able to reproduce it on macOS

Note that, additionally to the bug you reported, the connection layout is broken.

This error starts occurring with version v4.0.0.

Closed via 23c40fd465a7b35af0fa608474c3638bee4c9755


Add option for extract_bbox function to include invisible layers in calculation

Hello!
Recently, I updated our systems from psd-tools 1.4 to the latest version. However, one change that did throw a spanner in the works was the addition of layer.is_visible() in the Group.extract_bbox method. https://github.com/psd-tools/psd-tools/blob/57a75be5bcd0ff57b2bedab9a28ea08569a3a5f1/src/psd_tools/api/layers.py#L574
For our Use Case, we need our Group layers to include the invisible layers in their calculation. Would it be possible to add an optional parameter when opening a PSD file (or wherever you feel is appropriate) to set a flag and include invisible layers in Bbox calculations?
Thank you for your time.

@JamesPhillips-scoota Sure, will consider additional option

@JamesPhillips-scoota Please upgrade via pip install -U psd-tools

Hello again!
Thank you for your speedy response and implementation! I am happy that you are receptive to having invisible layers included in Bbox calculations. I read over the PR and, while the option is added in the extract_bbox method, I was also hoping it could be a kwarg that was could pass in to PSDImage.open
https://github.com/psd-tools/psd-tools/blob/1ac7de2bfec133aae6f70c47e4955d608376426e/src/psd_tools/api/psd_image.py#L93
to include all invisible layers when unpacking a PSD. Is that possible?
Thank you again,
James

I don’t understand, all layers including invisible ones are already parsed

Sorry for not explaining well.
As an example, a PSD will have several layers when we read it in and build the PSD object. Lets say one layer is a Group Layer, which has 1 visible and 2 invisible layers underneath it. Currently, that Group layer, contained inside the overall PSD, will have a Bbox calculation that only factors in the 1 visible layer and ignores the dimensions of the other two layers, as there is no way to set the extract_bbox flag when calling PSDImage.open. Does that make sense?

Still don’t understand. Group.extract_bbox method can take PSDImage object

I'll try to do a code example.
Currently, we might do something like this:
from psd_tools import PSDImage

psd = PSDImage.open('c:/my_directory/psd_creative_with_invisible.zip')
for layer in psd:
    print("Layer's Left Value")
    # currently will ignore invisible sub-layers in bbox calculation
    print(layer.left)

With only a flag on the extract_bbox method, the code would have to be like this:
from psd_tools import PSDImage
from psd_tools.api.layers import Group

psd = PSDImage.open('c:/my_directory/psd_creative_with_invisible.zip')
for layer in psd:
    # if it's a group, the bbox will be incorrect as it was internally set to include_invisible=False, so we have to calculate it again
    if isinstance(layer, Group):
        recalculated_bbox = Group.extract_bbox(layer, include_invisible=True)
        left = recalculated_bbox[0]
    else:
        left = layer.left
    print("Layer's Left Value")
    print(left)

In the proposed change, you could do this:
from psd_tools import PSDImage

# setting a flag when we open the file means that when we iterate through, each layer we view will have correct values already calculated
psd = PSDImage.open('c:/my_directory/psd_creative_with_invisible.zip', include_invisible=True)
for layer in psd:
    print("Layer's Left Value")
    print(layer.left)

Don't get, you can do the following.
bbox_everything = Group.extract_bbox(psd, include_invisible=True)

for layer in psd:
    bbox_layer = Group.extract_bbox(layer, include_invisible=True)

Hmm, I see what you mean, any layer can be passed into extract_bbox and be handled appropriately. This works for our approach in any case.
Thank you for your time on this, I appreciate it. The additional option you have added will make life much easier!


ActiveRecord 3.1 serialize conflict

Using delayed_job with Rails 3.1 generates a conflict with ActiveRecord 3.1's new serialize attribute method (https://github.com/rails/rails/blob/e759c8882a990606bb4aee8a643431ebe544c69f/activerecord/lib/active_record/base.rb#L560)
class Person < ActiveRecord::Base
  serialize :brain, Brain
end

Allows you to store Brain objects with yaml within Person records.
delayed_job I guess, is hijacking the YAML serialize/deserialize methods, so if the Brain object doesn't have an id, Delayed::DeserializationError will be raised.
Snippet (delayed/serialization/active_record.rb):
if defined?(ActiveRecord)
  class ActiveRecord::Base
    yaml_as "tag:ruby.yaml.org,2002:ActiveRecord"

    def self.yaml_new(klass, tag, val)
      if ActiveRecord::VERSION::MAJOR == 3
        klass.unscoped.find(val['attributes'][klass.primary_key])
      else # Rails 2
        klass.with_exclusive_scope { klass.find(val['attributes'][klass.primary_key]) }
      end
    rescue ActiveRecord::RecordNotFound
      raise Delayed::DeserializationError
    end

    def to_yaml_properties
      ['@attributes']
    end
  end
end

Unfortunately, I have no clue how to solve this. Do you guys?

It's definitely helpful.


Add support for component creation

Description
This PR fixes #
Notes for Reviewers
Signed commits

[x] Yes, I signed my commits.

Lint issue seems to be persistent

Lint issue seems to be persistent

Gosec is complaining because I am taking write permissions while creating components. Will have to ignore it in the workflow

Lint issue seems to be persistent

green

How is Meshery Server using these same functions for registration of Kubernetes components?

How is Meshery Server using these same functions for registration of Kubernetes components?

Meshery server doesn't use these functions. Meshery server uses the function in meshkit

@Revolyssup are we duplicating these functions, then? If not, what warrants use of different functions for component registration? Why does Meshery Server's approach to component generation and that of Meshery Adapters need to be any different?

To summarize:

Meshkit has the function which actually generates components. This function is used everywhere- in adapters as well as server.
Meshery server directly uses the meshkit functions. Generates those components and saves them in the database. Since meshery server owns the database, there is no such thing as "registeration" so we can directly use the meshkit function.
Adapters have two steps, creation and registeration. Since all adapters have these two steps, it made sense to create a thin abstraction in meshery adapter library. So in adapters, instead of directly calling meshkit functions, we call the functions in adapter library which cater specific to adapters. The function in adapter library calls in the meshkit function in turn.


Auto start cluster for Python models

Resolves #232

Description
This change follows #302, which imported some Databricks-specific code from dbt-spark directly into this repository. In this PR I implemented logic to check whether the cluster for Python models is running, start it if not, and wait for the cluster to start before proceeding.
Testing this change is necessarily manual, for now. The test uses a dbt profile that connects to a SQL warehouse and then tells the specific Python model to connect to an all purpose cluster which is in TERMINATED state at the beginning of the test. Our automated integration tests run on shared infrastructure (multiple PRs use the same environment) so we can't guarantee that the all-purpose cluster is TERMINATED automatically.
Therefore the integration test in this PR is skipped automatically. To run it, clone the repository, set DBT_DATABRICKS_CLUSTER_HTTP_PATH in test.env to a TERMINATED all-purpose cluster, and then run python integration test. It should pass and you will see that the cluster is started automatically.
In a follow-up PR I can mock the cluster status API response and assert that the start_cluster() method was called. But a full integration test will require more work from the DECO team.

Checklist

[x] I have run this code in development and it appears to resolve the stated issue
[x] This PR includes tests, or tests are not required/relevant for this PR
[x] I have updated the CHANGELOG.md and added information about my change to the "dbt-databricks next" section.

great!

🚀 🚀 🚀

Hi, I've been testing this functionality today after upgrading dbt-databricks to 1.4.3 and it didn't work for me, the cluster was still starting when my python models failed with the error:
Error starting terminated cluster.
14:51:11     b'{"error_code":"INVALID_STATE","message":"Cluster 0802-060324-ir9ydk9r is in unexpected state Pending.","details":[{"@type":"type.googleapis.com/google.rpc.ErrorInfo","reason":"CM_API_ERROR_SOURCE_CALLER_ERROR","domain":""}]}'

Thanks for the report @mmenjivarST. Do you see log messages Cluster {self.cluster_id} is not running. Attempting to restart. and Cluster {self.cluster_id} is now running.?
The INVALID_STATE error means that dbt-databricks attempted to start a cluster that was already started. But when dbt-databricks starts a cluster, it blocks until the cluster goes from Pending to Running state before resuming the dbt workflow.
I wonder if we have a threading concern and need to adjust the logic so dbt-databricks not only checks for a TERMINATED cluster but also for a PENDING one. If it's TERMINATED then start it. If it's PENDING, then wait for it.

Hi @susodapop, I don't see those logs, I think the cluster is not ready yet when the models fail. From my perspective looks like the blocking part is malfunctioning


Working windows version ?

Can you point me toward a working windows version ?
I can't find any prebuilt for Win10 64bit (I assume it might be the most common use case) for ABI 59 (node 9.2.0+)
Maybe the README should tell the user that one can't build iohook using the npm release, you have to clone the repository. I managed to build iohook by first building libiohook (beware of crlf errors; use dos2unix (see https://github.com/kwhat/libuiohook/issues/24)).
edit: we can use this issue as a dedicated windows thread if it helps debugging, and then submit a PR with more details on how to use this on Windows.

Maybe @matthewshirley can help here 🙏

PR #42 was merged yesterday, and, a new release was created and published on npm: https://github.com/WilixLead/iohook/releases/tag/v0.1.13
I hope this has fixed most of the issues with Windows. Can you give it a go? 👍

Hey, thanks for your answer. Reading the logs I figured out 2 things :

it was linux 32b version missing (yep, at first I though it was my current OS missing)
linux 32b builds are marked "x32", not "ia32". is it intentional ? It make the example unusable (it throws errors)

"iohook": {
  "targets": [
    "node-51",
    "electron-53"
  ],
  "platforms": [
    "win32",
    "darwin",
    "linux"
  ],
  "arches": [
    "x64",
    "ia32"
  ]
}

PR https://github.com/WilixLead/iohook/pull/45 might help on this.

Fixed in #45


add Pejuang University of Republic of Indonesia

Adding Pejuang University of Republic of Indonesia
University url: https://upri.ac.id/

@yusrideb Pull request merged. Thank you!


Update README.md add Zapier Alternative

Add Zapier alternative category and activepieces under it.

Added in another commit- thanks!


Uncaught TypeError: null has no properties on fs

Just import the fs module and the error appear on the console log.

waiting for it

It looks like the underlying implementation in node-stdlib-browser uses null as the polyfill for fs. I assume this is because the implementation is fairly large and could be somewhat complicated depending on your use case.
@prpanto @zz-link what would the desired implementation look like for you? Are you attempting to use this to polyfill fs for the browser? If so, what should the underlying implementation actually do in that environment? At the very least, some more information around your use case would help me determine next steps.

In my case, the error is with orbitDb, which actually checks for fs and sets it to null if it's not available, using other methods as a fallback.
Alas, this plugin defines fs, so it passes the check but then tries to call non-existent properties on it.
So for me, a way to exclude fs from the polyfill should be good enough.

ah, it seems fs is just a mock, with fs = null.
Weird, then, that one of the packages I'm polyfilling for fails on this line:
https://github.com/orbitdb/orbit-db-storage-adapter/blob/de44df31324d69a27de506d868cb0a1daeaa65b1/src/index.js#L43
with Uncaught (in promise) TypeError: Cannot read properties of null (reading 'mkdirSync').
Shouldn't null being falsy mean that mkdirSync is never called? I'm new to JS.

@Erudition it looks like you are importing fs with import * as fs from 'fs' rather than import fs from 'fs'. I believe that coerces the import into an actual module, although it's odd that you are seeing that error message instead of something like Uncaught TypeError: fs.mkdirSync is not a function.

@Erudition it looks like you are importing fs with import * as fs from 'fs' rather than import fs from 'fs'.

It's not mine, it's in the package linked. However it works fine in vite dev, and everywhere other than vite build...

it's odd that you are seeing that error message instead of something like Uncaught TypeError: fs.mkdirSync is not a function.

Well, as before, fs is definitely null, so .mkdirSync would look like a property access of null. The expression fs.mkdirSync is tested for truthiness first, so that would be where it errors - it's not yet used as a function.
Thanks to pnpm patch I was able to get it working by removing the line...

Well, as before, fs is definitely null, so .mkdirSync would look like a property access of null. The expression fs.mkdirSync is tested for truthiness first, so that would be where it errors - it's not yet used as a function.

This is not entirely accurate given the nature of import * statements. In aggregate named imports such as those, you are no longer importing the default export. Instead, it aggregates all named exports into a standalone module.
That said, version v0.8.1 has been released and adds support for excluding specific modules via the new exclude configuration option.

I had the same error, and I solved it like this:
Uncaught TypeError: Cannot read properties of null (reading 'realpathSync')
I'm migrating from CRA to Vite, so I don't have the project yet in a "working" state in Vite.
The error came from https://github.com/evenchange4/graphql.macro (in this file is using fs.realpathSync.
Finally I understood that graphql-macro needs babel-plugin-macros installed (I had it installed, but that's not enough for Vite).
So I found this package suitable for vite and configured it as the README says: https://github.com/itsMapleLeaf/vite-plugin-babel-macros
This solved my issue.
Note: For others, maybe this is useful, polyfill some methods of fs https://github.com/StarLederer/vite-plugin-fs


SAKIII-5111, SAKIII-5116, SAKIII-5128, SAKIII-5129, SAKIII-5132, SAKIII-5135, SAKIII-5140

SAKIII-5111 Adding content to collection via Add to pop-up does not function
https://jira.sakaiproject.org/browse/SAKIII-5111
SAKIII-5116 Collector - You're able to make the collector disappear and only show up again after page reload
https://jira.sakaiproject.org/browse/SAKIII-5116
SAKIII-5128 Inserter - Hovering a top navigation item while the inserter is on top of it, breaks design
https://jira.sakaiproject.org/browse/SAKIII-5128
SAKIII-5129 The numbering in the collection widget is not consistant
https://jira.sakaiproject.org/browse/SAKIII-5129
SAKIII-5132 The numbering in the library is not consistant
https://jira.sakaiproject.org/browse/SAKIII-5132
SAKIII-5135 Inserter - On long pages the inserter drops to the bottom
https://jira.sakaiproject.org/browse/SAKIII-5135
SAKIII-5140 Collector should be pushed down under the topnav
https://jira.sakaiproject.org/browse/SAKIII-5140

@bp323 I've re-opened the issues linked here that need additional work. It would be great if you could submit these  as individual pull requests so I could merge as you fix issues. As long as you're not changing the same line in the file, you shouldn't see any merge conflicts.


Small refactor to TCP test suite

I've cleaned up test suite a bit. Most notably, used init_per_testcase/end_per_testcase for init and teardown to reduce repetition.

I'm closing this one since I need to modify tests completely to make #11 build.


snap's license info is "unset"

The license field for the snap is currently "unset":
$ snap info edgexfoundry | grep license
license:   unset
$

Because the project ships a few dependencies which aren't under the apache license, we can't just say that the snap is apache, as it's really multiple licenses. As such, we should use the SPDX license "other", as currently SPDX doesn't have a way of specifying multiple licenses.

You totally can set multiple licenses in the store. Go to https://snapcraft.io/edgexfoundry/listing and scroll down. You'll find this dialog..

You should be able to set the license appropriately there. If not, then it's likely a bug in the store. If it doesn't fully support what you need in the short term, then I'd recommend setting the store text description to a piece of plain text describing the licenses used.

@popey can this be set from the snapcraft.yaml or does it have to be done in the store?

Currently you'll need to edit it in the store. The feed from the snapcraft.yaml to the store hasn't landed yet for licenses. It will, but right now, you'll need to edit it in the store.

can this be set from the snapcraft.yaml or does it have to be done in the store?

The ability to specify this in the snapcraft.yaml is in snapcraft's edge channel, but is not yet within a stable release (relevant PR). Note also that metadata changes in the snapcraft.yaml (summary, description, etc.) only effect the store on first push. Subsequent pushes, even if the snap contains updated metadata, will not update the metadata on the store. If you change metadata in the snap and want it to take effect in the store, you'll need to use snapcraft push-metadata to do it (see snapcraft push-metadata --help for more details). I assume license follows the same rules as the rest of the metadata, although I've not tested to be sure.

@JPWKU has set the license to "Other Open Source" through the store, and we now do all builds with snapcraft push-metadata --force so that the source of truth going forward will be snapcraft.yaml.
Note that we won't be able to upgrade the version of snapcraft we use just yet as we use snapcraft from docker, which hasn't been updated yet. See also issue #888


Adds AMR Profile status to periodic meter reads E & G

Connects to SmartSocietyServices/Protocol-Adapter-DLMS#18
Connects to SmartSocietyServices/Webapps#239

All is well.

All is well.

All is well.


Document the rules specified in .sass-lint.yml

The .sass-lint.yml file being used is generated from gds-sass-styleguide.yml which is part of GOV.UK lint, we should document how and why these two differ and this file should take precedence over the existing .gds-sass-styleguide.yml file.

I added comments to the .sass-lint.yml file we are using: https://github.com/alphagov/govuk_frontend_alpha/blob/master/.sass-lint.yml, it also has TODO's added where a rule exists in the default configuration, but it hasn't yet been included in our sass-lint file.

Closing this issue, we have documentation for scss-lint here: https://github.com/alphagov/govuk-frontend/blob/master/docs/coding-standards/css.md#linting


[1.0] Access router.transitionTo() outside component

Is there a way to trigger transitionTo without being in a component?
Use-Case: I'm currently writing a nw.js app which has a tray menu. This tray menu is created with nw.js and not part of the React UI. I want to show and switch to a specific part of my React App from my tray menu but I need access to the transitionTo method. I could export it out of a component somehow but that seems like a hack. Or should I just use window.location.href?

added a doc :)
https://github.com/rackt/react-router/blob/95094769caca201b8e9afe68ff3d6cb4ff280fac/docs/advanced/NavigatingOutsideOfComponents.md

Thank you! :)

I think it would be really nice to be able to still call transitionTo outside of components.  What was the reasoning behind removing it?  Perhaps I'm missing something, but to me, it seems reasonable that you might want to transitionTo (or replaceState as it's now called) from within any number of non-component services, but perhaps I'm missing something.  Either way, it might also be nice to be able to access the history lib from within react-router rather than having to install it as well, especially since it's already there and since if you wanted to configure it in some way it would certainly be for the purposes of routing.  In any case, this aside, the new release is looking really awesome!

Followed as per the document, the URL changes to new url, however the UI is not updated!, When I use  everything is good


Footer - Background Color for Landing pages

Make sure the background color of the Footer matches the live site

Also need to fix footer in mobile/tab size as it is coming as accordion in lower screen width.


Protect empty lines

i just wanted to use ts-to-jsdoc to convert ts-to-jsdoc from typescript to javascript (duh ^^)
but the result is ugly, because empty lines are removed

index.ts with empty lines

import path from "path";

import {
        Project,
        ScriptTarget,
        Node,
} from "ts-morph";

import type {
        ClassDeclaration,
        FunctionLikeDeclaration,
        InterfaceDeclaration,
        JSDoc,
        JSDocableNode,
        MethodDeclaration,
        ModifierableNode,
        PropertyAssignment,
        PropertyDeclaration,
        PropertySignature,
        SourceFile,
        TypeAliasDeclaration,
        TypedNode,
} from "ts-morph";

declare module "ts-morph" {
        // eslint-disable-next-line no-shadow
        namespace Node {
                let isObjectProperty: (node: Node) => boolean;
        }
}
Node.isObjectProperty = (node): node is ObjectProperty => (
        Node.isPropertyDeclaration(node)
        || Node.isPropertyAssignment(node)
        || Node.isPropertySignature(node)
);

type ObjectProperty = JSDocableNode & TypedNode & (
        | PropertyDeclaration
        | PropertyAssignment
        | PropertySignature
);
type ClassMemberNode = JSDocableNode & ModifierableNode & ObjectProperty & MethodDeclaration;

/** Get children for object node */
function getChildProperties(node: Node): ObjectProperty[] {
        const properties = node?.getType()?.getProperties();
        const valueDeclarations = properties.map((child) => child.getValueDeclaration())
                // Hacky way to check if the child is actually a defined child in the interface
                // or if it's, e.g. a built-in method of the type (such as array.length)
                ?.filter((child) => node.getFullText().includes(child?.getFullText()));
        return (valueDeclarations ?? []) as ObjectProperty[];
}

/** Get JSDoc for a node or create one if there isn't any */
function getJsDocOrCreate(node: JSDocableNode): JSDoc {
        return node.getJsDocs()[0] || node.addJsDoc({});
}

index.js with removed empty lines

import path from "path";
import { Project, ScriptTarget, Node } from "ts-morph";
Node.isObjectProperty = (node) =>
  Node.isPropertyDeclaration(node) ||
  Node.isPropertyAssignment(node) ||
  Node.isPropertySignature(node);
/**
 * Get children for object node
 * @param {Node} node
 * @returns {any[]}
 */
function getChildProperties(node) {
  const properties = node?.getType()?.getProperties();
  const valueDeclarations = properties
    .map((child) => child.getValueDeclaration())
    // Hacky way to check if the child is actually a defined child in the interface
    // or if it's, e.g. a built-in method of the type (such as array.length)
    ?.filter((child) => node.getFullText().includes(child?.getFullText()));
  return valueDeclarations ?? [];
}
/**
 * Get JSDoc for a node or create one if there isn't any
 * @param {JSDocableNode} node
 * @returns {any}
 */
function getJsDocOrCreate(node) {
  return node.getJsDocs()[0] || node.addJsDoc({});
}

index.js with protected empty lines

import path from "path";

import { Project, ScriptTarget, Node, } from "ts-morph";
Node.isObjectProperty = (node) => (Node.isPropertyDeclaration(node)
    || Node.isPropertyAssignment(node)
    || Node.isPropertySignature(node));

/**
 * Get children for object node
 * @param {Node} node
 * @returns {any[]}
 */
function getChildProperties(node) {
    const properties = node?.getType()?.getProperties();
    const valueDeclarations = properties.map((child) => child.getValueDeclaration())
        // Hacky way to check if the child is actually a defined child in the interface
        // or if it's, e.g. a built-in method of the type (such as array.length)
        ?.filter((child) => node.getFullText().includes(child?.getFullText()));
    return (valueDeclarations ?? []);
}

/**
 * Get JSDoc for a node or create one if there isn't any
 * @param {JSDocableNode} node
 * @returns {any}
 */
function getJsDocOrCreate(node) {
    return node.getJsDocs()[0] || node.addJsDoc({});
}

limitation: empty lines before typescript blocks are still removed

example

from
import {
        Project,
        ScriptTarget,
        Node,
} from "ts-morph";

import type {
        ClassDeclaration,
        FunctionLikeDeclaration,
        InterfaceDeclaration,
        JSDoc,
        JSDocableNode,
        MethodDeclaration,
        ModifierableNode,
        PropertyAssignment,
        PropertyDeclaration,
        PropertySignature,
        SourceFile,
        TypeAliasDeclaration,
        TypedNode,
} from "ts-morph";

declare module "ts-morph" {
        // eslint-disable-next-line no-shadow
        namespace Node {
                let isObjectProperty: (node: Node) => boolean;
        }
}
Node.isObjectProperty = (node): node is ObjectProperty => (
        Node.isPropertyDeclaration(node)
        || Node.isPropertyAssignment(node)
        || Node.isPropertySignature(node)
);

to
import { Project, ScriptTarget, Node, } from "ts-morph";
Node.isObjectProperty = (node) => (Node.isPropertyDeclaration(node)
    || Node.isPropertyAssignment(node)
    || Node.isPropertySignature(node));

related issues:

https://stackoverflow.com/questions/53500087/typescript-compiler-api-loses-formatting-during-transformation
https://stackoverflow.com/questions/51353988/typescript-ast-transformation-removes-all-blank-lines
https://stackoverflow.com/questions/56889833/create-readable-js-from-typescript
https://github.com/microsoft/TypeScript/issues/42617

Thanks!

		const blankLineMarker = "/* TS-TO-JSDOC BLANK LINE */";

will break on this input
/* empty line:

*/

Oh, interesting, assumed that would work for some reason. Is there a particular reason for the suffix? Just wanted to avoid that to make slicing a bit less error-prone.

Is there a particular reason for the suffix?

preserve whitespace-only lines with (emptyLinePrefix + line + emptyLineSuffix)
but this is probably not needed.
i was thinking about multiline strings with whitespace-only lines,
but these should be preserved by typescript anyway
randomStr is hepful to avoid collisions:
/* TS-TO-JSDOC BLANK LINE */ can be user input

Gotcha. I don't see much point in being defensive against user behaviour — if they want to introduce blank lines in their output in a weird, roundabout way, I think that's on them.


added set_mode (low, high) for the princess heaters

Pull request recommendations:

[ ] Name your pull request your-development-type/short-description. Ex: feature/read-tiff-files
[ ] Link to any relevant issue in the PR description. Ex: Resolves [gh-12], adds tiff file format support
[ ] Provide context of changes.
[ ] Provide relevant tests for your feature or bug fix.
[ ] Provide or update documentation for any feature added by your pull request.

Thanks for contributing!

Fixed for now by adding this dirty bit:
`
self._LOGGER.debug(f"Received full device update: {received_message}")
state = received_message.get("state")
if 'fan_speed' not in state:
state['fan_speed'] = 0
if 'oscillate' not in state:
state['oscillate'] = False
if 'error' not in state:
state['error'] = []
if 'heat_status' not in state:
state['heat_status'] = "idle"
if 'vent_heat' not in state:
state['vent_heat'] = False
if 'silent' not in state:
state['silent'] = False
if 'heater' not in state:
state['heater'] = False
if 'ext_mode' not in state:
state['ext_mode'] = []
if 'ext_current_temperature' not in state:
state['ext_current_temperature'] = 0
if 'ext_target_temperature' not in state:
state['ext_target_temperature'] = 0
self._update_last_state(
HomeWizardClimateDeviceState.from_dict(state)
)
`

End result is beautiful 😄

@kvanhoorn What did you use to generate the above shown card in home assistant?
FYI: I added support for the Princess Smart Glass Panel Heater preset mode (ECO and BOOST) (see this PR) and slightly improved your suggested bugfix in this PR on the dennis1804 fork.

Code of the card is like this:
`
control:
hvac:
cool: false
dry: false
fan_only: false
heat: true
heat_cool: false
'off': true
fan:
low: true
high: true
'off': false
entity: climate.zolder_achterkant
step_size: 1
type: custom:simple-thermostat
layout:
step: row
mode:
headings: false
`


Support multiple hostnames for molecule compatibility

Molecule supports multiple hostnames split by , but it wasn't supported until now.
See:

https://github.com/kubernetes-incubator/external-dns/pull/256#issuecomment-319504658
https://github.com/wearemolecule/route53-kubernetes/blob/master/service_listener.go#L160

:+1:


⚠ Jenkins Plugins Artifactory has degraded performance

In 265e8a9, Jenkins Plugins Artifactory (https://get.jenkins.io/plugins/artifactory/) experienced degraded performance:

HTTP code: 200
Response time: 1107 ms

Resolved: Jenkins Plugins Artifactory performance has improved in 56eea79 after 1 hour, 16 minutes.


Create G2G meteoswiss check

Add PrgEnv-gdr for kesch in config/cscs.py

Create dir mch under cscs-checks/microbenchmarks.

Closes #93
Addresses #85

@jenkins-cscs retry daint kesch monch leone

@victorusu Could you approve this one? I don't think we should block it, since the problem it's not on ReFrame's side.


Update the How to post a transaction page

Update the Lisk Service related content.
https://lisk.com/documentation/beta/integrate-blockchain/posting-transactions.html)

This issue has been completed in the Lisk Service repo  https://github.com/LiskHQ/lisk-service/pull/1585 and can be closed.


Fixed Monitoring Booking Order

Coverage remained the same at 77.643% when pulling d4e6c833da36889869c874d027aab3051607cf13 on kharissuryandaru:dev into 43f5e2c939c3582ec6e91470eb0ec4a07afadeec on danliris:dev.


About CUDA version and other environmental configurations

Hello, I have encountered the following error while configuring the environment
No CUDA runtime is found, using CUDA_HOME='C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6'
So I would like to configure the environment to your version for network training, thank you very much!

Hi, sorry for the late response. I have updated README.md and you can find more detailed instructions on configuring environments.
One note is that the hash encoder module that we use from torch-ngp only supports CUDA <= v11.3. I tried CUDA v11.6 and encountered the problem you mentioned as well. Therefore I suggest using CUDA v11.3 for convenience as mentioned in README.md.
Thanks.

Even with Cuda 11.3 it looks like there is compilation ussues:
/usr/local/cuda-11.3/bin/nvcc  -DTORCH_EXTENSION_NAME=hash_encoder -DTORCH_API_INCLUDE_EXTENSION_H -DPYBIND11_COMPILER_TYPE="gcc" -DPYBIND11_STDLIB="libstdcpp" -DPYBIND11_BUILD_ABI="cxxabi1011" -isystem /home/imfusion/anaconda3/envs/naf/lib/python3.9/site-packages/torch/include -isystem /home/imfusion/anaconda3/envs/naf/lib/python3.9/site-packages/torch/include/torch/csrc/api/include -isystem /home/imfusion/anaconda3/envs/naf/lib/python3.9/site-packages/torch/include/TH -isystem /home/imfusion/anaconda3/envs/naf/lib/python3.9/site-packages/torch/include/THC -isystem /usr/local/cuda-11.3/include -isystem /home/imfusion/anaconda3/envs/naf/include/python3.9 -D_GLIBCXX_USE_CXX11_ABI=0 -D__CUDA_NO_HALF_OPERATORS -D__CUDA_NO_HALF_CONVERSIONS -D__CUDA_NO_BFLOAT16_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr -gencode=arch=compute_61,code=compute_61 -gencode=arch=compute_61,code=sm_61 --compiler-options '-fPIC' -O3 -U__CUDA_NO_HALF_OPERATORS__ -U__CUDA_NO_HALF_CONVERSIONS__ -U__CUDA_NO_HALF2_OPERATORS__ -std=c++14 -c /home/imfusion/Documents/naf_cbct/src/encoder/hashencoder/src/hashencoder.cu -o hashencoder.cuda.o
/home/imfusion/Documents/naf_cbct/src/encoder/hashencoder/src/hashencoder.cu(26): error: no instance of overloaded function "atomicAdd" matches the argument list
argument types are: (__half *, c10::Half)

It appears the issue may be related to your CUDA version or GPU architecture. We tested the code on a 3090, and it worked fine. You may check this link for help.


Clicking anywhere on a site using 15zine (e.g. Ask UP) on dev loads mostly empty page.

[ x] Add to an appropriate Epic.

Tester (if different from issue creator):
Site: Ask UP and likely all using 15zine theme: https://president.mla.hcommons-dev.org/; https://colearning.hcommons-dev.org/; https://assemblage.hcommons-dev.org/; etc.)
URL: https://ask.up.hcommons-dev.org/
Test Account: logged out, adonlon, hctester10
Area (CORE, sites, profiles, groups, general): site
If issue discovered on dev, does it also exist on prod? no
Describe the issue
Clicking anywhere on Ask UP on dev loads a mostly empty page, bank except an X in the upper right corner (). Click on a link, text box, anywhere on the page, WP toolbar--and this page will load. Seems like a theme issue; the admin dashboard for the site works.
-----previous description---
When I click on "log in" from the site, I get a white page, blank except for an x in the upper right.
I checked another UP subsite on dev and it loaded the login page, so it doesn't seem to be a network wide problem.
When I visit the site logged in as a site admin, I am not able to navigate to the admin dashboard from the WP toolbar at the top. The same blank page with X in the upper right loads.
Perhaps something with the theme? I also noticed that there is a search bar at the top of the site on prod that is missing on dev.
To Reproduce
Steps to reproduce the behavior:

Go to https://ask.up.hcommons-dev.org/
When logged out, click on "log in" in the upper left.
2b. When logged in, click "My Sites" or "Widgets" (if a site admin).
2c. Click anywhere on the page, a link, a text entry box, or anywhere on the page.
See blank page with x in upper right.

Expected behavior
I expect the login page to load, the admin dashboard to load, the linked page to load, or nothing (in the case of clicking unlinked parts of the page).
Screenshots
If applicable, add screenshots to help explain your problem.
Optional details, if they seem relevant
Desktop (please complete the following information):

OS: [e.g. iOS]
Browser [e.g. chrome, safari]
Version [e.g. 22]

Smartphone (please complete the following information):

Device: [e.g. iPhone6]
OS: [e.g. iOS8.1]
Browser [e.g. stock browser, safari]
Version [e.g. 22]

Additional context
Add any other context about the problem here.

It seems to be clicking on anything in the top WP toolbar that results in the white page, blank except for the X in upper right. If visiting the site logged in as a site admin, for instance, cannot visit the admin dashboard or "my sites" from the toolbar. I'll update the issue.

Sorry for the constant updating. It seems to be clicking anywhere on the Ask UP site on dev that causes that screen to load. There are no console errors when it comes up.

This seems to affect all sites using the 15zine theme. The theme update likely needs a wider review. There are other differences between sites on dev and prod, e.g. layout of https://colearning.hcommons-dev.org/, missing search bar on Ask UP. Currently hard to explore because of the lack of clicking!

Looks like the culprit is the swipebox jQuery plugin that the theme is using. Has an event listener for document.click. Removing the listener stops the behavior. Should see if there is an update for the theme that updates that plugin.

15zine is a themeforest theme. Should update to latest version if possible.
As a stop-gap, I replaced /srv/www/commons/current/web/app/themes/15zine/assets/js/swipebox.min.js with the latest version from https://github.com/brutaldesign/swipebox/blob/master/src/js/jquery.swipebox.min.js and that seems to solve the issue. If we don't have a theme update when we push updates to production, we should make the same swap there.


Check faraday install update

see #1513

see and test: #1577

OK tested and and fixed to work with both:

LND<0.11->Faraday0.1
LND>=0.11->Faraday0.2.1

OK tested and will be part of v1.6.1 release.


Refactor project points out of tests and expose it to Python

Fixed and rebased

Updated and rebased

One last thing: I think projectpoints.{h,cpp} really belongs to the appleseed.python project

I want to keep it accessible from both C++ and Python. You never know when are you going to need it and the cost is almost nothing.

I'm not too comfortable keeping this in the middle of the cameras.

I agree. I moved ProjectPoints to renderer/utility.


[fix](inverted index) add in list to fast execute logic after hit index

Proposed changes
https://github.com/apache/doris/pull/35344

Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

run buildall

run p0

run buildall

run buildall

run buildall

run buildall

run buildall

run p1

run compile

run buildall

run buildall

run buildall

run buildall


Allow programmatic alerts to send to use at channel for Slack

Jira ticket URL
https://dfedigital.atlassian.net/browse/TEVA-1981
Changes in this PR:

Slack documentation shows syntax for programmatic notifications is <!channel> rather than !channel or @channel
Add channel alerts to highest-priority notifications (failed smoke tests on staging or production, failed deployment to staging or production)
Remove double-alert from smoke test manual when called with workflow dispatch
Remove step duplication by using job-status for the result of a workflow job

Review app deployed to https://teaching-vacancies-review-pr-2787.london.cloudapps.digital


Strings should be interpolated, but not literal - so no literal newlines permitted.

Duplicated by #213


Keras callbacks to add

model checkpointer
nan bailing
tensorboard

see if we can evaluate model training by validation score, not training score, in one effort to prevent overfitting.

definitely add in val_data to .fit (break this out myself using a 5 or 10 percent sample of the data and train_test_split). then use model checkpointer, and update early stopping to use val_loss


Surge not working on challenge 0

Describe the bug
When I run yarn surge to publish the front end, the app won't run. I get this error:

To Reproduce
Steps to reproduce the behavior:

Check this branch: https://github.com/scaffold-eth/scaffold-eth-typescript-challenges/tree/challenge-0-eth-hooks-upgrade
Publish the front end with yarn surge

Additional context
I'm stumped, it seems related to the node-fetch package, but I can't figure out what's causing the error

I figured out what was causing the issue. node-fetch needed to be added to vite.config.ts for external dependencies


🐛 Content change causing schema mismatch

Describe the issue that you're seeing. Any Loom videos or screenshots usually help a lot!
Related issue #3981
Sometimes when content changes are made through tina (no code or config is touched), the PR build fails.

Reproduction
https://github.com/SSWConsulting/SSW.Website/pull/781
Steps to reproduce

Go to Tina
Make a new branch
I get the "GraphQL mismatch error"  but it doesn't block me from making changes
Commit some changes
Make a PR
build fails ☹

System Info
System:
    OS: macOS 13.4
    CPU: (12) arm64 Apple M2 Max
    Memory: 24.38 GB / 96.00 GB
    Shell: 5.9 - /bin/zsh
  Binaries:
    Node: 20.2.0 - ~/.nvm/versions/node/v20.2.0/bin/node
    Yarn: 1.22.19 - ~/.nvm/versions/node/v20.2.0/bin/yarn
    npm: 9.6.6 - ~/.nvm/versions/node/v20.2.0/bin/npm
  Browsers:
    Chrome: 114.0.5735.106
    Safari: 16.5

Validations

[X] Follow our Code of Conduct
[X] Read the docs.
[X] Check that there isn't already an issue that reports the same bug.

If you pull down that branch locally (or even your main branch that your branching off of), and run tinacms dev, are there changes to the tina-lock.json file?

Also, This issue kind of seems like a symptom of this other issue you created: https://github.com/tinacms/tinacms/issues/3981. Not sure these should be separate tickets
By ignoring the schema mismatch, the build will predictably fail. (The question is, why are we seeing a schema mismatch?)

Also, This issue kind of seems like a symptom of this other issue you created: https://github.com/tinacms/tinacms/issues/3981. Not sure these should be separate tickets

I agree, closing this one in favour of #3981


Module Request - 2d World (library + hard problem solving)

Overview
I would like to make a request for a GDK module that includes code running on SpatialOS handling 2d game worlds, and the hard problems that sometimes crop up while creating them, especially with multiplayer involved.
The 2d-based game has come back to the fore as a highly active section of the overall games industry. It has advantages in the ability to use simpler code to achieve basic game functionality, as well as dramatically reduced budgets for visual assets, allowing small teams, or even solo developers (as was mostly the case with Gungeon), to create amazing experiences based on core gameplay, without the millions of dollars required in a typical AAA game.
However, massive multiplayer (and even simple multiplayer) networking is still an extremely hard problem, especially if the code is written from a publicly available library. Most successful 2d games, especially those created by smaller teams, either do not have a multiplayer component, or rely on (vastly overpriced, imo) simple multiplayer plugins/components usually bought via the assets store.
There is an incredible amount of gameplay, revolving around people working together/against one-another, and building things alongside each-other, that is simply not able to be tapped due to the lack of an easy way to get massive multiplayer going at a reasonable price for a smaller team.
References
Gungeon:

Dungeon Crawl Stone Soup:

Dwarf Fortress:

Requirements
The module should include the following (not an exhaustive list, just the things I can currently come up with):

A 2d physics world, set up using the same ECS system used in the 3d GDKs
A grid (square, hex, octagon?) overlay for the world, allowing for terrain/entity division in a tile format (may or may not be used by each game - useful for turn-based games, aggressive optimization, region-control, etc..)
PS: It would be nice if the 3d GDK modules also had support for grids, so that something similar to Final fantasy tactics could be done with more ease)

Support for Z levels to allow "floors" and different altitudes/heights similar to what is done in dwarf fortress
Built-in terrain system that maps/etc.. could be imported/exported from (via photoshop drawings/real-life height maps/etc..) - perhaps focus on the networking side of this? I know that there are various assets in the store that help handle grid/tile based 2d maps... not sure what exactly should be in the GDK..
Camera zoom support with the ability to render the world differently based on the zoom level (ie. when zoomed close to a character, perhaps a cliff would look like a black abyss.. but if zoomed out, you would see further down - this would probably include tile/terrain streaming of some kind...)
Optimizations specific to 2d (especially if the grid is used to highly simplify combat/movement data traffic/processing)
Local 2d physics worlds that can be spun up/down for shared, moving spaces such as airships, boats, floating islands (sonic and knuckles? 👍 ^^)...
All applicable optimizations/components/etc.. from the base 3d GDK (smooth movement prediction, etc..)

(All I can think about for now.. would love to hear additional ideas if anyone has them..)

Thanks for the detailed report @leland-creswell. We really liked some of the ideas and provided examples. Unfortunately we are focusing on 3d support right now because that usually requires more physics computation which aligns well with our product and is usually harder to solve. We won't be able to work on this feature request for the foreseeable future but once we get more time to work on other feature modules we will revisit this and update you on our plans.

In addition, the 2d components of Unity work with the X and Y axes. Any chance this will be supported in the near feature?

Tracking this issue with JIRA ticket UTY-841.


ServiceMonitor resource for Prometheus scraping

Pull Request
Related issue

#3523

What does this PR do?

Creates a ServiceMonitor Kubernetes resources.

Prometheus metrics must be enabled using the --experimental-enable-metrics CLI argument
PR checklist
Please check if your PR fulfills the following requirements:

[x] Does this PR fix an existing issue, or have you listed the changes applied in the PR description (and why they are needed)?
[x] Have you read the contributing guidelines?
[x] Have you made sure that the title is accurate and descriptive of the changes?

Thank you so much for contributing to Meilisearch!

@alallema I think this PR will be necessary to the adoption of the new experimental feature https://github.com/meilisearch/meilisearch/issues/3523
So what I suggest you to do is:

[ ] Fix parameters list like you suggested to the contributor
[ ] Add comments and point to the engine issue regarding this experimental feature.
[ ] Add support to Authorization token when a master key protects the instance.

Hi @nlamirault,
Thank you so much for continuing to update your code each time ❤ . I didn't forget you. I will finish by merging your PR, I just need to check some stuff before and I still don't have time to do it, but I will.
Thank you so much for your patience 😊

Hi @nlamirault,
Sorry to come back to this PR so late. I finally checked it.
Rather than using the CLI command --experimental-enable-metrics, would it be possible to add the MEILI_EXPERIMENTAL_ENABLE_METRICS: "false" parameter to the environment variables and then if {{- if.Values.serviceMonitor.enabled -}} set it as (eq.Values.environment.MEILI_EXPERIMENTAL_ENABLE_METRICS "true")
I'm not an expert, so I'd like your opinion. I can implement it in a subsequent PR if it's annoying.
Thank you 😊

bors merge


The original implementation is O(N^2) and can be just replaced with the String.contains method

The original implementation is O(N^2) and can be just replaced with the String.contains method
最初由 @DoctorLai 在 https://github.com/tronprotocol/wallet-cli/pull/436 发布

Please submit the correct information, invalid information will cause the issue to close


Wandb setup

What happened with the fracnet environemnt
before merging to main, merge main into yours. updates happened
already added callbacks to the learner


Phone number visible by non-logged-in users

https://beta.hydroshare.org/user/11/
Do we want phone numbers exposed like this?  We have a "(Log in to send email)" blocker for email, but the phone number is visible in plain text without logging on?
005.zip

I do not object to phone number being exposed.  A user does not have to submit a phone number to get an account, while they do have to submit an email address.  We should (and perhaps do) have a message indicating that content added to the profile is public information and not to provide it if you do not want it to be public.  I'd be happy for this content handling to be reviewed and to consider enhancements to improve this, but I do not think this is a security issue, and only marginally is this a bug.

Consider closing this

Closing. Profile information is public by default.

Closing. Profile information is public by default.


Fix bloom filter aggregate failure because of incorrect null check

According to the DecodedVector::mayHaveNulls definition, it's uncertain whether there are nulls when mayHaveNulls is true.
https://github.com/facebookincubator/velox/blob/e8e84e38444c9292c2a79e0ea5c72a5c6312482f/velox/vector/DecodedVector.h#L184-L188
In Gluten, we found with current implementation, some of the Spark TPCDS queries that uses the BloomFilter aggregate fails because the bloom_filter_agg incorrectly fail based on the mayHaveNulls flag. We should remove the original check and, if mayHaveNulls is true, add a check for each row individually.

@mbasmanova Could you help to review? Thanks!

The input vector origins from xxhash() result, the null buffer should be nullptr, do you try
resultRef->clearNulls(rows); after this line? https://github.com/facebookincubator/velox/blob/main/velox/functions/sparksql/Hash.cpp#L363`


update emulator test

Closes #???
Description
fvm returns additional errors after upgrading, due to preprocessing.

```
[Error Code: 1101] error caused by: 2 errors occurred:
* transaction preprocess failed: [Error Code: 1101] cadence runtime error: Execution failed:
error: authorizer count mismatch for transaction: expected 0, got 1
--> 1ae04fd007e8137d3a433f2248b34770a249f148fcd2405480b2c0076d5129d8

* transaction verification failed: checking frozen account failed: cannot check account freeze status: [Error Code: 1201] account not found for address 01cf0e2f2f715450
```

For contributor use:

[x] Targeted PR against master branch
[x] Linked to GitHub issue with discussion and accepted design OR link to spec that describes this work
[x] Code follows the standards mentioned here
[x] Updated relevant documentation
[x] Re-reviewed Files changed in the GitHub PR explorer
[x] Added appropriate labels

I've split the test into two cases as suggested.  I'll merge this tomorrow assuming no objections.


The Odin Project link to your blog

Hey, Albert. I couldn't find an email link on your blog, so I figured this was the next best thing. :)
I'm a contributor to The Odin Project and I am working on fixing an issue on this page where the first reading assignment has broken.
I found your series on the Anatomy of a Rails Application and I would like to use it instead, but I was wondering if you were still planning on writing part III, because it would be great to give students an over view of all three parts of the rails MVC framework.

Hi Chad, thanks for reaching out!
I always meant to finish that series. Now that I know there's interest,
I'll definitely take a look at part 3.
I'm travelling right now, but I can take a crack at it early next week. The
Odin Project looks cool, and would love to be a part of it.
Feel free to email me at<EMAIL_ADDRESS>On Wed, Nov 2, 2016 at 5:32 AM, Chad Kreutzer<EMAIL_ADDRESS>wrote:

Hey, Albert. I couldn't find an email link on your blog, so I figured this
was the next best thing. :)
I'm a contributor to The Odin Project https://github.com/TheOdinProject
and I am working on fixing an issue on this page
http://www.theodinproject.com/courses/web-development-101/lessons/how-are-websites-built-in-the-real-world
where the first reading assignment has broken.
I found your series on the Anatomy of a Rails Application and I would like
to use it instead, but I was wondering if you were still planning on
writing part III, because it would be great to give students an over view
of all three parts of the rails MVC framework.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/albert-park/dotIO-blog/issues/1, or mute the thread
https://github.com/notifications/unsubscribe-auth/AJV8GK7NvkN9XkxSSIoV_wMtceEHfjxaks5q6ILsgaJpZM4KnLtw
.

Thanks, Albert,
Here is a link to the live page linking your series.
If you let me know when part III is published, I can add that link too.
Chad


Value of type 'Results' has no member 'dictionaryWithValues'

After update the realm sdk to last version i received this error:
Value of type 'Results' has no member 'dictionaryWithValues'
In this function:
realm.objects(TableName).dictionaryWithValues(by: SelectData)

Hi @waleednour,
dictionaryWithValues  is a method of NSObject or NSKeyValueCoding  to be specific, Results<> are a Swift struct so they do not support this. Only RLMResults supports this method.
Thanks,
Lee


Remove extra tracing in RK methods that don't use jumps

This line:
https://github.com/patrick-kidger/diffrax/blob/e219937d8ae89c3bdbaea31de1c2e7c671a15edd/diffrax/solver/runge_kutta.py#L313
involves re-tracing the vector field, even in the common scenario that we have no jumps.
It'll get compiled out, of course, but nonetheless this represents additional compilation overhead, that we should be able to improve.

Completed in #190.


Feature/player v8

This PR includes the following breaking changes and therefore needs a major version release:

Update to Player v8
Switch to webpack and yarn
Improve typings
Make package publishable

For only Player v8 related changes, please look at the diff of src/ts/ConvivaAnalytics.ts. This file has not been moved and mostly includes changes related to the player upgrade, including added types. The other changes are build related, due to outdated packages and vulnerabilities.


contents/ui/Qalculate.qml: ReferenceError: buttonIcon is not defined

The log has a lot of errors like
file:///usr/share/plasma/plasmoids/org.kde.plasma.qalculate/contents/ui/Qalculate.qml:155: ReferenceError: buttonIcon is not defined
file:///usr/share/plasma/plasmoids/org.kde.plasma.qalculate/contents/ui/Qalculate.qml:131: ReferenceError: buttonIcon is not defined
Indeed, buttonIcon is undefined. but is used 4 times in Qalculate.qml:
   131              return Math.min(units.iconSizeHints.panel, parent.height) * buttonIcon.aspectRatio;
   141              return Math.min(units.iconSizeHints.panel, parent.width) * buttonIcon.aspectRatio;
   155              return Math.min(units.iconSizeHints.panel, parent.height) * buttonIcon.aspectRatio;
   165              return Math.min(units.iconSizeHints.panel, parent.width) * buttonIcon.aspectRatio;

Thanks for reporting this. Should now be fixed, can you test it?

Looks like it is really fixed. Close.


LLMContext C++ unit tests and docs

Description
Closes #1297
By Submitting this PR I confirm:

I am familiar with the Contributing Guidelines.
When the PR is ready for review, new or existing tests cover these changes.
When the PR is ready for review, the documentation is up to date with these changes.

/merge


cmd/server: accounts: allow transactions with duplicate accountIds

In short this to allow transactions containing multiple transactionLines
to be posted. The inital usecase is for balanced micro-deposits that
don't impact the account's balance.
Issue: https://github.com/moov-io/paygate/issues/141

Closing this. We should create separate transactions for each micro-deposit.


Add support for hook to customise compute and management nodes

The current design optimises compute node startup time by installing a limited set of packages on top of the provided OS image. The recommendation to users is to install software to the shared filesystem /mnt/shared possibly using something like EasyBuild (#20) or Spack. This approach ensures that the software is build with modern compilers to take best advantage of the architectures available.
One disadvantage is the compiling everything from source is time consuming and error prone. For some packages which aren't performance critical yum installing them could be a user experience improvement.
I propose adding in hooks so that extra packages could be added with the OS package manger and user supplied scripts could be run.
Use cases

Installing things provided by the OS package manger or third party repositories that are difficult to build by hand
Making changes on a compute node (e.g. setting up permissions to write on local filesystems)

Questions

Should we do this?
How could we implement this?
How do we ensure the node doesn't check-in with the Slurm master until the user customisation script has finished?
Names are important - are these the right names for the concepts?

Implementation ideas

model this on the exisiting single ansible playbook with [mgmt] and [compute] node groups
define a well known location on the management node where, if this playbook was found it would be run


Markdown image does not support svg or it is broken

Description
Markdown supports images.
Flet supports images.
Flet images support svg.
Markdown does not seem to work with svgs.
Code example to reproduce the issue:
md1 = """
hello

![Screenshot of a comment on a GitHub issue showing an image, added in the Markdown, of an Octocat smiling and raising a tentacle.](https://myoctocat.com/assets/images/base-octocat.svg)

world
"""

def main(page: ft.Page):
    page.scroll = "auto"
    page.add(
        ft.Markdown(
            md1,
            selectable=True,
            extension_set=ft.MarkdownExtensionSet.GITHUB_WEB,
            on_tap_link=lambda e: page.launch_url(e.data),
        )
    )

ft.app(target=main, view=ft.AppView.WEB_BROWSER)

Describe the results you received:

Describe the results you expected:
hello

world
This code was directly copied from the github markdown docs: https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax
Additional information you deem important (e.g. issue happens only occasionally):
Flet version (pip show flet):
0.11
0.13
Operating system:
Win10
Additional environment details:
Does not work in either windows native app or web app either.
Note: the svg could contain links so clicking those should cause on_tap_link events in theory.

👍

You can test this feature with pre-release build of Flet.