Cannot mount configmap from ro, nodev, noexec, nosuid filesystem in rootless mode

Environmental Info:
K3s Version:
k3s version v1.26.3+k3s-30638072-dirty (30638072)
go version go1.19.7
Node(s) CPU architecture, OS, and Version:
Linux localhost.localdomain 4.18.0-425.19.2.el8_7.x86_64 #1 SMP Tue Apr 4 22:38:11 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Cluster Configuration:
No Cluster. Single server started via /opt/SP/k3sadm/k3s/bin/k3s server --rootless --disable traefik  --data-dir /var/SP/rancher/k3s from user systemd.
Describe the bug:
Mounting a configMap in rootless mode created on a filesystem that has one or more of the following mount options set to a container fails: ro, nodev, noexec, nosuid
Steps To Reproduce:

Build k3s from source.

Follow the prequisites for rootless.

Start k3s rootless via the the following systemd unit as non privileged user:
[Unit]
Description=k3s (Rootless)

[Service]
Environment=PATH=/opt/SP/k3sadm/k3s/bin:/usr/sbin:/usr/bin:/sbin:/bin
# NOTE: Don't try to run `k3s server --rootless` on a terminal, as it doesn't enable cgroup v2 delegation.
# If you really need to try it on a terminal, prepend `systemd-run --user -p Delegate=yes --tty` to create a systemd scope.
ExecStart=/opt/SP/k3sadm/k3s/bin/k3s server --rootless --disable traefik --data-dir /var/SP/rancher/k3s
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
Type=simple
KillMode=mixed

[Install]
WantedBy=default.target

Create a configMap on a filesystem that has one or more of the following mount options set: ro, nodev, noexec, nosuid. In my case:
/dev/mapper/vg1-varspranchervol on /var/SP/rancher type xfs (rw,nodev,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota)

and
kubectl create configmap test-config --from-file=/var/SP/rancher/test_mount/Hello.txt

ls -ld /var /var/SP/ /var/SP/rancher/ /var/SP/rancher/test_mount/
drwxr-xr-x. 21 root   root 4096 Apr 17 10:48 /var
drwxr-xr-x.  4 root   root   35 Apr 17 11:05 /var/SP/
drwxr-x---.  4 k3sadm k3s    35 May  3 15:27 /var/SP/rancher/
drwxr-xr-x.  2 k3sadm k3s    23 Apr 18 09:54 /var/SP/rancher/test_mount/

ls -l /var/SP/rancher/test_mount/Hello.txt
-rw-r--r--. 1 k3sadm k3s 6 Apr 18 09:54 /var/SP/rancher/test_mount/Hello.txt

cat /var/SP/rancher/test_mount/Hello.txt
Hello

k3sadm is the user used to start k3s.

Deploy a simple deployment via kubectl apply -f dummy_deploy.yml:
 ---
 apiVersion: apps/v1
 kind: Deployment
 metadata:
 name: test-deployment
 spec:
 replicas: 1
 selector:
     matchLabels:
     app: test
 template:
     metadata:
     labels:
         app: test
     spec:
     containers:
     - image: docker.io/busybox
         name: test-container
         command: [ "sleep", "86400" ]
         volumeMounts:
         - name: config
         mountPath: /mnt/Hello.txt
         subPath: Hello.txt
     volumes:
     - name: config
         configMap:
         name: test-config

Expected behavior:
Pod starts:
kubectl get pod -A
NAMESPACE     NAME                                      READY   STATUS    RESTARTS      AGE
kube-system   local-path-provisioner-76d776f6f9-wnbkm   1/1     Running   3 (32s ago)   39h
default       test-deployment-5f4ff88f68-s5hwd          1/1     Running   0             39h
kube-system   coredns-59b4f5bbd5-7rjwh                  1/1     Running   3 (32s ago)   39h
kube-system   metrics-server-7b67f64457-hpf9r           1/1     Running   3 (32s ago)   39h

Actual behavior:
Pod does not start:
kubectl get pod -A
NAMESPACE     NAME                                      READY   STATUS                       RESTARTS      AGE
default       test-deployment-5f4ff88f68-s5hwd          0/1     CreateContainerConfigError   0             39h
kube-system   coredns-59b4f5bbd5-7rjwh                  1/1     Running                      2 (36s ago)   39h
kube-system   local-path-provisioner-76d776f6f9-wnbkm   1/1     Running                      2 (36s ago)   39h
kube-system   metrics-server-7b67f64457-hpf9r           1/1     Running                      2 (36s ago)   39h

Additional context / logs:
Logs:
May 05 07:30:47 localhost.localdomain k3s[25104]: I0505 07:30:47.042246      28 scope.go:115] "RemoveContainer" containerID="9f59281156eeee969bf99e0e52e8b92824891121cf87a4572761e3006e562a0f"
May 05 07:30:47 localhost.localdomain k3s[25104]: E0505 07:30:47.848086      28 mount_linux.go:231] Mount failed: exit status 32
May 05 07:30:47 localhost.localdomain k3s[25104]: Mounting command: mount
May 05 07:30:47 localhost.localdomain k3s[25104]: Mounting arguments: --no-canonicalize -o bind,remount /proc/28/fd/153 /var/SP/rancher/k3s/agent/kubelet/pods/5a3ea7d9-f077-462b-8fcc-645cef659e3a/volume-subpaths/config/test-container/0
May 05 07:30:47 localhost.localdomain k3s[25104]: Output: mount: /var/SP/rancher/k3s/agent/kubelet/pods/5a3ea7d9-f077-462b-8fcc-645cef659e3a/volume-subpaths/config/test-container/0: mount point is not a directory.
May 05 07:30:47 localhost.localdomain k3s[25104]: W0505 07:30:47.851046      28 mount_helper_common.go:142] Warning: "/var/SP/rancher/k3s/agent/kubelet/pods/5a3ea7d9-f077-462b-8fcc-645cef659e3a/volume-subpaths/config/test-container/0" is not a mountpoint, deleting
May 05 07:30:47 localhost.localdomain k3s[25104]: E0505 07:30:47.851125      28 kubelet_pods.go:237] "Failed to prepare subPath for volumeMount of the container" err=<
May 05 07:30:47 localhost.localdomain k3s[25104]:         error mounting /var/SP/rancher/k3s/agent/kubelet/pods/5a3ea7d9-f077-462b-8fcc-645cef659e3a/volumes/kubernetes.io~configmap/config/..2023_05_03_15_29_28.4065326557/Hello.txt: mount failed: exit status 32
May 05 07:30:47 localhost.localdomain k3s[25104]:         Mounting command: mount
May 05 07:30:47 localhost.localdomain k3s[25104]:         Mounting arguments: --no-canonicalize -o bind,remount /proc/28/fd/153 /var/SP/rancher/k3s/agent/kubelet/pods/5a3ea7d9-f077-462b-8fcc-645cef659e3a/volume-subpaths/config/test-container/0
May 05 07:30:47 localhost.localdomain k3s[25104]:         Output: mount: /var/SP/rancher/k3s/agent/kubelet/pods/5a3ea7d9-f077-462b-8fcc-645cef659e3a/volume-subpaths/config/test-container/0: mount point is not a directory.
May 05 07:30:47 localhost.localdomain k3s[25104]:  > containerName="test-container" volumeMountName="config"
May 05 07:30:47 localhost.localdomain k3s[25104]: E0505 07:30:47.851171      28 kuberuntime_manager.go:872] container &Container{Name:test-container,Image:docker.io/busybox,Command:[sleep 86400],Args:[],WorkingDir:,Ports:[]ContainerPort{},Env:[]EnvVar{},Resources:ResourceRequirements{Limits:ResourceList{},Requests:ResourceList{},Claims:[]ResourceClaim{},},VolumeMounts:[]VolumeMount{VolumeMount{Name:config,ReadOnly:false,MountPath:/mnt/Hello.txt,SubPath:Hello.txt,MountPropagation:nil,SubPathExpr:,},VolumeMount{Name:kube-api-access-67qcq,ReadOnly:true,MountPath:/var/run/secrets/kubernetes.io/serviceaccount,SubPath:,MountPropagation:nil,SubPathExpr:,},},LivenessProbe:nil,ReadinessProbe:nil,Lifecycle:nil,TerminationMessagePath:/dev/termination-log,ImagePullPolicy:Always,SecurityContext:nil,Stdin:false,StdinOnce:false,TTY:false,EnvFrom:[]EnvFromSource{},TerminationMessagePolicy:File,VolumeDevices:[]VolumeDevice{},StartupProbe:nil,} start failed in pod test-deployment-5f4ff88f68-s5hwd_default(5a3ea7d9-f077-462b-8fcc-645cef659e3a): CreateContainerConfigError: failed to prepare subPath for volumeMount "config" of container "test-container"
May 05 07:30:47 localhost.localdomain k3s[25104]: E0505 07:30:47.851191      28 pod_workers.go:965] "Error syncing pod, skipping" err="failed to \"StartContainer\" for \"test-container\" with CreateContainerConfigError: \"failed to prepare subPath for volumeMount \\\"config\\\" of container \\\"test-container\\\"\"" pod="default/test-deployment-5f4ff88f68-s5hwd" podUID=5a3ea7d9-f077-462b-8fcc-645cef659e3a

The above message in the log is actually misleading:
Output: mount: /var/SP/rancher/k3s/agent/kubelet/pods/5a3ea7d9-f077-462b-8fcc-645cef659e3a/volume-subpaths/config/test-container/0: mount point is not a directory.
The mount actually fails with a permission denied. The below patch to https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/mount-utils/mount_linux.go or https://github.com/kubernetes/mount-utils/blob/master/mount_linux.go fixes the issue and creates the expected behaviour:
diff --git a/mount_linux.go b/mount_linux.go
index f0125fc..e593132 100644
--- a/mount_linux.go
+++ b/mount_linux.go
@@ -35,6 +35,8 @@ import (

        "github.com/moby/sys/mountinfo"

+       "golang.org/x/sys/unix"
+
        "k8s.io/klog/v2"
        utilexec "k8s.io/utils/exec"
        utilio "k8s.io/utils/io"
@@ -107,6 +109,38 @@ func (mounter *Mounter) hasSystemd() bool {
        return *mounter.withSystemd
 }

+// Do a bind mount including the needed remount for applying the bind opts.
+// If the remount fails figure out if the source filesystem has the ro, nodev,
+// noexec or nosuid flag set and try another remount with the found flags.
+func (mounter *Mounter) BindMountSensitive(mounterPath string, mountCmd string, source string, target string, fstype string, bindOpts []string, bindRemountOpts []string, bindRemountOptsSensitive []string, mountFlags []string, systemdMountRequired bool) error {
+       err := mounter.doMount(mounterPath, defaultMountCommand, source, target, fstype, bindOpts, bindRemountOptsSensitive, mountFlags, systemdMountRequired)
+       if err != nil {
+               return err
+       }
+       err = mounter.doMount(mounterPath, defaultMountCommand, source, target, fstype, bindRemountOpts, bindRemountOptsSensitive, mountFlags, systemdMountRequired)
+       if err == nil {
+               return nil
+       }
+       // Check if the source has ro, nodev, noexec, nosuid flag...
+       var s unix.Statfs_t
+       if err := unix.Statfs(source, &s); err != nil {
+               return &os.PathError{Op: "statfs", Path: source, Err: err}
+       }
+       // ... and retry the mount with flags found above.
+       flagMapping := map[int64]string {
+               unix.MS_RDONLY: "ro",
+               unix.MS_NODEV:  "nodev",
+               unix.MS_NOEXEC: "noexec",
+               unix.MS_NOSUID: "nosuid",
+       }
+       for k, v := range flagMapping {
+               if s.Flags & k == k {
+                       bindRemountOpts = append(bindRemountOpts, v)
+               }
+       }
+       return mounter.doMount(mounterPath, defaultMountCommand, source, target, fstype, bindRemountOpts, bindRemountOptsSensitive, mountFlags, systemdMountRequired)
+}
+
 // Mount mounts source to target as fstype with given options. 'source' and 'fstype' must
 // be an empty string in case it's not required, e.g. for remount, or for auto filesystem
 // type, where kernel handles fstype for you. The mount 'options' is a list of options,
@@ -127,11 +161,7 @@ func (mounter *Mounter) MountSensitive(source string, target string, fstype stri
        mounterPath := ""
        bind, bindOpts, bindRemountOpts, bindRemountOptsSensitive := MakeBindOptsSensitive(options, sensitiveOptions)
        if bind {
-               err := mounter.doMount(mounterPath, defaultMountCommand, source, target, fstype, bindOpts, bindRemountOptsSensitive, nil /* mountFlags */, mounter.trySystemd)
-               if err != nil {
-                       return err
-               }
-               return mounter.doMount(mounterPath, defaultMountCommand, source, target, fstype, bindRemountOpts, bindRemountOptsSensitive, nil /* mountFlags */, mounter.trySystemd)
+               return mounter.BindMountSensitive(mounterPath, defaultMountCommand, source, target, fstype, bindOpts, bindRemountOpts, bindRemountOptsSensitive, nil /* mountFlags */, mounter.trySystemd)
        }
        // The list of filesystems that require containerized mounter on GCI image cluster
        fsTypesNeedMounter := map[string]struct{}{
@@ -156,11 +186,7 @@ func (mounter *Mounter) MountSensitiveWithoutSystemdWithMountFlags(source string
        mounterPath := ""
        bind, bindOpts, bindRemountOpts, bindRemountOptsSensitive := MakeBindOptsSensitive(options, sensitiveOptions)
        if bind {
-               err := mounter.doMount(mounterPath, defaultMountCommand, source, target, fstype, bindOpts, bindRemountOptsSensitive, mountFlags, false)
-               if err != nil {
-                       return err
-               }
-               return mounter.doMount(mounterPath, defaultMountCommand, source, target, fstype, bindRemountOpts, bindRemountOptsSensitive, mountFlags, false)
+               return mounter.BindMountSensitive(mounterPath, defaultMountCommand, source, target, fstype, bindOpts, bindRemountOpts, bindRemountOptsSensitive, mountFlags, false)
        }
        // The list of filesystems that require containerized mounter on GCI image cluster
        fsTypesNeedMounter := map[string]struct{}{

Similar issues for bind mounts of filesystems with one or more of ro, nodev, noexec, nosuid set are fixed in crun or are under review for runc.

If the issue needs to be patched in core Kubernetes code, I'm curious why you opened the issue here instead of opening an issue and PR against Kubernetes itself.

cc @AkihiroSuda

Because I wasn't sure if running rootless is something you only support in k3s and hence needs to be patched here locally.
I discovered it with k3s and I am not sure if Kubernetes would accept these kind of reports.

But I can open an issue at https://github.com/kubernetes/mount-utils/ if this is better / helps.

https://github.com/kubernetes/kubernetes/tree/master/staging/src/k8s.io/mount-utils is the correct upstream; kubernetes/mount-utils is staged out of the main Kubernetes repo.
You will probably also have to petition for a backport if you want it fixed on anything other than 1.28.

BindMountSensitive

This might be more robust
https://github.com/moby/moby/blob/v23.0.5/daemon/oci_linux.go#L430-L460
// Get the set of mount flags that are set on the mount that contains the given
// path and are locked by CL_UNPRIVILEGED. This is necessary to ensure that
// bind-mounting "with options" will not fail with user namespaces, due to
// kernel restrictions that require user namespace mounts to preserve
// CL_UNPRIVILEGED locked flags.
func getUnprivilegedMountFlags(path string) ([]string, error) {
	var statfs unix.Statfs_t
	if err := unix.Statfs(path, &statfs); err != nil {
		return nil, err
	}

	// The set of keys come from https://github.com/torvalds/linux/blob/v4.13/fs/namespace.c#L1034-L1048.
	unprivilegedFlags := map[uint64]string{
		unix.MS_RDONLY:     "ro",
		unix.MS_NODEV:      "nodev",
		unix.MS_NOEXEC:     "noexec",
		unix.MS_NOSUID:     "nosuid",
		unix.MS_NOATIME:    "noatime",
		unix.MS_RELATIME:   "relatime",
		unix.MS_NODIRATIME: "nodiratime",
	}

	var flags []string
	for mask, flag := range unprivilegedFlags {
		if uint64(statfs.Flags)&mask == mask {
			flags = append(flags, flag)
		}
	}

	return flags, nil
}

@AkihiroSuda : I guess like the below then, correct?:
diff --git a/mount_linux.go b/mount_linux.go
index f0125fc..87a8aa1 100644
--- a/mount_linux.go
+++ b/mount_linux.go
@@ -35,6 +35,8 @@ import (

 	"github.com/moby/sys/mountinfo"

+	"golang.org/x/sys/unix"
+
 	"k8s.io/klog/v2"
 	utilexec "k8s.io/utils/exec"
 	utilio "k8s.io/utils/io"
@@ -107,6 +109,43 @@ func (mounter *Mounter) hasSystemd() bool {
 	return *mounter.withSystemd
 }

+// Do a bind mount including the needed remount for applying the bind opts.
+// If the remount fails figure out if the source filesystem has the ro, nodev,
+// noexec, nosuid, noatime, relatime or nodiratime flag set and try another
+// remount with the found flags.
+func (mounter *Mounter) BindMountSensitive(mounterPath string, mountCmd string, source string, target string, fstype string, bindOpts []string, bindRemountOpts []string, bindRemountOptsSensitive []string, mountFlags []string, systemdMountRequired bool) error {
+	err := mounter.doMount(mounterPath, defaultMountCommand, source, target, fstype, bindOpts, bindRemountOptsSensitive, mountFlags, systemdMountRequired)
+	if err != nil {
+		return err
+	}
+	err = mounter.doMount(mounterPath, defaultMountCommand, source, target, fstype, bindRemountOpts, bindRemountOptsSensitive, mountFlags, systemdMountRequired)
+	if err == nil {
+		return nil
+	}
+	// Check if the source has ro, nodev, noexec, nosuid, noatime, relatime,
+	// nodiratime flag...
+	var s unix.Statfs_t
+	if err := unix.Statfs(source, &s); err != nil {
+		return &os.PathError{Op: "statfs", Path: source, Err: err}
+	}
+	// ... and retry the mount with flags found above.
+	flagMapping := map[int64]string {
+		unix.MS_RDONLY:     "ro",
+		unix.MS_NODEV:      "nodev",
+		unix.MS_NOEXEC:     "noexec",
+		unix.MS_NOSUID:     "nosuid",
+		unix.MS_NOATIME:    "noatime",
+		unix.MS_RELATIME:   "relatime",
+		unix.MS_NODIRATIME: "nodiratime",
+	}
+	for k, v := range flagMapping {
+		if s.Flags & k == k {
+			bindRemountOpts = append(bindRemountOpts, v)
+		}
+	}
+	return mounter.doMount(mounterPath, defaultMountCommand, source, target, fstype, bindRemountOpts, bindRemountOptsSensitive, mountFlags, systemdMountRequired)
+}
+
 // Mount mounts source to target as fstype with given options. 'source' and 'fstype' must
 // be an empty string in case it's not required, e.g. for remount, or for auto filesystem
 // type, where kernel handles fstype for you. The mount 'options' is a list of options,
@@ -127,11 +166,7 @@ func (mounter *Mounter) MountSensitive(source string, target string, fstype stri
 	mounterPath := ""
 	bind, bindOpts, bindRemountOpts, bindRemountOptsSensitive := MakeBindOptsSensitive(options, sensitiveOptions)
 	if bind {
-		err := mounter.doMount(mounterPath, defaultMountCommand, source, target, fstype, bindOpts, bindRemountOptsSensitive, nil /* mountFlags */, mounter.trySystemd)
-		if err != nil {
-			return err
-		}
-		return mounter.doMount(mounterPath, defaultMountCommand, source, target, fstype, bindRemountOpts, bindRemountOptsSensitive, nil /* mountFlags */, mounter.trySystemd)
+		return mounter.BindMountSensitive(mounterPath, defaultMountCommand, source, target, fstype, bindOpts, bindRemountOpts, bindRemountOptsSensitive, nil /* mountFlags */, mounter.trySystemd)
 	}
 	// The list of filesystems that require containerized mounter on GCI image cluster
 	fsTypesNeedMounter := map[string]struct{}{
@@ -156,11 +191,7 @@ func (mounter *Mounter) MountSensitiveWithoutSystemdWithMountFlags(source string
 	mounterPath := ""
 	bind, bindOpts, bindRemountOpts, bindRemountOptsSensitive := MakeBindOptsSensitive(options, sensitiveOptions)
 	if bind {
-		err := mounter.doMount(mounterPath, defaultMountCommand, source, target, fstype, bindOpts, bindRemountOptsSensitive, mountFlags, false)
-		if err != nil {
-			return err
-		}
-		return mounter.doMount(mounterPath, defaultMountCommand, source, target, fstype, bindRemountOpts, bindRemountOptsSensitive, mountFlags, false)
+		return mounter.BindMountSensitive(mounterPath, defaultMountCommand, source, target, fstype, bindOpts, bindRemountOpts, bindRemountOptsSensitive, mountFlags, false)
 	}
 	// The list of filesystems that require containerized mounter on GCI image cluster
 	fsTypesNeedMounter := map[string]struct{}{

Meanwhile there is an upstream PR: https://github.com/kubernetes/kubernetes/pull/118457 . Unfortunately it is still stuck before initial tests as these need to be approved before they get run.

https://github.com/kubernetes/kubernetes/pull/118457 is now merged and it will be part of 1.31. There are currently no proposals for a backport.

Fixed only 10 months later! Sounds about right for Kubernetes.

Closing as fixed upstream in v1.31.


The well-foundedness check is a bit too restrictive

Boltzmann brain rejects the binary tree example from the example folder with the following error message:
[ERR] (18-09-2020 13:40:32) Given system is not well-founded at zero.

The grammar is:
B = Leaf (0) | Node B B.

I guess using --force on this particular example is fine but I think it'd be nice if bb could accept this type of grammars.

It would be a nice feature. Unfortunately, it requires the so-called general implicit theorem and, in particular, a different algorithm, see Section 5.2 of "Algorithms for Combinatorial Structures: Well-Founded Systems and Newton Iteration" by Pivoteau, Salvy, and Soria.

For the time being, you can use the --force flag.

Oh I see, thanks for the pointer! I didn't suspect this to be that a subtle point.
If I can use the --force flag whenever I know the general implicit theorem applies, this is not a big issue then.


feature: add latency to delayed job metrics

This PR adds latency for delayed job jobs

Hey @SamSaffron, would you take a quick look of this please? thanks in advance!

can you also amend the readme here? Is the latency going to be accurate, can you explain the value of the metric? Also looks like CI is failing

we are trying to implement queues based on latency, the whole idea is explained here. The main concept is to have queues that ensures that all of their jobs will start running in no less time than certain latency. This metric allows to detect if an increase in CPU or number of workers  is needed for a certain queue.

can you also amend the readme here?

where exactly?

where exactly?

REAMDE.md in the root :)

I already included the metric in the readme I'm not sure if you wanted me to add anything else. About the accuracy, there might be some loss of precision because of the sleep_delay parameter implemented by delayed job I am mentioning it in the README too.
Also, all the workflows should be passing now, would you please run the tests again?

I think we had some internal examples of time mocking without timecop, can we move to that, after that is done I am happy to merge!

Thanks Sam! Timecop removed

looks good, thanks!


🐛 Bug Report: cannot use GitLab Org Data and Discovery together anymore

📜 Description
We are using both the GitLab Org Data and the GitLab Discovery together.
Therefore we use the following config:
catalog:
  providers:
    gitlab:
      gitlab-users:
        host: REDACTED
        orgEnabled: true
        group: pe-teams
        schedule:
          frequency: PT1H
          timeout: PT50M
        rules:
          - allow: [Group, User]
      gitlab-projects:
        host: REDACTED
        schedule:
          frequency: PT1H
          timeout: PT50M

On Backstage v1.26 this was working well because the OrgData entity provider was just ignoring gitlab providers with orgEnabled not set.
Since 1.27 (see commit), the behavior has been changed to throw an error if  orgEnabled is not set, so this is a breaking, probably unintentional, change which makes it impossible to use Org Data & Discovery together.
👍 Expected behavior
Backstage to start normally and scan for org data (groups and users) from our Gitlab instance + scan / perform discovery from projects from our Gitlab instance
👎 Actual Behavior with Screenshots
Backstage fails to start with an error:
❯ yarn dev
yarn run v1.22.22
$ concurrently "yarn start" "yarn start-backend"
$ yarn workspace app start
$ yarn workspace backend start
$ backstage-cli package start
$ backstage-cli package start
[0] Loaded config from app-config.yaml
[0] <i> [webpack-dev-server] Project is running at:
[0] <i> [webpack-dev-server] Loopback: http://localhost:3000/, http://<IP_ADDRESS>:3000/
[0] <i> [webpack-dev-server] Content not from webpack is served from '/Users/REDACTED/backstage/backstage/packages/app/public' directory
[0] <i> [webpack-dev-server] 404s will fallback to '/index.html'
[0] <i> [webpack-dev-middleware] wait until bundle finished: /
[1] Loading config from MergedConfigSource{FileConfigSource{path="/Users/REDACTED/backstage/backstage/app-config.yaml"}, FileConfigSource{path="/Users/REDACTED/backstage/backstage/app-config.local.yaml"}, EnvConfigSource{count=0}}
[1] 2024-05-21T17:49:15.867Z backstage info Found 4 new secrets in config that will be redacted
[1] 2024-05-21T17:49:15.883Z rootHttpRouter info Listening on :7007
[1] 2024-05-21T17:49:15.887Z backstage info Plugin initialization started: 'app', 'proxy', 'scaffolder', 'techdocs', 'auth', 'catalog', 'permission', 'search', 'announcements', 'kubernetes', 'gitlab' type=initialization
[1] (node:30131) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 message listeners added to [process]. Use emitter.setMaxListeners() to increase limit
[1] (Use `node --trace-warnings ...` to show where the warning was created)
[1] 2024-05-21T17:49:16.275Z gitlab info [HPM] Proxy created: (_pathname, req) => {
[1]     var _a;
[1]     headersManipulation(req.headers);
[1]     return req.method === "POST" && !((_a = req.body.query) == null ? void 0 : _a.includes("mutation"));
[1]   }  -> https://REDACTED
[1] 2024-05-21T17:49:16.275Z gitlab info [HPM] Proxy rewrite rule created: "^/api/gitlab/graphql/REDACTED" ~> "/api/graphql"
[1] 2024-05-21T17:49:16.276Z gitlab info [HPM] Proxy created: (_pathname, req) => {
[1]     headersManipulation(req.headers);
[1]     return req.method === "GET";
[1]   }  -> https://REDACTED
[1] 2024-05-21T17:49:16.276Z gitlab info [HPM] Proxy rewrite rule created: "^/api/gitlab/rest/REDACTED" ~> "/api/v4"
[1] 2024-05-21T17:49:16.277Z gitlab info [HPM] Proxy created: (_pathname, req) => {
[1]     var _a;
[1]     headersManipulation(req.headers);
[1]     return req.method === "POST" && !((_a = req.body.query) == null ? void 0 : _a.includes("mutation"));
[1]   }  -> https://gitlab.com
[1] 2024-05-21T17:49:16.277Z gitlab info [HPM] Proxy rewrite rule created: "^/api/gitlab/graphql/gitlab.com" ~> "/api/graphql"
[1] 2024-05-21T17:49:16.278Z gitlab info [HPM] Proxy created: (_pathname, req) => {
[1]     headersManipulation(req.headers);
[1]     return req.method === "GET";
[1]   }  -> https://gitlab.com
[1] 2024-05-21T17:49:16.278Z gitlab info [HPM] Proxy rewrite rule created: "^/api/gitlab/rest/gitlab.com" ~> "/api/v4"
[1] 2024-05-21T17:49:16.312Z kubernetes info Initializing Kubernetes backend
[1] 2024-05-21T17:49:16.312Z kubernetes warn Failed to initialize kubernetes backend: kubernetes config is missing
[1] 2024-05-21T17:49:16.316Z auth info Configuring "database" as KeyStore provider
[1] 2024-05-21T17:49:16.317Z techdocs info Creating Local publisher for TechDocs
[1] 2024-05-21T17:49:16.328Z scaffolder info Starting scaffolder with the following actions enabled infinity:api:call, gitlab:cookiecutter:repo:push, fetch:cookiecutter, fetch:plain, fetch:plain:file, fetch:template, debug:log, debug:wait, catalog:register, catalog:fetch, catalog:write, fs:delete, fs:rename
[1] 2024-05-21T17:49:16.332Z search info Added DefaultCatalogCollatorFactory collator factory for type software-catalog
[1] 2024-05-21T17:49:16.332Z search info Added DefaultTechDocsCollatorFactory collator factory for type techdocs
[1] /Users/REDACTED/backstage/backstage/node_modules/@backstage/backend-app-api/src/wiring/BackendInitializer.ts:273
[1]                 throw new ForwardedError(
[1]                       ^
[1]
[1]
[1] ForwardedError: Module 'gitlabOrgDiscoveryEntityProvider' for plugin 'catalog' startup failed; caused by Error: Org not enabled for gitlab-projects.
[1]     at <anonymous> (/Users/REDACTED/backstage/backstage/node_modules/@backstage/backend-app-api/src/wiring/BackendInitializer.ts:273:23)
[1]     at <anonymous> (/Users/REDACTED/backstage/backstage/node_modules/@backstage/backend-app-api/src/wiring/BackendInitializer.ts:272:15)
[1]     at processNode (/Users/REDACTED/backstage/backstage/node_modules/@backstage/backend-app-api/src/lib/DependencyGraph.ts:234:22)
[1]     ... 7 lines matching cause stack trace ...
[1]     at BackstageBackend.start (/Users/REDACTED/backstage/backstage/node_modules/@backstage/backend-app-api/src/wiring/BackstageBackend.ts:42:11) {
[1]   cause: Error: Org not enabled for gitlab-projects.
[1]       at <anonymous> (/Users/REDACTED/backstage/backstage/node_modules/@backstage/plugin-catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts:136:15)
[1]       at Array.forEach (<anonymous>)
[1]       at Function.fromConfig (/Users/REDACTED/backstage/backstage/node_modules/@backstage/plugin-catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts:132:21)
[1]       at Object.init (/Users/REDACTED/backstage/backstage/node_modules/@backstage/plugin-catalog-backend-module-gitlab-org/src/catalogModuleGitlabOrgDiscoveryEntityProvider.ts:46:46)
[1]       at <anonymous> (/Users/REDACTED/backstage/backstage/node_modules/@backstage/backend-app-api/src/wiring/BackendInitializer.ts:272:37)
[1]       at processNode (/Users/REDACTED/backstage/backstage/node_modules/@backstage/backend-app-api/src/lib/DependencyGraph.ts:234:22)
[1]       at async Promise.all (index 2)
[1]       at processMoreNodes (/Users/REDACTED/backstage/backstage/node_modules/@backstage/backend-app-api/src/lib/DependencyGraph.ts:226:7)
[1]       at _DependencyGraph.parallelTopologicalTraversal (/Users/REDACTED/backstage/backstage/node_modules/@backstage/backend-app-api/src/lib/DependencyGraph.ts:242:5)
[1]       at <anonymous> (/Users/REDACTED/backstage/backstage/node_modules/@backstage/backend-app-api/src/wiring/BackendInitializer.ts:265:11)
[1]       at async Promise.all (index 5)
[1]       at BackendInitializer.doStart_fn (/Users/REDACTED/backstage/backstage/node_modules/@backstage/backend-app-api/src/wiring/BackendInitializer.ts:236:5)
[1]       at BackendInitializer.start (/Users/REDACTED/backstage/backstage/node_modules/@backstage/backend-app-api/src/wiring/BackendInitializer.ts:150:5)
[1]       at BackstageBackend.start (/Users/REDACTED/backstage/backstage/node_modules/@backstage/backend-app-api/src/wiring/BackstageBackend.ts:42:11)
[1] }
[1]
[1] Node.js v18.20.2

👟 Reproduction steps
Configure both GitLab org data + discovery to the same GitLab instance:
catalog:
  providers:
    gitlab:
      gitlab-users:
        host: REDACTED
        orgEnabled: true
        group: pe-teams
        schedule:
          frequency: PT1H
          timeout: PT50M
        rules:
          - allow: [Group, User]
      gitlab-projects:
        host: REDACTED
        schedule:
          frequency: PT1H
          timeout: PT50M

📃 Provide the context for the Bug.

[X] I checked and didn't find similar issue

🏢 Have you read the Code of Conduct?

[X] I have read the Code of Conduct

Are you willing to submit PR?
None

Pinging @elaine-mattos who committed the change causing this behavior.

Oh shoot! I'm sorry to hear it broke your setup @ZF-fredericvanlinthoudt !
@freben , I can take a look at it as soon as https://github.com/backstage/backstage/pull/24838 gets merged. 🥲

Hi @freben ,
I just went ahead and submitted a PR for this. Could you please take a look at it? https://github.com/backstage/backstage/pull/24862
I will go through the list of the other points you mentioned here later, ok?


SCSS Sort Order

Ran import.css through csscomb.com/online and expected import.expected.scss instead I got:
div
{
    color: tomato; @import 'foo.css';
}

Seeing similar issue with @include and @extend
Noticed this bug using plugins for atom that rely on this library.

---
Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/33392049-scss-sort-order?utm_campaign=plugin&utm_content=tracker%2F214563&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F214563&utm_medium=issues&utm_source=github).

Yeah my csscomb in Atom is pretty much useless. I can't use it on any of my .scss files without it ruining my code.
I have things set up like...
div {
    display: none;
}
@include bp(min-width, $bp-small+1) {
    div {
        display: block;
    }
}
@include bp(min-width, $bp-medium+1) {
    div {
       display: inline-block;
    }
}

running csscomb turns my file into...
@include bp(min-width, $bp-small+1) {
    div {
        display: block;
    }
}
@include bp(min-width, $bp-medium+1) {
    div {
       display: inline-block;
    }
}
div {
    display: none;
}

Which obviously is not good lol.

Hi @octoxan,
Do you have the problem if you use this structure? :
div {
    display: none;

    @include bp(min-width, $bp-small+1) {
        display: block;
    }

    @include bp(min-width, $bp-medium+1) {
        display: inline-block;
    }
}

Thanks

Hi @tomagladiator,
I have the same problem as @octoxan, even with the structure you mentioned.

Hi @tomagladiator,
Is that possible make selectors sortable as properties, because SASS is nested, we have many situations like this.

Then the config will like this:
"sort-order": [
[ "$variable" ],
[ "$include" ],
[ "..." ],
["$selector"]
[ "$include media" ]
]


Drop python 3 4

Coverage decreased (-0.1%) to 86.019% when pulling e71c378fea8ee45a2f67807bdc43012d82d3f0e5 on drop_python_3_4 into 9b79530447fbae02aea793e1ce111a4161a99e0a on development.


Create balladoftheboundlessblue

Thanks for the effort you put into this PR, but I'm closing this in favor of https://github.com/genshinsim/gcsim/pull/1744, because it followed the checklist which you can see here.


Create Song “2024-08-28/index”

Automatically generated by Netlify CMS

👷 Deploy Preview for netlify-nhom-6 processing.

Name
Link

🔨 Latest commit
50b58926dc0fdca92fa076e8555f03415c75b92d

🔍 Latest deploy log
https://app.netlify.com/sites/netlify-nhom-6/deploys/66cf29103727620008a06889


page not updated

The controls on this page haven't been updated to reflect new information as of 11-13-2020
20H2 update included additional controls:
https://docs.microsoft.com/en-us/hololens/hololens-release-notes
[Enter feedback here]

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

ID: 659d0469-51e7-bf41-6913-c249d05548b6
Version Independent ID: 7732d212-5328-9c03-7270-572146c074e8
Content: Policies in Policy CSP supported by HoloLens 2 - Windows Client Management
Content Source: windows/client-management/mdm/policies-in-policy-csp-supported-by-hololens2.md
Product: w10
Technology: windows
GitHub Login: @ManikaDhiman
Microsoft Alias: dansimp

I would love to help out with updates, but unfortunately I don't have enough personal experience with this topic to know exactly what the changes should look like.

Hello, resolved by  https://github.com/MicrosoftDocs/windows-itpro-docs/commit/b83eb4e191a0564d1c70991c25d80728ef11ec6b, https://github.com/MicrosoftDocs/windows-itpro-docs/commit/a9a7b85b6836362b122250851eab8319c16d1baf and https://github.com/MicrosoftDocs/windows-itpro-docs/commit/991070cce473892719b8a7ef3755a2fce5523ac8
Thank you

@dustinhess Please let us know if you still have any question regarding the issue you have raised initially.
The issue is being closed since your question seems to be answered. Feel free to re-open this issue if you feel that it hasn't been answered or that there are further suggestions to improve the documentation itself.
Thanks.


How to use a TLS connection?

Is there an easy way to create a TLS connection? All of your examples are using http (non-TLS) connections. There is a function RestClient::with_builder but it is private. How else can I provide a builder such that I can construct it with an HttpsConnector? Here is what I'd like to do:
    let client = Client::builder().build(HttpsConnector::new());
    RestClient::with_buidler("https://api.com", client)

It looks like you use an HttpsConnector here but there seems to be no way to match that case using any public constructors:
https://github.com/spietika/restson-rust/blob/cee28ca2b03d454fb2e6469a18992f6c8eca1903/src/lib.rs#L260

Nevermind, I traced the code and the RestClient::new ultimately builds the HttpsConnector client. My issue was related to ssl certificate verification which is particular to the certificate, not this library.


View your own pull requests from the main window

Resolves #4.

To Do:

[x] Fine tune the number of pull requests that should be returned. Is 30 okay?
[x] Sort the pull requests by the date in which they were created (blocked by @github GraphQL schema request)
[ ] Show pull requests from all affiliated repositories (blocked by @github GraphQL schema request)
[x] Add tests
[ ] Add screenshots to the readme

Rather than let this sit any longer, I'd like to merge it. I'll follow up with screenshot updates to the README and hopefully the ability to fetch PRs from all affiliated repositories is soon on the way.


Replace polyfill.io

AreWeAntiCheatYet uses polyfill.io to load polyfill for Array.prototype.at. The PR replaces polyfill.io with cdnjs.cloudflare.com/polyfill.

polyfill.io was acquired by a China-based CDN company "Funnull", see the announcement from the polyfill.io domain owner's Twitter and https://github.com/polyfillpolyfill/polyfill-service/issues/2834. Despite Funnull's claims of operating in the United States, the predominance of Simplified Chinese on its website suggests otherwise, and it turns out that "Funnull" is notorious for providing service for the betting and pornography industries.
The original creator of the polyfill.io has voiced his concern on Twitter. And since the acquisition, numerous issues have emerged (https://github.com/polyfillpolyfill/polyfill-service/issues/2835, https://github.com/polyfillpolyfill/polyfill-service/issues/2838, https://github.com/alist-org/alist/issues/6100), rendering the polyfill.io service extremely unstable. Since then, Fastly (Announcement) and Cloudflare (Announcement) has hosted their own instances of polyfill.io service.

Thanks for bringing this up!


Add a dark mode?

Would it be possible to add a dark mode option?

Certainly would be possible to implement.. just a matter of wrangling up the once active devs who've been busy with other aspects of life as of late.
A new layout issue is likely the top priority currently (see https://github.com/team-inbox/inbox-reborn/issues/20)
I'd certainly take on the task once I come up with a proper solution for the above, though!

A light mode would be good as well, replacing the blue hues with white or light gray.

@Madis0— you're more than welcome to contribute code 😜


Any rules to forward media only and not text msgs ? and time limit between each forward ?

in case we want to forward entire media from source to destination and put a choice like only images / videos / documents etc cuz entire chat is unnecessary

telegram can ban account if mass forward takes place in one go so time limit between each msg is must else boom boom !
will you please consider these : )

I think it's a nice idea to add some filters based on the message type on the rules file. Working on it.


fix affiliations

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


Add support for ctrl-r insert-mode pasting

@wind0204 Would you be willing to try this out and make sure it's all working as you'd expect? I've never actually used ctrl-r before and don't feel 100% qualified to claim it works.

@wind0204 Would you be willing to try this out and make sure it's all working as you'd expect? I've never actually used ctrl-r before and don't feel 100% qualified to claim it works.

I'm happy to help @jasonccox. This code did work for me but I found out that there are a few more features in vim similar to the feature of i_CTRL-R when I took a look at https://github.com/kana/vim-fakeclip/blob/59858dabdb55787d7f047c4ab26b45f11ebb533b/plugin/fakeclip.vim#L238 yesterday which are i_CTRL-R_CTRL-O, i_CTRL-R_CTRL-P and i_CTRL-R_CTRL-R. --I think it would be nice to also support these cases just in case someone would copy-paste a lot of code. These features are aware of code indentation.

I found out that there are a few more features in vim similar to the feature of i_CTRL-R when I took a look at https://github.com/kana/vim-fakeclip/blob/59858dabdb55787d7f047c4ab26b45f11ebb533b/plugin/fakeclip.vim#L238 yesterday which are i_CTRL-R_CTRL-O, i_CTRL-R_CTRL-P and i_CTRL-R_CTRL-R. --I think it would be nice to also support these cases just in case someone would copy-paste a lot of code. These features are aware of code indentation.

I included those in the change as well, actually. Can you take one more look and see if they're working as well?

I thought they were not supported but they do work fine, the problem was in yanking part, whenever I yank the register is filled with a short string 'wl' while the wayland clipboard is correctly getting filled with the selected part of the buffer, I can paste the selected part out of vim, but when I paste using "+ register the buffer gets the short string 'wl'.
I'll do more investigation on this. I have done some investigation but so far I've found an unrelated bug: calling has function with '+clipboard' as an argument instead of 'clipboard'
diff --git a/plugin/wayland_clipboard.vim b/plugin/wayland_clipboard.vim
index 0ca2c4b..6c10093 100644
--- a/plugin/wayland_clipboard.vim
+++ b/plugin/wayland_clipboard.vim
@@ -22,14 +22,14 @@ endif

 " Yanking {{{

-" On Vim builds without '+clipboard', the '+' register doesn't work for
+" On Vim builds without 'clipboard', the '+' register doesn't work for
 " yanking. My solution is to map '"+' to '"w' and send the 'w' register to the
 " Wayland clipboard as well.
 "
 " This variable controls whether '"+' gets mapped to '"w'. It's on by default
-" if the '+clipboard' feature isn't available, but the user can turn it off
+" if the 'clipboard' feature isn't available, but the user can turn it off
 " always if desired.
-let s:plus_to_w = !has('+clipboard') && !exists('g:wayland_clipboard_no_plus_to_w')
+let s:plus_to_w = !has('clipboard') && !exists('g:wayland_clipboard_no_plus_to_w')

 " remap '"+' to '"w' -- this will only apply to yanking since '"+p' and '"+P'
 " are also remapped below

Well I didn't know that the string written in "+ is not important at all when I posted https://github.com/jasonccox/vim-wayland-clipboard/pull/3#issuecomment-828920536 disregard my theory in this post please.
it turns out that this code does work fine in every function, it was just that this code doesn't help with the mappings in my vim rc file:
nnoremap <Leader>p "+p
nnoremap <Leader>P "+P

If I replace the unremappable mappings in my vim rc file with the normal version it works fine. I think a final touch of supporting .noremap mappings mapped by end users would be nice which somehow supported by https://github.com/kana/vim-fakeclip
I've just found a new bug in the tests: if you press + a little late after delay after pressing CTRL-R vim just writes what is really written in "+ register bypassing the mapping done by this plugin which somehow doesn't occur with https://github.com/kana/vim-fakeclip
I'm sorry for commenting too many times.

I've found out that the bug that just writes what is written in "+ when user has waited too long after pressing CTRL-R can be fixed by attaching & right at the end of the left-hand side argument for the mapping of CTRL-R pasting. like below:
for cr in ['<C-R>', '<C-R><C-R>', '<C-R><C-O>', '<C-R><C-P>']
    execute "map! " . cr . "+& <C-O>:<C-U>" . prepaste . "<CR>" . cr . "\""
endfor

Unfortunately however I haven't found any documentation about this magical ampersand.

I've found an unrelated bug: calling has function with '+clipboard' as an argument instead of 'clipboard'

You're right -- good catch! I've fixed that on master.

I think a final touch of supporting .noremap mappings mapped by end users would be nice which somehow supported by https://github.com/kana/vim-fakeclip

I've just found a new bug in the tests: if you press + a little late after pressing CTRL-R vim just writes what is really written in "+ register instead, bypassing the mapping done by the plugin, which somehow doesn't occur with https://github.com/kana/vim-fakeclip

I agree that these would be nice, but I'm honestly not that great with vimscript and don't know how I'd handle them. More importantly, though, this plugin is really just meant to be a simple workaround for the basic use cases. I'm glad that vim-fakeclip seems to support some more advanced use cases, and I won't be offended if you choose to keep using it instead.

Changing imap to map! to also support pasting in command mode would be very nice.

I tried this and unfortunately the mappings don't work as-is for command mode since they rely on entering command mode to mess with the registers. I may explore this more in the future, but for now I'll just leave that support out.
I think I'll add some notes to the readme about what exactly is supported and how to avoid issues with the mappings so that other users know what to expect. Thanks for your help testing and for diving into several of these issues!

I've found out that the bug that just writes what is written in "+ when user has waited too long after pressing CTRL-R can be fixed by attaching & right at the end of the left-hand side argument for the mapping of CTRL-R pasting. like below:
for cr in ['<C-R>', '<C-R><C-R>', '<C-R><C-O>', '<C-R><C-P>']
    execute "map! " . cr . "+& <C-O>:<C-U>" . prepaste . "<CR>" . cr . "\""
endfor

Unfortunately however I haven't found any documentation about this magical ampersand.
I was wrong about this, the ampersand prevents this mapping from working even when all the keys in a key sequence was pressed within 'timeoutlen', vim just waits for the last character '&'. Please disregard another wrong theory of mine. I'm sorry for writing wrong and confusing test results.

If I replace the unremappable mappings in my vim rc file with the normal version it works fine. I think a final touch of supporting .noremap mappings mapped by end users would be nice which somehow supported by https://github.com/kana/vim-fakeclip
I've just found a new bug in the tests: if you press + a little late after pressing CTRL-R vim just writes what is really written in "+ register instead, bypassing the mapping done by the plugin, which somehow doesn't occur with https://github.com/kana/vim-fakeclip
Changing imap to map! to also support pasting in command mode would be very nice.

I was wrong! all over my investigation, https://github.com/kana/vim-fakeclip doesn't support them either. both unremappable version mappings and waiting more than 'timeoutlen' milliseconds between key presses in the key sequences.

No worries! Thanks for all your help with this!


Small time zones in Canada

I've been working on trying to map the boundaries of IANA time zones in Canada in OSM. I'm glad to see that the most recent version of your map fixed some of the smaller time zones that used to be shown as limited to one city. However, I've noticed a couple more things that need to be fixed.

America/Swift_Current is difficult to map exactly because it's dependent on 1970s school districts. But my research of southern part of the border is a bit different than yours. Also, there are some towns on Lake Athabasca that follow America/Swift_Current. You can either show this by making America/Swift_Current two blocks, or do what I did and draw a straight line through the mostly-uninhabited space between Lake Athabasca and the south. (https://www.openstreetmap.org/relation/10424167)

America/Glace_Bay includes all of Cape Breton Island, plus some of the eastern mainland. I think it also includes some parts on the Bay of Fundy shore around Windsor, but I'm still working on finding the exact boundary. (https://www.openstreetmap.org/relation/10438273)

The boundary between America/Toronto and America/Nipigon is strange. So far as I can tell from the Shanks Atlas and online searches, most of Ontario did not use DST in the early 1970s, and was thus in America/Nipigon. Only the big cities followed DST. In most cases, not even the towns between cities used DST. But that turns America/Toronto into a messy patchwork. (https://www.openstreetmap.org/relation/6483867)

Hello @ArcticGnome! Thanks for all the research and OSM edits. I'll try to incorporate this into the next release. I'm curious, do you have a publicly available doc that lists the sources of your research? It would be good to cite that somehow.

Sorry for the late reply. My time zones in Yukon, Northwest Territories,
and Quebec all come from legislation, and are therefore exact. In Ontario
and New Nova Scotia I looked at when each town adopted DST according to
Thomas G Shanks "The International Atlas" 3rd ed, and then drew lines to
enclose those towns, following county boundaries if they were nearby. For
Saskatchewan, I also started with the Shanks atlas, but because time zones
there were based on what the closest school was at the time, I more often
drew the line at the midpoint between population centres.
On Sun, 25 Oct 2020 at 15:27, Evan Siroky<EMAIL_ADDRESS>wrote:

Closed #90
https://github.com/evansiroky/timezone-boundary-builder/issues/90 via
eabb18f
https://github.com/evansiroky/timezone-boundary-builder/commit/eabb18fc1e19245bc02e23e71f35689ca3dbd46e
.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/evansiroky/timezone-boundary-builder/issues/90#event-3918249684,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AIHSTKEKXI2A325C5CPY6ZDSMSJ5FANCNFSM4SQ47REQ
.


Upgrade stops without possibility to recover if no steps are necessary

If upgrade.php has nothing to do, it stops without any option to continue: the button is not reactive and the the timer goes on. The only option is to close the page and manually delete the upgrade directory.

Considering the comment in #2781 I feel this is no more a blocker and can be moved to RC1 pending confirmation of the actual status.


Feature/selective disclosure

Consider 3 participants: Issuer, Holder, Verifier.

Issuer creates a JSON, calculates merkle root (single hash, named commitment) and signs it.
Holder stores JSON, signature; then wants to provide only part of this JSON to Verifier.
Verifier is able to see merkle root and signature and is able to ask Holder for Merkle Proofs.

Selective disclosure in this case is the ability of Holder to create cryptographically valid Merkle Proofs, that prove that Issuer also signed those parts.
Usage example
@Value
class MyPojo{
 int a;
 int b;
 String c;
}

// prepare our key-value object (JSON) and a factory
val obj = new MyPojo(1337, 2, "hi");
val factory = new SelectiveDisclosureFactory();

val sd = factory.createCommitment(obj); // consists of salted JSON and a merkle tree

Hash commitment = sd.getCommitment(); // it is a single hash, which Issuer signs

// Holder shares `obj.a`, shares `commitment` and Issuer's signature

// verifier asks for proof that `obj.a` is really signed by `Issuer`
// verifier calculates a hash for `obj.a`:
String askKey = "/a"; // flattened key for `obj.a`
JsonNode askValue = /* 1337 + salt; value of `obj.a` */
Hash askHash = hashifier.hashJsonField(new SimpleField<>(askKey, askValue));
// sends askHash to Holder

// holder calculates the proof:
MerkleTreeProof proof = sd.createProof(askHash);

// sends back to Verifier this `proof`; verifier verifies the proof:
if(proof.verify(commitment)){
 // proof is valid, `obj.a` is really inside that hash and is signed by Issuer
} else {
  // proof is invalid
}

Codecov Report

Merging #11 into master will increase coverage by 0.38%.
The diff coverage is 71.92%.

@@             Coverage Diff              @@
##             master      #11      +/-   ##
============================================
+ Coverage     74.93%   75.32%   +0.38%
- Complexity      126      154      +28
============================================
  Files            31       32       +1
  Lines           383      462      +79
  Branches         42       46       +4
============================================
+ Hits            287      348      +61
- Misses           64       80      +16
- Partials         32       34       +2

Impacted Files
Coverage Δ
Complexity Δ

...soramitsu/sora/crypto/common/SecurityProvider.java
60% <0%> (ø)
4 <1> (ø)
:arrow_down:

.../jp/co/soramitsu/sora/crypto/common/ArrayTree.java
86.11% <100%> (+2.77%)
20 <5> (+5)
:arrow_up:

.../java/jp/co/soramitsu/sora/crypto/common/Hash.java
75% <100%> (+41.66%)
4 <1> (+3)
:arrow_up:

...oramitsu/sora/crypto/merkle/MerkleTreeFactory.java
75.67% <33.33%> (+0.67%)
10 <9> (-1)
:arrow_down:

.../soramitsu/sora/crypto/merkle/MerkleTreeProof.java
78.94% <40%> (-3.41%)
4 <4> (+1)

...u/sora/crypto/json/SelectiveDisclosureFactory.java
60.52% <60.52%> (ø)
2 <2> (?)

...jp/co/soramitsu/sora/crypto/merkle/MerkleTree.java
71.87% <64.28%> (-4.32%)
10 <6> (+5)

...tsu/sora/crypto/common/HexdigestSaltGenerator.java
85.71% <75%> (+35.71%)
2 <1> (+1)
:arrow_up:

...va/jp/co/soramitsu/sora/crypto/json/Saltifier.java
85.1% <83.33%> (-1.01%)
25 <7> (+7)

...va/jp/co/soramitsu/sora/crypto/json/Hashifier.java
89.28% <95.83%> (+8.03%)
9 <8> (+5)
:arrow_up:

... and 1 more

Continue to review full report at Codecov.

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


Adding "scenario" in workitem type mock generators

Adding "scenario" in workitem type mock generators
This wit is added from core so i have added mock data to match the master UI.

Can one of the admins verify this patch?

Can one of the admins verify this patch?

@ldimaggi , could you please review those changes !

[test]

[test]

Current coverage is 51.03% (diff: 0.00%)

Merging #682 into master will not change coverage

@@             master       #682   diff @@
==========================================
  Files            41         41
  Lines          2167       2167
  Methods         416        416
  Messages          0          0
  Branches        423        423
==========================================
  Hits           1106       1106
  Misses         1061       1061
  Partials          0          0

Powered by Codecov. Last update 2c93350...2b2cfcd


Issue Publishing Composer Bot to Azure Web App Bot

I've created a bot locally through the Composer Desktop Application (v1.0.2) using Luis for intent and entity recognition. I'm able to test the bot through the emulator with no issues, so naturally I'm trying to publish the bot to our Azure Portal so other users may test it.
The issue I'm running into is I cannot get the bot published following this documentation:
https://docs.microsoft.com/en-us/composer/how-to-publish-bot
I've tried creating a brand new resource group through the command line, followed up by pasting the resulting JSON into a publish profile in Composer (with a success message), but when I select 'Test in Web Chat', the bot does not present the welcome message nor handle any inputs I give it. I've also tried creating a Web App Bot using a smaller JSON file to create a second publishing profile in Composer (also with a success message) with the exact same result, no greeting and inputs not being handled.
I'm not sure what my next troubleshooting step should be, so any input would be greatly appreciated.

@Trubzzz thanks for reporting your issue.
Can you share your JSON file for publishing so that we can troubleshoot for you?

Sure thing. If you need the specifics, I don't mind providing those as well. Just wanted to get a baseline first to ensure I'm using the correct information to begin with,
{
"accessToken": "<access token provided from 'az account get-access-token'>",
"hostname": "",
"luisResource": "<name of Cognitive Services in Azure portal (also name of Authoring Resource in Luis.ai)>",
"settings": {
"luis": {
"endpointKey": "<endpoint key used when publishing/restart bot in Composer>",
"authoringEndpoint": "https://westus.api.cognitive.microsoft.com/",
"authoringKey": "",
"region": "westus"
},
"MicrosoftAppId": "",
"MicrosoftAppPassword": ""
}
}

Hi @Trubzzz I tested a ToDoWithLUIS sample bot today. I was unable to reproduce the error you had.
I felt it easier to start by creating all the new Azure resources, and then copy the generated JSON file from the command line and paste it to your Composer publish configuration.
I am wondering if you would like to try again?

I can reproduce the error. I've created a bot and everything works in the emulator. When I run the provisionComposer and it creates all the new Azure resources, the Test In Web Chat does not work and is just empty.
I think the endpoint for the bot is actually not available (is it hosted in the WebApp?)

@zxyanliu
Actually, you seem to have a Web App Bot and I have a Bot Channels Registration.
And I've got the following message after copying the generated JSON into the composer.

Even if the publisher says the publishing was successful:

@eluchsinger this error message is a known issue. You can just click OK and proceed. Did you get your bot published with success?
@hibrenda can we get someone to fix the error message?

@zxyanliu I removed the newly created resource group, generated all resources again and published manually again. The same error happened. After I published manually a second time, it started working properly.
I believe there was an issue with the earlier deployments and they actually failed, even if the message was "success".

@eluchsinger thanks for the update.

Hi @zxyanliu,
Thanks for the replies, but I'm still unable to publish after creating a brand new resource group. I've tried both creating a brand new resource group altogether per the documentation provided above as well as publishing to a Web App Bot that already exists in my portal.
Is there any additional troubleshooting step I can take? I can run my bot in the Bot Composer Desktop Application and I get successes on both Composer publish profiles (the new resource group profile and the existing Web App Bot profile), but each Test in Web Chat conversation sits idle without presenting the welcome message or responding to any kind of text input.
Also, thanks @eluchsinger for looking into this as well.

I am having the same issue.
I also raised this support request, but the suggested fixes didn't work: https://docs.microsoft.com/en-us/answers/questions/72356/deployment-to-azure-fails.html
Additionally I am affected by this bug #3452 so I have to do everything using the latest branch from the git repo.
node provisionComposer.js --subscriptionId=XXXX  --tenantId=XXX --name=XXXX --appPassword=XXX --environment=dev
I had to put the tenantId because of some other bug.
I also tried to deploy it via functions -> no success
I tried my own bot, I tried sample doesn't work
Help would be very much appreciated

I just spun up a Windows-VM and tried to deploy again and it works using windows. I hope that helps to debug the issue.
Here are the details of my ubuntu machine, if it helps:
ubuntu@ubuntu-ThinkPad-P43s:~$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 20.04.1 LTS
Release:	20.04
Codename:	focal
ubuntu@ubuntu-ThinkPad-P43s:~$ node --version
v12.18.3
ubuntu@ubuntu-ThinkPad-P43s:~$ uname -a
Linux ubuntu-ThinkPad-P43s 5.4.0-42-generic #46-Ubuntu SMP Fri Jul 10 00:24:02 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
ubuntu@ubuntu-ThinkPad-P43s:~$

I still get the same errors when published to Azure functions
I also see this error which I am unable to resolve

I get exactly the same issue. Tried to publish from Composer and it said success. Got back to the azure Web App Bot, showing nothing in the test chat (supposed to give greetings). Do you guys have any new update on fixing it?

Assigning to @v-kydela as I'm unable to run composer at the moment.

@Trubzzz - I was able to reproduce your problem at first, but when I went to the channels blade and then back to the Test in Web Chat blade the bot began responding immediately. Perhaps the app service just needs a moment to start up. Does your bot work after leaving and coming back?

@Trubzzz - Are you still working on this?

@v-kydela I am still struggling with that without further progress.

@jh70zape - Have you tried any of the advice in this thread? I am not able to help you without more information. Please provide the following:

Links
Repro steps
Screenshots

@zxyanliu I removed the newly created resource group, generated all resources again and published manually again. The same error happened. After I published manually a second time, it started working properly.
I believe there was an issue with the earlier deployments and they actually failed, even if the message was "success".

@eluchsinger Can you clarify what you did to solve this? I am running into the same error. How did you publish it manually?

@Trubzzz This seems like the same issue with #4348, could you please check on this? We have a PR on this already, will let you know when it get merged.

I will close this issue because the PR has already been merged. The deployment process for Composer is still being worked on, and if your bot is slow to respond after deployment then that may have nothing to do with Composer anyway. For anyone else having difficulty with their bot responding slowly after being deployed, please refer to the documentation for troubleshooting info.

The number of keys, configurations, services, blah blah blah is ridiculous. Why do you think Dialogflow and Google are the standards? They work. This is garbage.


onInput for select's not firing on Edge

The onInput event isn't firing for the Edge browser on Windows 10 (using a VM from Microsoft). The SSCCE works as expected on Firefox (nigthly) and Chrome (latest).
SSCCE
Change the select option and see if the model is updated.
Ellie
module Main exposing (main)

import Browser
import Html exposing (..)
import Html.Attributes exposing (..)
import Html.Events exposing (..)

type alias Model =
    { count : Int, selected : String }

initialModel : Model
initialModel =
    { count = 0, selected = "" }

type Msg
    = Input String

update : Msg -> Model -> Model
update msg model =
    case msg of
        Input v ->
            { model | selected = v }

view : Model -> Html Msg
view model =
    div []
        [ div []
            [ select [ onInput Input ]
                [ option [ value "" ] [ text "" ]
                , option [ value "one" ] [ text "one" ]
                , option [ value "two" ] [ text "two" ]
                ]
            ]
        , div [] [ text <| "Selected: " ++ model.selected ]
        ]

main : Program () Model Msg
main =
    Browser.sandbox
        { init = initialModel
        , view = view
        , update = update
        }

The Ellie works for me on Edge:
Microsoft Edge | <IP_ADDRESS> (Official build) Dev (64-bit)
-- | --
Revision | 314946023c1f598e50b3efe4e20de796352b028b
Operating system | macOS Version 10.14.6 (Build 18G87)

In any case, this error might be better placed on elm/virtual-dom as that is the code that actually manages the event handlers.
These two issues with the older, non-chromium based Edge seem relevant:

https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/7194628/
https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/4660045/

The takeaway here seem to be to listen to change events rather than input.

Thanks @pd-andy.
I tried the linked fiddle from the first link, http://jsfiddle.net/cvrebert/ofyassqa/, and it didn't work with input but did with change.
Good call about filing this on elm/virtual-dom as well, I'll do that, and include the extra info you've provided, and then close this one.

Re-filed at https://github.com/elm/virtual-dom/issues/158.


[Bug] The mobile terminal cannot display normally

Description of the bug
When I deploy successfully, it will display a blank interface in the browser using iphone12
case1：https://dash.mauz.dev/
case2：https://dash.doduo.cc/
Info output of dashdot cli
No response
What browsers are you seeing the problem on?
Safari
Where is your instance running?
Linux Server

Unfortunately, I can't test on iOS as I don't have the required hardware. Do you have any way of accessing the logs, so we can see what the error is? Otherwise, I can't really help with this.

dash_1  | yarn run v1.22.19
dash_1  | $ node .
dash_1  | listening on *:3001
dash_1  | Using default network interface "eth0"
dash_1  | Using host os version from "/mnt/host/etc/os-release"
dash_1  | Static Server Info: {
dash_1  |   os: {
dash_1  |     arch: 'x64',
dash_1  |     distro: 'Debian GNU/Linux',
dash_1  |     kernel: '4.19.0-20-amd64',
dash_1  |     platform: 'linux',
dash_1  |     release: '10',
dash_1  |     uptime: 3137440.22,
dash_1  |     dash_version: '5.1.3',
dash_1  |     dash_buildhash: '386191c474baca48d35d655bf77a8b4953e8645b'
dash_1  |   },
dash_1  |   cpu: {
dash_1  |     brand: 'AMD',
dash_1  |     model: 'Ryzen 7 5800X',
dash_1  |     cores: 2,
dash_1  |     threads: 2,
dash_1  |     frequency: 3.8
dash_1  |   },
dash_1  |   ram: {
dash_1  |     size:<PHONE_NUMBER>,
dash_1  |     layout: [ { brand: 'Red Hat', type: 'RAM', frequency: NaN } ]
dash_1  |   },
dash_1  |   storage: [
dash_1  |     {
dash_1  |       size:<PHONE_NUMBER>0,
dash_1  |       disks: [ { device: 'vda', brand: 'vda', type: 'HDD' } ]
dash_1  |     }
dash_1  |   ],
dash_1  |   network: {
dash_1  |     interfaceSpeed: 0,
dash_1  |     speedDown: 0,
dash_1  |     speedUp: 0,
dash_1  |     type: 'Wired',
dash_1  |     publicIp: ''
dash_1  |   },
dash_1  |   gpu: { layout: [] },
dash_1  |   config: {
dash_1  |     port: 3001,
dash_1  |     running_in_docker: true,
dash_1  |     accept_ookla_eula: false,
dash_1  |     use_network_interface: undefined,
dash_1  |     speed_test_from_path: undefined,
dash_1  |     fs_device_filter: [],
dash_1  |     fs_type_filter: [
dash_1  |       'cifs',
dash_1  |       '9p',
dash_1  |       'fuse.rclone',
dash_1  |       'fuse.mergerfs',
dash_1  |       'nfs4',
dash_1  |       'iso9660',
dash_1  |       'fuse.shfs'
dash_1  |     ],
dash_1  |     fs_virtual_mounts: [],
dash_1  |     disable_integrations: false,
dash_1  |     show_dash_version: undefined,
dash_1  |     show_host: true,
dash_1  |     custom_host: undefined,
dash_1  |     page_title: 'dash.',
dash_1  |     use_imperial: false,
dash_1  |     always_show_percentages: true,
dash_1  |     widget_list: [ 'os', 'cpu', 'storage', 'ram', 'network' ],
dash_1  |     os_label_list: [ 'os', 'arch', 'up_since' ],
dash_1  |     cpu_label_list: [ 'brand', 'model', 'cores', 'threads', 'frequency' ],
dash_1  |     storage_label_list: [ 'brand', 'type', 'size', 'raid' ],
dash_1  |     ram_label_list: [ 'brand', 'type', 'size', 'frequency' ],
dash_1  |     network_label_list: [ 'type', 'speed_up', 'speed_down', 'interface_speed' ],
dash_1  |     gpu_label_list: [ 'brand', 'model', 'memory' ],
dash_1  |     os_widget_grow: 2.5,
dash_1  |     os_widget_min_width: 300,
dash_1  |     enable_cpu_temps: false,
dash_1  |     cpu_widget_grow: 4,
dash_1  |     cpu_widget_min_width: 500,
dash_1  |     cpu_shown_datapoints: 20,
dash_1  |     cpu_poll_interval: 1000,
dash_1  |     storage_widget_grow: 3.5,
dash_1  |     storage_widget_min_width: 500,
dash_1  |     storage_poll_interval: 60000,
dash_1  |     ram_widget_grow: 4,
dash_1  |     ram_widget_min_width: 500,
dash_1  |     ram_shown_datapoints: 20,
dash_1  |     ram_poll_interval: 1000,
dash_1  |     speed_test_interval: 43200,
dash_1  |     network_widget_grow: 6,
dash_1  |     network_widget_min_width: 500,
dash_1  |     network_shown_datapoints: 20,
dash_1  |     network_poll_interval: 1000,
dash_1  |     gpu_widget_grow: 6,
dash_1  |     gpu_widget_min_width: 700,
dash_1  |     gpu_shown_datapoints: 20,
dash_1  |     gpu_poll_interval: 1000,
dash_1  |     override: {
dash_1  |       os: undefined,
dash_1  |       arch: undefined,
dash_1  |       cpu_brand: undefined,
dash_1  |       cpu_model: undefined,
dash_1  |       cpu_cores: undefined,
dash_1  |       cpu_threads: undefined,
dash_1  |       cpu_frequency: undefined,
dash_1  |       ram_brand: undefined,
dash_1  |       ram_size: undefined,
dash_1  |       ram_type: undefined,
dash_1  |       ram_frequency: undefined,
dash_1  |       network_type: undefined,
dash_1  |       network_speed_up: 861600000,
dash_1  |       network_speed_down: 563100000,
dash_1  |       network_interface_speed: 1000,
dash_1  |       network_public_ip: undefined,
dash_1  |       storage_brands: {},
dash_1  |       storage_sizes: {},
dash_1  |       storage_types: { NVMe: undefined },
dash_1  |       gpu_brands: [],
dash_1  |       gpu_models: [],
dash_1  |       gpu_memories: []
dash_1  |     }
dash_1  |   }
dash_1  | }
dash_1  | Running speed-test (this may take a few minutes)...
dash_1  | First measurement [CPU]: [
dash_1  |   { load: 0.26051048455235676, temp: 0, core: 0 },
dash_1  |   { load: 0.2662851391622598, temp: 0, core: 1 }
dash_1  | ]
dash_1  | First measurement [Network]: { up: 0, down: 0 }
dash_1  | First measurement [RAM]: 410648576
dash_1  | First measurement [Storage]: [<PHONE_NUMBER> ]
dash_1  | Speed-test completed successfully [speedtest-cli] {
dash_1  |   speedDown: 933914726.5960853,
dash_1  |   speedUp: 900779011.2785391,
dash_1  |   publicIp: 'xxx.xxx.xxx.xxx'
dash_1  | }
dash_1  | (node:28) TimeoutOverflowWarning:<PHONE_NUMBER> does not fit into a 32-bit signed integer.
dash_1  | Timeout duration was set to 1.
dash_1  | (Use `node --trace-warnings ...` to show where the warning was created)
dash_1  | Error: Command failed: speedtest-cli --json --secure
dash_1  |
dash_1  |     at ChildProcess.exithandler (node:child_process:419:12)
dash_1  |     at ChildProcess.emit (node:events:513:28)
dash_1  |     at maybeClose (node:internal/child_process:1091:16)
dash_1  |     at Socket.<anonymous> (node:internal/child_process:449:11)
dash_1  |     at Socket.emit (node:events:513:28)
dash_1  |     at Pipe.<anonymous> (node:net:322:12) {
dash_1  |   code: null,
dash_1  |   killed: false,
dash_1  |   signal: 'SIGKILL',
dash_1  |   cmd: 'speedtest-cli --json --secure',
dash_1  |   stdout: '',
dash_1  |   stderr: ''
dash_1  | }

use docker-compose
version: '3'

services:
  dash:
    image: mauricenino/dashdot:latest
    restart: unless-stopped
    privileged: true
    ports:
      - '10030:3001'
    volumes:
      - /:/mnt/host:ro
    environment:
      DASHDOT_ALWAYS_SHOW_PERCENTAGES: 'true'
      DASHDOT_SPEED_TEST_INTERVAL: 43200
      DASHDOT_OVERRIDE_NETWORK_INTERFACE_SPEED: 1000
      DASHDOT_OVERRIDE_NETWORK_SPEED_UP: 861600000
      DASHDOT_OVERRIDE_NETWORK_SPEED_DOWN: 563100000
      DASHDOT_SHOW_HOST: 'true'
      DASHDOT_OVERRIDE_STORAGE_TYPES: 'NVMe'

by packet capture，get resuest "dash.mauz.dev"
request header
Host: dash.mauz.dev
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn
Connection: keep-alive
Accept-Encoding: gzip, deflate, br
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 14_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1 Mobile/15E148 Safari/604.1

response header
Accept-Ranges: bytes
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0
Content-Length: 841
Content-Type: text/html; charset=UTF-8
Date: Thu, 27 Apr 2023 04:57:44 GMT
Etag: W/"349-1874767c620"
Last-Modified: Mon, 03 Apr 2023 13:56:36 GMT
Vary: Accept-Encoding
X-Powered-By: Express

and then got
<!DOCTYPE html>

  <base href="/">
    <meta charset="utf-8" />
    <link rel="icon" href="./assets/favicon.ico" />
    <meta name="viewport" content="width=device-width, initial-scale=0.8" />
    <meta name="theme-color" content="#000000" />
    <meta
      name="description"
      content="Web site created using create-react-app"
    />
    <link rel="apple-touch-icon" href="./assets/logo192.png" />
    <link rel="manifest" href="./manifest.json" />
    <title>dash.</title>

    You need to enable JavaScript to run this app.

https://user-images.githubusercontent.com/49332985/234765582-d2e6723c-bef2-4351-934d-86b1a8b86f86.mp4

Thank you again for all that information. I actually recently got the chance to test on a native iPhone 12 and I think I know where the issue lies. I will report back once I find out more about this.

Can you please test out the mauricenino/dashdot:dev tag? It should fix your issues.

Sorry, I just read the news now, the latest version has been tested just now, and the problem has been solved.

Can you please test out the latest release? It should fix your issues.

Can you please test out the latest release? It should fix your issues.

Sorry, I just read the news now, the latest version has been tested just now, and the problem has been solved.


add missing quote on README

a trivial fix to the README.md where the final quote on the python test invocation was missing.

Thank you! Will merge to develop first.


Updated CONTRIBUTORS.md

Updated Contributor's doc in spirit of my first contribution to Cesium here: https://github.com/CesiumGS/cesium-webpack-example/pull/21

Thanks for the pull request @sdhani!

:heavy_check_mark: Signed CLA found.
:grey_question: CHANGES.md was not updated.

If this change updates the public API in any way, please add a bullet point to CHANGES.md.

:grey_question: Unit tests were not updated.

Make sure you've updated tests to reflect your changes, added tests for any new code, and ran the code coverage tool.

Reviewers, don't forget to make sure that:

[ ] Cesium Viewer works.
[ ] Works in 2D/CV.
[ ] Works (or fails gracefully) in IE11.

Thanks again for your contribution to the cesium-webpack-example repo, @sdhani. We have updated the webpack example on our website accordingly. I can see that you've signed the CLA form, so that's all sorted out. Since contributors listed here are only added for direct contributions to this repository specifically, I'm going to close this PR.


what about mixed effect analysis?

Hello,
Great package! I was wondering if it is possible to run mixed effects analyses too?

Unfortunately, no. It would be possible to implement GLM with other R commands, e.g., generalTestBF (in BayesFactor) or brm (in brms). However, I am not sure whether they would work as you intended. Also, determining which priors shall be used will also be an issue. At this point, the prior adjustment is only applicable simple comparison tests, e.g., t-tests. So, the GLM stuff should be further developed and tested.
If you are willing to do so, I can give a shot, but it will take a significant amount of my time. So, there should be additional arrangements, e.g., co-authorship, etc. Also, there is no guarantee that the newly implemented functionality will perform as intended because there have not been sufficient relevant prior studies.

Or, maybe it could be performed with the summary statistics approach used in SPM and FSL (without starting from 1st level GLM)? For example, as far as I understand, in FSL you need to input an image of the voxelwise within subject variance and the DOFs (on top of the parameter estimates) to perform mixed effects 2nd level analysis. I don't know whether this functionality would be easy to add if done in this way?
PS: discovering that you authored a paper on bayesian analysis with SPM, I am wondering if you know whether they offer a mixed effect bayesian analysis functionality? in your paper/tutorial, I think it was a fixed effects analysis, or?

In fact that is a good point. Given SPM is capable of 2nd-lv GLM in general, you may try GLM with Bayesian estimation. The only thing that you need to do is setting Bayesian stuff in the estimation unit. One benefit of the method is that you do not need to concern about prior adjustment. Of course, you will have to decide which threshold values (e.g, BF/PPM threshold value) to employ to determine the degree of sensitivity vs. selectivity in your analysis.


Added navigation to each strategies, along with state management with…

… riverpod

Done with state management for the individual strategies screen


New comment.

Dear human,
Here's a new entry for your approval. :tada:
Merge the pull request to accept it, or close it to send it away.
:heart: Your friend Staticman :muscle:

Field
Content

message
I have checked your website and i have found some duplicate content,

that's why you don't rank high in google's search results, but there is a tool that can help you to create

100% unique articles, search for; Boorfe's tips unlimited content

name
Janina

email
976d57efc00b9770f56e3c4b28284cb6

url
https://Harvey33.wix.com

hidden

date
2017-12-22T15:44:18.563Z

interesting...


Add note on JDBC libs for lookups

Add documentation on needed lib files to make JDBC lookups work.

TC is failing, but it's because of the thrift jar issue. I won't bother merging master into this branch, since this change is docs-only.


fix: Make DnsValidatedCertificate cross-region with additional prop

CDK currently has a custom resource to create new ACM certs, but ACM is only available in one region.
DnsValidatedCertificate should be a cross region call, made optional though props

ACM is, in fact, a regional service that is available in many supported regions.  However, for certain purposes such as associating certificates with CloudFormation distributions, one must provision the certificate in the us-east-1 region.


Issue 421, 427, and 429

This PR adds better examples for Arg methods as well as

implements support for displaying the help on the next line (#427)
Clarifies AppSettings propagation rules (#429)
Fixes failing clippy lints
Moves github specific files to a .github directory

Copied from #421

[x] short
[x] long
[x] help
[x] required
[x] conflicts_with
[x] conflicts_with_all
[x] overrides_with
[x] overrides_with_all
[x] requires
[x] requires_all
[x] takes_value
[x] index
[x] multiple
[x] global
[x] empty_values
[x] hidden
[x] possible_values
[x] possible_value
[x] group
[x] number_of_values
[x] validator
[x] max_values
[x] min_values
[x] use_delimiter
[x] value_delimiter
[x] value_names
[x] value_name
[x] default_value
[x] next_line_help

@homu r+

:pushpin: Commit d0c956c has been approved by kbknapp

:hourglass: Testing commit d0c956c with merge 1be8d4d...

:sunny: Test successful - status

:eyes: Test was successful, but fast-forwarding failed: 422 Required status check "continuous-integration/appveyor/pr" is pending

@homu retry

:hourglass: Testing commit d0c956c with merge 27d08bf...

:sunny: Test successful - status


Support MBbloom module better

Added target MBbloom module version in the config file, so we can sync data between different version. To aviod warnings in the log file, also added key-specs for bloom filter commands.

非常感谢你的贡献，会给大家带来很大帮助。关联：#604 #382


Assigning route to the icons in navbar Issue Number #24

@Caliber-Ruchi Provide with issue number in description

#24

@Caliber-Ruchi 3 conflicts are there. Kindly resolve them too .

Fixes #24


feat(hepa-uv): Add CAN messages to control the Hepa/UV filter.

Overview
We need to control the Hepa/UV filter from the Flex for testing and eventual system integration, this PR implements the CAN messages required to make this happen. It also adds a new method to query the time remaining before a software timer expires. This PR coincides with Opentrons/opentrons#14452 PR.
Closes: RET-1422 RET-1423
Test Plan

[x] Make sure the Hepa fan still turns on/off with the push button
[ ] Make sure the UV Ballast still turns on/off with the push button when the Flex door is closed and reed switch is set.
[ ] Make sure that we can set/get the Hepa fan state and duty cycle with the SetHepaFanStateRequest and GetHepaFanStateRequest messages.
[ ] Make sure that we can set/get the UV light state and timeout with the SetHepaUVStateRequest and GetHepaUVStateRequest messages.
[ ] Make sure that the UV light ONLY turns on via CAN message when the door is closed and reed switch is set.
[ ] Make sure that the UV light turns OFF when the door is opened
[ ] After turning ON the UV light via a CAN message, make sure we can turn off the light when the push button is pressed.

Change Log

Added implementation for CAN messages to set/get Hepa fan state/duty cycle
Added implementation for CAN messages to set/get UV Light state/timeout in seconds
Added a get_remaining_time method to the FreeRTOSTimer class to know the time in ms before the timer expires.
Integrated the new CAN messages into their corresponding Hepa Task and UV Task
Refactored the Hepa Task logic so it takes into account the CAN messages so we aren't duplicating code.
Refactored the UV Task logic so it takes into account the CAN messages so we aren't duplicating code.

Review Requests

Does anything not make sense with the can messages?

Risk Assessment
Low, unreleased

Looks good, but let's change the name of that macro. Also, I think this functionality is getting to the point where it should really have tests.

agreed, I will add a test suite in up coming PR.

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

Comparison is base (1faf654) 83.58% compared to head (a845772) 83.58%.

Additional details and impacted files

@@           Coverage Diff           @@
##             main     #753   +/-   ##
=======================================
  Coverage   83.58%   83.58%
=======================================
  Files         101      101
  Lines        4044     4044
=======================================
  Hits         3380     3380
  Misses        664      664


Back-arrow removed for large screens

Description
I have removed the chevron-left arrow for larger screens (i.e. laptops and desktops) as it is not functional as hover effect is enabled and it is redundant.
Fixes #128
Type of change
Please delete options that are not relevant.

[x] Bug fix (non-breaking change which fixes an issue)

Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] My changes generate no new warnings
[x] New and existing unit tests pass locally with my changes

Hey @PDBharadwaj,
Thanks for your interest in this project. I just found out that the Arrow is helpful for smartphone users, so let's keep it.

@SurajSanap Is this PR merged or not? It's showing as "successfully merged". But points are not added for this PR

@SurajSanap Is this PR merged or not? It's showing as "successfully merged". But points are not added for this PR


Update documentation regarding dependentKeys

Resolves # .
Changes proposed:

Update documentation regarding depedentKeys nomenclature

Tasks:

[x] Updated documentation

Thanks! 😄


Issue when tracking 'Objective-C' files (.m .h) and viewing them in Xcode IDE

Hi,
Love the package but I am having an road block where I get constant watchers triggers in scenario where watching Objective-C files of extension .h and .m . The issue is that if those files are opened in the Xcode IDE and they are being opened (simple navigation between them) their "Last opened" attribute in the file system is changed. This is registered as a change were npm-watch is conceded and a watcher is triggered.
My question is is it possible to tell npm-watch to only watch the content of the files ? This way any "system" changes to that file will not cause a watcher to trigger. In my case what I am trying to achieve is, when a change to one of those (change in its content) files is detected, to trigger a watcher which uses bash to rebuild and iOS framework using xcodebuild. It works but the issue is if I am observing those files via Xcode which is the only iOS IDE when I switch between files in the view the watcher is being triggered multiple times which makes it useless. Any ideas ?
From my research the issue is caused by the "Last opened" attribute of the file in Mac OS. This is changed each time a file is viewed in Xcode and it looks like that is considered a "change" by the npm-watch, which might be true for many cases. Any ideas what can be done so that this can be avoided, I am open to making a contribution to this repo but I have not worked with it so some general guidance can be of great help.

The actual watching of files is all done by nodemon, so I am doubtful if there is anything we can do....
Unfortunately I don't have access to a Max so I can't test, but I will try and look into this and see what I come up with

If you allow flags to be passed to nodemon, the giving it the --legacy flag (terrible name, sorry) might work around the issue.

Hi @M-Zuber ,
Thank you for responding to this issue. After many hours investigating what atualy happens to the files when they are viewed in Xcode on Mac I have came to the following conclusion:

The files that Xcode views are being moved in and out of memory constantly (meaning they are being deleted and returned)

This unfortunately is very tricking to workaround when you are implementing a file watcher over such files. What I did finally to resolve this is to use a different file watcher named chokidar. That file watcher is quite different than this one and it provides JS callback with information about what changes have happened, to what etc. In that information there is an event with normal values of modified, deleted etc. , in this case tho the event that comes in unknown. This is both good and bad, it is bad because I am still not sure what actually happens to the files but it is good because I can "filter" those changes and only run my watcher logic when real event occurs.
So I switched to chokidar and implemented a custom filtering of the changes based on the event that comes. It is not a great solution but it is one that works, for now.

@VladimirAmiorkov the nodemon issue might have been fixed a matter of days ago through the release of<EMAIL_ADDRESS>It's landing in nodemon right now thanks to this issue so it should be in<EMAIL_ADDRESS>and won't have the triggering issues you were seeing (I think!).

@VladimirAmiorkov can you confirm if you are still having this issue?


Return GotrueSessionResponse

This aligns with signIn
Fixes #72
Also, we shouldn't be including lock files in libraries

I don't know about this. We will be reworking all our libraries and this may not be the way we want them to be.
@dshukertjr

@dshukertjr @bdlukaa I'll go ahead and close this PR then. Always able to recreate it in the future.


Remove VERSION file

I added this for something I didn't use and forgot about it.

I'll work on this! If you need to assign it to me please do.

Thank you so much for being the first contributor to the project. Much appreciated.


Fixed the routing for gcloud.

When deploying gcloud, the routing doesn't work as expected.

LGTM


Remove CoreScript class references and standardize it's naming convention

Changes
The commit removes CoreScript class references (which were broken) and standardizes CoreScript naming convention - using CoreScript to class and Core Scripts when referring to Roblox's scripts that implement core functionalities.
Checks
By submitting your pull request for review, you agree to the following:

[x] This contribution was created in whole or in part by me, and I have the right to submit it under the terms of this repository's open source licenses.
[x] I understand and agree that this contribution and a record of it are public, maintained indefinitely, and may be redistributed under the terms of this repository's open source licenses.
[x] To the best of my knowledge, all proposed changes are accurate.

It seems it already got resolved internally.


Critical Vulnerability

Homework

[X] I took the time to write a good, descriptive issue title
[X] I read nativefier --help and API.md.
[X] I checked CATALOG.md for community suggestions & workarounds.
[X] I searched existing issues, open & closed. Yes, my question is new.
[X] I'm running the latest version.

Your question
Hi Nativefier team !!
Do you have a secure/private contact where I can send a security report?

@Retr02332 maintainer here. Sure, pls send details to the email you'll find in any commit I pushed to the repo, e.g. https://github.com/nativefier/nativefier/commit/be2180b53f6887c48f81caf2713ae55b38191a89.patch .

@ronjouch Perfect, I just sent you the vulnerability details to your email.

I just clicked a link in my nativefier app and it wouldn't open it and referred me to this issue. Why?
How can I disable validating URLs? I don't want this behavior and I understand the risks that I may be taking.

note: I have "--internal-urls "(.*)"" when building the app, but it should still open the URL in an internal browser window

The domain that was blocked was https://outlook.office365.com -- hardly a malicious site. Links to github.com open without issue.
I'd ideally not like any validation happening.

Hi, I also have a problem that leads me here, I have a web app that has a button to generate  .ics files for Outlook and iCalendar events. Download/generate of those is blocked and I don't see anywhere in the API anything I can do to help myself.
Note: I have download options enabled and they work on other parts of the app.

Please advise.

Hello! Just found a message directing me to here...
"Navigation blocked to qz:launch
URL protocol is disallowed. If you believe this URL should open, you might be right, and our
validation mignt be excessive. Please share this error & URL at https://github.com/nativefier/nativefier/issues/1459"
we use QZ Tray, which is a well-known and used print management app and I believe that Nativefier should not block this...


Remove dependency on casper-node/binary-port

Currently binary-port-client has a dependency on casper-node/binary-port. Binary port is not a module that we plan to release as a separate library, so we need to copy the types we need from the node to sidecar.
AC: Sidecar no longer has a dependency on module casper-node/binary-port which is internal to the node.
According to @gRoussac ;

Hi, the binary client is also using that lib from node so please be aware of that
https://github.com/casper-ecosystem/casper-binary-port-client/blob/master/Cargo.toml#L17
casper-binary-port = { git = "https://github.com/casper-network/casper-node.git", branch = "feat-2.0" }

Close this and link the follow on ticket.


install fail if using curl through a proxy

I used the following command to install socketplane:
curl --proxy http://xxx.xxx.xxx:xx -sSL http://get.socketplane.io/ | sudo BOOTSTRAP=true sh
it didn't work because the script from http://get.socketplane.io/ redirect the curl to 'curl -sSL -o' and doesn't include the --proxy parameter any more.
so I have to download the script, correct it and then install socketplane.
or alias curl='curl --proxy=http://xxx.xxx:xxx' in bash_profile
I thinks this is a small bug= =

You  could also put the proxy configuration in your ~/.curlrc or export the http_proxy environment variable. See here [https://stackoverflow.com/questions/7559103/how-to-setup-curl-to-permanently-use-a-proxy]


chore: [FX-2234] Add gray lightest color

FX-2234
Abstract
Description

Add Gray Lightest color

In the design it says Gray, but in the code we have grey

How to test

Colors

Screenshots

Review

[ ] Read CONTRIBUTING.md and Component API principles
[ ] Annotate all props in component with documentation
[ ] Create examples for component
[ ] Ensure that deployed demo has expected results and good examples
[ ] Ensure that tests pass by running yarn test
[ ] Ensure that visuals tests pass by running yarn test:visual. If not - check the documentation how to fix visual tests
[ ] Ensure the changed/created components have not caused accessibility issues. How to use accessibility plugin in storybook.

PR commands

List of available commands:

@toptal-bot run all - Run whole pipeline
@toptal-bot run build - Check build
@toptal-bot run visual - Run visual tests
@toptal-bot run deploy:documentation - Deploy documentation
@toptal-bot run package:alpha-release - Release alpha version

Looks OK!


Package update 21 7

[Current coverage][cc-pull] is 96.62% (diff: 100%)

Merging [#184][cc-pull] into [master][cc-base-branch] will increase coverage by 0.03%

@@             master       #184   diff @@
==========================================
  Files            40         40
  Lines          2729       2727     -2
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
- Hits           2636       2635     -1
+ Misses           93         92     -1
  Partials          0          0

Powered by Codecov. Last update [837c873...6734f5b][cc-compare]
[cc-base-branch]: https://codecov.io/gh/Koed00/django-q/branch/master?src=pr
[cc-compare]: https://codecov.io/gh/Koed00/django-q/compare/837c873ad64fa01c87d367d5c09775007cc90c46...6734f5b96c20d5dc6b308ac6a6aa1b707acaa675?src=pr
[cc-pull]: https://codecov.io/gh/Koed00/django-q/pull/184?src=pr


[Enhancement] Refactor Dispatcher & Pool

Since we will use the NCCL Group Channel to broadcast metadata in TP groups, the original ZMQ way is no longer suitable.
Refactoring these two modules is required to integrate the NCCLGroupChannel.

Pool's update

For the first layer of attention driver

ZMQ & NCCL channels may exist at the same time.
ZMQ comes from Tokenizer & Sampler
NCCL comes from other collocated attention

For other attention drivers
Only NCCL channels
For attention workers
Only NCCL channels

Dispatcher's update

Tokenizer & Sampler
Keeping unchanged
Expert's dispatcher
Two types of sending
ZMQ for non-tp
NCCL for tp
Requiring a NCCLGroupChannel

Finished in #13


change listen example to be a chat app

Closes #161
The Postgres listen example is now a simple chat app.

This is great! Can you rename the directory to chat and rebase on top of 0.7-dev?


Stricter abstraction for buttons in ConversationMessage

After thinking about it @spolu you were right, stricter abstraction is cleaner => easier & cleaner to remove if it breaks, better fit if it doesn't

Also added the "keys" for react
Not sure why build checks aren't run though

While fixing I came across this
Since map builds a new array, calling it without using the returned array is an anti-pattern; use [forEach](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach) or [for...of](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of) instead.

From MDN


chore(release): 1.0.0-beta.1

👀 PR includes

🔧 Chore

[x] Release version 1.0.0-beta.1

:tada: This PR is included in version @antv/s2-v1.53.0-beta.1 :tada:
The release is available on:

npm package (@beta dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


The command does not open in the terminal

The "other" command does not open due to this mod. And how do you know where to buy an extra day?

Hey @Paradox75831004, I'm closing this issue due to a lack of reproduction steps. Please let me know if this issue still occurs and if you use additional deadline mods.


Get access to Shopify account

Migrated from GitLab: https://gitlab.com/meltano/meltano/-/issues/1791
Originally created by @DouweM on 2020-02-24 17:43:20

View 12 previous comments from the original issue on GitLab


Handler for binaryninja: URLs does not properly recognize .bndb files when opening remote files

I've already implemented a fix for this, but it needs further testing. Basically, binary ninja will download the file to tmp, then open it from there.
Need to figure out a way to force the first "Save" to be a "Save As" to hint to the user that they should save it somewhere else (or maybe just prompt them to that effect).

Now binaryninja:http(s)://host/path/to/file.bndb?expr=function_name_or_address will work the same as if the inner URL were local, but the user will be prompted for confirmation before downloading the file.
The database file is downloaded to a temporary location, but named internally from its original filename metadata if possible.
If the user tries to save a downloaded database, the Save As dialog will appear, so the user does not accidentally save into temporary space.
As long as the downloaded database remains open, subsequent requests for the same URL will navigate in the open database instead of downloading it again. This effect is ephemeral: once the downloaded database is closed, the download URL is forgotten, and reopening a saved local database will no longer be associated with the URL.

[ ]  TODO: prompt user to open in existing view
[ ]  TODO: add "remember choice" checkbox to prompt
[ ]  TODO: warn user that this only works until they close the BNDB
[ ]  TODO: verify this works on Windows

Complete in builds >= 3440.


Added Exponent Operation

Added exponential operator for operation between two operands. Ex: 2^3 is 8.
LHS and RHS in maths means the expression to the left of the equation and the expression to the right of the equation so I have given then apt names by left_operand and right_operand respectively.

Can you merge it with master?


Dark mode settings revert to automatic after every restart

Hello,
The website appearance setting in the Firefox:

I change it to dark mode but every time I start a new browser session, it reverts to automatic. I reverted to the profile I backed up and the setting sticks. I looked into user.js to see if I can find anything that could pertain to this specific setting so that I can change it permanently but unable to do so.
Which setting in user.js should I change to make it stick to the dark more ? will any kind soul points it out to me ?
Any help will be greatly appreciated.

https://github.com/yokoffing/Betterfox/blob/c36643914571d10b45f863e3916441071b838ae3/Peskyfox.js#L93-L100
Add user_pref("layout.css.prefers-color-scheme.content-override", 0); to your Overrides section of the user.js.