RKE2 Provisioning: Day 2 Ops - On Demand/Recurring Etcd Snapshot and Restore with Options

This is to validate S3 Support for snapshot and restore.
apiVersion: provisioning.cattle.io/v1
kind: Cluster
metadata:
  name: #string
  annotations:
    {}
#    key: string
  labels:
    {}
#    key: string
  namespace: fleet-default
spec:
  cloudCredentialSecretName: do
  kubernetesVersion: v1.21.0-alpha2+rke2r1
  rkeConfig:

#    etcdSnapshotCreate:
#      name: string
#      nodeName: string
#      s3:
#        bucket: string
#        cloudCredentialName: string
#        endpoint: string
#        endpointCA: string
#        folder: string
#        region: string
#        skipSSLVerify: boolean

Note: Things changed with https://github.com/rancher/rancher/issues/34088
An s3-compatible cloud credential was created, you can create one and specify when making a cluster, and override defaults (if any are set).

Now that this is merged into release/v2.6, here is the summary of changes for this

etcd snapshot information is no longer stored on the clusters.provisioning.cattle.io/status field, they are now stored in dedicated etcdsnapshot.rke.cattle.io objects. They are in the same namespace as the cluster, and have a cluster name label (rke.cattle.io/cluster-name) on them that can be used to look for them.
name on the etcdSnapshotRestore field now refers to the name of the CR of the etcdSnapshot CR. nodeName is no longer an option as that is stored in the metadata of the etcdSnapshot CR.
The etcdSnapshotRestore struct has a new format. restoreRKEConfig is a string field that (currently) accepts three options, none, kubernetesVersion, and all. They are the same as what RKE1 will do when restoring from snapshot IF the metadata exists. The option should only probably be exposed to restore more than the snapshot if the snapshot SnapshotFile.metadata file exists. Generation behavior is the same -- it only needs to be incremented if the same snapshot is being restored more than once. The format is now:

type ETCDSnapshotRestore struct {
	// Name refers to the name of the associated etcdsnapshot object
	Name string `json:"name,omitempty"`

	// Changing the Generation is the only thing required to initiate a snapshot restore.
	Generation int `json:"generation,omitempty"`
	// Set to either none (or empty string), all, or kubernetesVersion
	RestoreRKEConfig string `json:"restoreRKEConfig,omitempty"`
}

A user should not be able to delete an etcdsnapshot CR manually -- if they want to delete it, they should use K3s/RKE2 to delete it on the node itself and allow the Rancher controllers to "trickle back" the deletion (and make the object disappear). Of course, this doesn't stop a user from trying to kubectl delete etcdsnapshot but if they do this, the object will just pop back up.
The etcdsnapshot objects names are of format <cluster-name>-<snapshot-name>-(local|s3)

You may be asking, "how the heck do I test this", it's really easy.
Just use kubectl to get etcdsnapshots.rke.cattle.io in the namespace of your cluster (fleet-default), and specify it for the name on the etcdSnapshotRestore struct. If you want to test kubernetesVersion restore or full cluster spec restore, set restoreRKEConfig to either all or kubernetesVersion.

blocked on https://github.com/rancher/rancher/issues/36503

Moving this to 2.6.5, as a thorough validation will be done post 2.6.4.
For 2.6.4, these tests will be covered

validate if P0 local etcd snapshots + restore work
validate if P0 s3 etcd snapshots + restore work
Log a UI bug to Hide the snapshot Now and Restore actions on the cluster and on snapshots page

Blocked - awaiting PR merge for https://github.com/rancher/rancher/issues/36941

Testing blocked; awaiting UI fix for https://github.com/rancher/dashboard/issues/5553

Ticket #34417 - Test Results
With Docker on single-node instance:
Veri-FAILED on rancher v2.6-b0b517977ce06e2bab7b6d827912a0011a779da5-head:

Fresh install of rancher v2.6-head
Provision a downstream RKE2 Custom cluster, with snapshots configured to use local etcd - [default]
Take a local etcd snapshot
Add a namespace to default project, here-for-now
Restore to local etcd snapshot taken in step 3
Verified - Local etcd snapshot restore is successful - [namespace from step 4 removed]
Configure cluster to use s3 bucket for snapshots and restore
Add a namespace to default project, s3
Take a snapshot with s3
Veri-FAILED - Blocked by #36941; Will resume testing when un-blocked

Screenshots:
Local etcd

s3 - BLOCKED

BLOCKED - by ticket #36943

Ticket #34417 - Test Results [resumed]
With Docker on a single-node install:
Veri-FAILED on rancher v2.6-56f0c2d81f99fab8e1c40aac0cb05ebd2c8b1aef-head:

Fresh install of rancher v2.6-head
As admin, create a standard user
As standard user, provision a downstream RKE2 Custom cluster, with snapshots configured to use local etcd - [default]
Take a local etcd snapshot
Veri-FAILED - Standard user cannot take snapshots - Blocked by #36943

Re-opened - Standard user unable to access s3 snapshots in RKE2 Custom cluster

Ticket #34417 - Test Results [resumed - pt.2]
With Docker on single-node instance:
Veri-FAILED on rancher v2.6-6c12bee2d0bee16a2854df5471aaa0cdee5b9bf1-head:

Fresh install of rancher v2.6-head
As admin, create a standard user
As standard user, provision a downstream RKE2 Custom cluster, with snapshots configured to use local etcd - [default]
Take a local etcd snapshot
Add a namespace to default project, here-for-now-local
Restore to local etcd snapshot taken in step 4
Verified - Local etcd snapshot restore is successful - [namespace from step 5 removed]
Configure cluster to use s3 bucket for snapshots and restore
Take a snapshot with s3
Veri-FAILED - standard user's s3 snapshots are not accessible in rancher UI, however, they are saved and stored in s3 bucket

Screenshots:
Local - pass

s3 - fail

Investigating this, it appears the reason is because the plansecret controller is unable to reconcile periodic snapshot list output due to a bug in K3s/RKE2.
Long story short is that K3s/RKE2 have different CLI flags for rke2 server vs rke2 etcd-snapshot. Between versions
K3s: v1.21.5+k3s2 and v1.21.6+k3s1
RKE2: v1.21.5+rke2r2 and v1.21.6+rke2r1
aliases were added to the etcd-snapshot subcommands to mimic the original --etcd-s3 flag from the server subcommand, allowing for inheritance of the command from the config file parser. The issue with this is that once this aliasing was done, K3s and RKE2 refused to run etcd-snapshot ls commands with --s3 defined on the command line, citing the error:
FATA[0000] Cannot use two forms of the same flag: etcd-s3 s3

Notably, we cannot simply blindly use the --etcd-s3 flag either because the older versions of K3s/RKE2 refuse to run the etcd-snapshot list command with the error
FATA[0000] flag provided but not defined: -etcd-s3

This schism of behavior requires changes on the v2prov planner side to resolve. The exact solution to this is to be determined.

Blocked by #37401; will resume testing once PR is merged

Ticket #34417 - Test Results [concluded]
Verified on rancher v2.6-228a585bb25b99ee191f2911ea3c6fb0ce9e41f3-head:

Fresh install of rancher v2.6-head
As admin, create a standard user
As standard user, provision a downstream RKE2 Custom cluster, with snapshots configured to use local etcd - [default]
Take a local etcd snapshot
Add a namespace to default project, here-for-now-local-test
Restore to local etcd snapshot taken in step 4
Verified - Local etcd snapshot restore is successful - [namespace from step 5 removed]
Configure cluster to use s3 bucket for snapshots and restore
Take a snapshot with s3
Add a namespace to default project, here-for-now-s3-test
Restore to s3 snapshot taken in step 9
Verified - s3 snapsot restore is successful - [namespace from step 10 removed]

Screenshots:
Local - step 5

Local - step 6 - restoring

Local - step 6 - restored

Local - step 7

s3 - step 10

s3 - step 11 - restoring

s3 - step 11 - restored

s3 - step 12

Snapshots - RancherUI

Snapshots - s3 Bucket

Release Notes Information
This new feature needs to be added to release notes.
Caveats:

Snapshot/restore requires k8s 1.21.6+ so it won't work on 1.21.4 and 1.21.5 (that are available, but are rather old).


Fix building for iOS #4640

Seems like the reason why compilation fails does not directly related to TensorFlow or even Protobuf:
The configure script of Protobuf (generated by autogen) has non trivial logic for detecting cross-com. It tries to compile some simple C programs into executable and run it during the configuration process. It works fine except the case when we build for x86_64 iOS simulator: one the one hand we get native code for build platform one the other hand we can not execute test program because it is based on iOS sdk. As result the configure script generates error.
Frankly speaking I still do not fully understand the logic behind cross-compilation check, however I've found workaround for building Protobuf and TensorFlow for all platforms including x86_64 iOS simulator. The workaround is simple: just remove --build=x86_64-apple-${OSX_VERSION} \ string for x86_64 in compile_ios_protobuf.sh file. Note, for consistency I also removed same strings for all other platforms (x386, armv7, armv7s, arm64), however it doesn't seems necessary.
My platform: macOS Sierra 10.12.1, Xcode 8.1, autoconf 2.69 (installed view homebrew).

Can one of the admins verify this patch?

I am the CTO of CVisionLab company. Our CEO have signed CLA recently and added me to special<EMAIL_ADDRESS><EMAIL_ADDRESS>google group.

On 17 Nov 2016, at 18:01, googlebot<EMAIL_ADDRESS>wrote:
Thanks for your pull request. It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).
📝 Please visit https://cla.developers.google.com/ https://cla.developers.google.com/ to sign.
Once you've signed, please reply here (e.g. I signed it!) and we'll verify. Thanks.
If you've already signed a CLA, it's possible we don't have your GitHub username or you're using a different email address. Check your existing CLA data https://cla.developers.google.com/clas and verify that your email is set on your git commits https://help.github.com/articles/setting-your-email-in-git/.
If you signed the CLA as a corporation, please let us know the company's name.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/tensorflow/tensorflow/pull/5668#issuecomment-261269190, or mute the thread https://github.com/notifications/unsubscribe-auth/AAOX_YUS0yMODaakyCMKKkJIKKZMooLfks5q_GxWgaJpZM4K1aEj.

Please make sure that whatever email is used in the CLA is associated with your github account (doesn't have to be primary, but is has to be one of the emails on your account, and also, that it is set as the email on the commits. @willnorris do you see the CLA? Or can I check this somehow?

I didn’t signed CLA and as I understand I don’t have to. I am employee of CVisionLab company. Our CEO (Alexander) have recently signed CLA and added my email<EMAIL_ADDRESS>to google group<EMAIL_ADDRESS>with list of employees allowed to contribute.

On 17 Nov 2016, at 22:47, Martin Wicke<EMAIL_ADDRESS>wrote:
Please make sure that whatever email is used in the CLA is associated with your github account (doesn't have to be primary, but is has to be one of the emails on your account, and also, that it is set as the email on the commits. @willnorris https://github.com/willnorris do you see the CLA? Or can I check this somehow?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/tensorflow/tensorflow/pull/5668#issuecomment-261349277, or mute the thread https://github.com/notifications/unsubscribe-auth/AAOX_Yn_dSGWD9XqJbAy2KtpteLaf3H_ks5q_K9kgaJpZM4K1aEj.

@tensorflow-jenkins test this please

The failing test is a flake. I'm pushing a fix for it.


In the next version, the new tab view cannot be collapsed when sliding.

In the next version, the new tab view cannot be collapsed when sliding. Figure 1 shows the next version, and Figure 2 shows the previous version.
Obviously, the experience in Figure 1 is not as good as that in Figure 2.

Check latest version! 😀

Check latest version! 😀

YEAH! I have switched to original.  Thank you very much.


Refactoring GetPID()

this issues is closed https://github.com/ScienceSoft-Inc/integrity-sum/pull/19


improve global object

currently it will fail if we are in a web worker or in an unknown situation in strict mode
compare what this module adds
typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : this;

with what browserify adds
typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}

how I'd recommend switching to the browserify version

What is the reason for this order? I think window is the most unsafe case and should be processed first. self is a bit similar so should be the secod.

I used a different ordering in the actual pull based on me thinking code was likely going to be run in a browser, node, or a web worker in that order


launchApp hanging on 18.2.2 with TrustKit

Description
When running the tests, with no "real" tests (just the demo ones that come from init), the app hangs at "Loading from localhost:8081". When launching the same app on the simulator not using detox to launch it, I get past that banner almost instantly to the first screen of the app.
The log implies that the network request is "done", but it's still waiting on the bundle too load. This doesn't happen on older versions of detox (17.8.3 is the pre-18 version i tried).
#2409 seems to be a similar issue, but it appears to also be happening on 17.5.0 versions. Notably, we don't use react-native-splash-screen. Also, I have checked that debugging is disabled, and live reload is disabled. I am using a debug version of the app.
#2569 seems to be similar as well, but the app does not boot correctly. I do see the
App has not responded to the network requests below:
  (id = -1000) isReady: {}

error however

[x] I have tested this issue on the latest Detox release and it still reproduces

Reproduction
Provide the steps necessary to reproduce the issue. If you are seeing a regression, try to provide the last known version where the issue did not reproduce.

run detox init -r jest
fill out the .detoxrc.js with some valid content
run detox test -c ios to run the tests on iOS
launchApp runs, but

“React Native (bundle load)” shows as pending on the detox side, and
"Loading from localhost:8081" shows on the simulator

This doesn't happen when I launch the app manually (exact same app - only change is manual launch), and also seems to work correctly when I installed<EMAIL_ADDRESS>- there was no hang and the app booted normally.
Expected behavior
The app gets passed the "Loading from localhost:8081"
Screenshots
If applicable, add screenshots to help explain your problem.

Environment (please complete the following information):

Detox: 18.2.2
React Native: 0.63.4
Node: 15.3.0
Device: iPhone 8 @ iOS 14.3
Xcode: 12.3
iOS: 14.3
macOS: 11.1

Logs
If you are experiencing a timeout in your test

[x] I have followed the instructions under Identifying which synchronization mechanism causes us to wait too much, I have read synchronization debug documentation and am providing the relevant synchronization debug output below:

Device and verbose Detox logs

[x] I have run my tests using the --loglevel trace argument and am providing the verbose log below:

expand to see - i cut it off before the timeout. this same this thing just continues until the timeout
$ /Users/david/projects/ferocia/up/native/node_modules/.bin/detox test -c ios --loglevel trace
detox[94957] INFO:  [test.js] DETOX_CONFIGURATION="ios" DETOX_LOGLEVEL="trace" DETOX_REPORT_SPECS=true DETOX_START_TIMESTAMP=1611270389237 DETOX_USE_CUSTOM_LOGGER=true jest --config e2e/config.json --testNamePattern '^((?!:android:).)*$' --maxWorkers 1 e2e
detox[94958] TRACE: [Detox.js/DETOX_CREATE] created a Detox instance with config:
{"artifactsConfig":{"rootDir":"artifacts/ios.2021-01-21 23-06-29Z","plugins":{"log":{"enabled":true,"keepOnlyFailedTestsArtifacts":false},"screenshot":{"shouldTakeAutomaticSnapshots":true,"keepOnlyFailedTestsArtifacts":true,"takeWhen":{"testStart":false,"testDone":true},"enabled":true},"video":{"android":{"bitRate":4000000},"simulator":{"codec":"hevc"},"enabled":false,"keepOnlyFailedTestsArtifacts":false},"instruments":{"enabled":false,"keepOnlyFailedTestsArtifacts":false},"timeline":{"enabled":false},"uiHierarchy":{"enabled":true,"keepOnlyFailedTestsArtifacts":false}},"pathBuilder":{"_rootDir":"artifacts/ios.2021-01-21 23-06-29Z"}},"behaviorConfig":{"init":{"reinstallApp":true,"exposeGlobals":true},"cleanup":{"shutdownDevice":false},"launchApp":"auto"},"cliConfig":{"configuration":"ios","loglevel":"trace","useCustomLogger":"true"},"deviceConfig":{"type":"ios.simulator","build":"./up ios build test","binaryPath":"./products/ios/test.app","device":{"type":"iPhone 8","os":"14.3"}},"runnerConfig":{"testRunner":"jest","runnerConfig":"e2e/config.json","specs":"e2e"},"sessionConfig":{"autoStart":true,"server":"ws://localhost:51374","sessionId":"3f310b0f-bbc3-fe73-3087-353b3c551fe3","debugSynchronization":10000},"errorBuilder":{"filepath":"/Users/david/projects/ferocia/up/native/.detoxrc.js","contents":{"testRunner":"jest","runnerConfig":"e2e/config.json","artifacts":{"rootDir":"artifacts","plugins":{"instruments":{"enabled":false},"log":{"enabled":true},"uiHierarchy":"enabled","screenshot":{"shouldTakeAutomaticSnapshots":true,"keepOnlyFailedTestsArtifacts":true,"takeWhen":{"testStart":false,"testDone":true}},"video":{"android":{"bitRate":4000000},"simulator":{"codec":"hevc"}}}},"configurations":{"ios":{"type":"ios.simulator","build":"./up ios build test","binaryPath":"./products/ios/test.app","device":{"type":"iPhone 8","os":"14.3"}},"android":{"type":"android.emulator","binaryPath":"SPECIFY_PATH_TO_YOUR_APP_BINARY","device":{"avdName":"Pixel_2_API_29"}}}},"configurationName":"ios"}}
detox[94958] INFO:  [DetoxServer.js] server listening on localhost:51374...
detox[94958] DEBUG: [AsyncWebSocket.js/WEBSOCKET_OPEN] opened web socket to: ws://localhost:51374
detox[94958] TRACE: [AsyncWebSocket.js/WEBSOCKET_SEND] {"type":"login","params":{"sessionId":"3f310b0f-bbc3-fe73-3087-353b3c551fe3","role":"tester"},"messageId":0}
detox[94958] DEBUG: [DetoxServer.js/LOGIN] role=tester, sessionId=3f310b0f-bbc3-fe73-3087-353b3c551fe3
detox[94958] DEBUG: [DetoxServer.js/LOGIN_SUCCESS] role=tester, sessionId=3f310b0f-bbc3-fe73-3087-353b3c551fe3
detox[94958] TRACE: [AsyncWebSocket.js/WEBSOCKET_MESSAGE] {"type":"loginSuccess","params":{"sessionId":"3f310b0f-bbc3-fe73-3087-353b3c551fe3","role":"tester"},"messageId":0}

detox[94958] DEBUG: [exec.js/EXEC_CMD, #0] applesimutils --list --byOS 14.3 --byType "iPhone 8"
detox[94958] TRACE: [exec.js/EXEC_SUCCESS, #0] [
  {
    "os" : {
      "bundlePath" : "\/Applications\/Xcode.app\/Contents\/Developer\/Platforms\/iPhoneOS.platform\/Library\/Developer\/CoreSimulator\/Profiles\/Runtimes\/iOS.simruntime",
      "buildversion" : "18C61",
      "runtimeRoot" : "\/Applications\/Xcode.app\/Contents\/Developer\/Platforms\/iPhoneOS.platform\/Library\/Developer\/CoreSimulator\/Profiles\/Runtimes\/iOS.simruntime\/Contents\/Resources\/RuntimeRoot",
      "identifier" : "com.apple.CoreSimulator.SimRuntime.iOS-14-3",
      "version" : "14.3",
      "isAvailable" : true,
      "name" : "iOS 14.3"
    },
    "dataPath" : "\/Users\/david\/Library\/Developer\/CoreSimulator\/Devices\/46AF1CE8-0373-49B4-BB26-78E90B96CB5D\/data",
    "logPath" : "\/Users\/david\/Library\/Logs\/CoreSimulator\/46AF1CE8-0373-49B4-BB26-78E90B96CB5D",
    "udid" : "46AF1CE8-0373-49B4-BB26-78E90B96CB5D",
    "isAvailable" : true,
    "deviceType" : {
      "minRuntimeVersion" : 720896,
      "bundlePath" : "\/Applications\/Xcode.app\/Contents\/Developer\/Platforms\/iPhoneOS.platform\/Library\/Developer\/CoreSimulator\/Profiles\/DeviceTypes\/iPhone 8.simdevicetype",
      "maxRuntimeVersion" :<PHONE_NUMBER>,
      "name" : "iPhone 8",
      "identifier" : "com.apple.CoreSimulator.SimDeviceType.iPhone-8",
      "productFamily" : "iPhone"
    },
    "deviceTypeIdentifier" : "com.apple.CoreSimulator.SimDeviceType.iPhone-8",
    "state" : "Booted",
    "name" : "iPhone 8"
  }
]

detox[94958] DEBUG: [exec.js/EXEC_CMD, #1] applesimutils --list --byId 46AF1CE8-0373-49B4-BB26-78E90B96CB5D --maxResults 1
detox[94958] TRACE: [exec.js/EXEC_SUCCESS, #1] [
  {
    "os" : {
      "bundlePath" : "\/Applications\/Xcode.app\/Contents\/Developer\/Platforms\/iPhoneOS.platform\/Library\/Developer\/CoreSimulator\/Profiles\/Runtimes\/iOS.simruntime",
      "buildversion" : "18C61",
      "runtimeRoot" : "\/Applications\/Xcode.app\/Contents\/Developer\/Platforms\/iPhoneOS.platform\/Library\/Developer\/CoreSimulator\/Profiles\/Runtimes\/iOS.simruntime\/Contents\/Resources\/RuntimeRoot",
      "identifier" : "com.apple.CoreSimulator.SimRuntime.iOS-14-3",
      "version" : "14.3",
      "isAvailable" : true,
      "name" : "iOS 14.3"
    },
    "dataPath" : "\/Users\/david\/Library\/Developer\/CoreSimulator\/Devices\/46AF1CE8-0373-49B4-BB26-78E90B96CB5D\/data",
    "logPath" : "\/Users\/david\/Library\/Logs\/CoreSimulator\/46AF1CE8-0373-49B4-BB26-78E90B96CB5D",
    "udid" : "46AF1CE8-0373-49B4-BB26-78E90B96CB5D",
    "isAvailable" : true,
    "deviceType" : {
      "minRuntimeVersion" : 720896,
      "bundlePath" : "\/Applications\/Xcode.app\/Contents\/Developer\/Platforms\/iPhoneOS.platform\/Library\/Developer\/CoreSimulator\/Profiles\/DeviceTypes\/iPhone 8.simdevicetype",
      "maxRuntimeVersion" :<PHONE_NUMBER>,
      "name" : "iPhone 8",
      "identifier" : "com.apple.CoreSimulator.SimDeviceType.iPhone-8",
      "productFamily" : "iPhone"
    },
    "deviceTypeIdentifier" : "com.apple.CoreSimulator.SimDeviceType.iPhone-8",
    "state" : "Booted",
    "name" : "iPhone 8"
  }
]

detox[94958] TRACE: [ArtifactsManager.js/LIFECYCLE] artifactsManager.onBootDevice({
  coldBoot: false,
  deviceId: '46AF1CE8-0373-49B4-BB26-78E90B96CB5D',
  type: 'iPhone 8'
})
detox[94958] TRACE: [ArtifactsManager.js/LIFECYCLE] artifactsManager.onBeforeUninstallApp({
  deviceId: '46AF1CE8-0373-49B4-BB26-78E90B96CB5D',
  bundleId: 'au.com.up.money.integration'
})
detox[94958] DEBUG: [exec.js/EXEC_CMD, #2] /usr/bin/xcrun simctl uninstall 46AF1CE8-0373-49B4-BB26-78E90B96CB5D au.com.up.money.integration
detox[94958] DEBUG: [exec.js/EXEC_TRY, #2] Uninstalling au.com.up.money.integration...
detox[94958] TRACE: [exec.js/EXEC_SUCCESS, #2]
detox[94958] DEBUG: [exec.js/EXEC_SUCCESS, #2] au.com.up.money.integration uninstalled
detox[94958] DEBUG: [exec.js/EXEC_CMD, #3] /usr/bin/xcrun simctl install 46AF1CE8-0373-49B4-BB26-78E90B96CB5D "/Users/david/projects/ferocia/up/native/products/ios/test.app"
detox[94958] DEBUG: [exec.js/EXEC_TRY, #3] Installing /Users/david/projects/ferocia/up/native/products/ios/test.app...
detox[94958] TRACE: [exec.js/EXEC_SUCCESS, #3]
detox[94958] DEBUG: [exec.js/EXEC_SUCCESS, #3] /Users/david/projects/ferocia/up/native/products/ios/test.app installed
ROOT_DESCRIBE_BLOCK[94958] TRACE: [ArtifactsManager.js/LIFECYCLE] artifactsManager.onRunDescribeStart({ name: 'ROOT_DESCRIBE_BLOCK' })
Example[94958] TRACE: [ArtifactsManager.js/LIFECYCLE] artifactsManager.onRunDescribeStart({ name: 'Example' })
detox[94958] INFO:  Example is assigned to 46AF1CE8-0373-49B4-BB26-78E90B96CB5D {"type":"iPhone 8","os":"14.3"}
detox[94958] INFO:  at e2e/firstTest.e2e.js:11:21
 before all
detox[94958] TRACE: [ArtifactsManager.js/LIFECYCLE] artifactsManager.onBeforeTerminateApp({
  deviceId: '46AF1CE8-0373-49B4-BB26-78E90B96CB5D',
  bundleId: 'au.com.up.money.integration'
})
detox[94958] INFO:  at e2e/firstTest.e2e.js:22:21
 launch app done
detox[94958] DEBUG: [exec.js/EXEC_CMD, #4] /usr/bin/xcrun simctl terminate 46AF1CE8-0373-49B4-BB26-78E90B96CB5D au.com.up.money.integration
detox[94958] DEBUG: [exec.js/EXEC_TRY, #4] Terminating au.com.up.money.integration...
detox[94958] INFO:  Example: should have welcome screen
detox[94958] TRACE: [Detox.js/DETOX_BEFORE_EACH] running test: "Example should have welcome screen"
detox[94958] TRACE: [ArtifactsManager.js/LIFECYCLE] artifactsManager.onTestStart({
  title: 'should have welcome screen',
  fullName: 'Example should have welcome screen',
  status: 'running',
  invocations: 1
})
detox[94958] TRACE: [Artifact.js/START] starting SimulatorLogRecording
detox[94958] DEBUG: [exec.js/SPAWN_CMD, #5] [pid=95063] /usr/bin/xcrun simctl spawn 46AF1CE8-0373-49B4-BB26-78E90B96CB5D log stream --level debug --style compact
detox[94958] TRACE: [AsyncWebSocket.js/WEBSOCKET_SEND] {"type":"reactNativeReload","params":{},"messageId":-1000}
detox[94958] TRACE: [DetoxServer.js/MESSAGE] role=tester action=reactNativeReload (sessionId=3f310b0f-bbc3-fe73-3087-353b3c551fe3)
detox[94958] DEBUG: [DetoxServer.js/CANNOT_FORWARD] role=app not connected, cannot fw action (sessionId=3f310b0f-bbc3-fe73-3087-353b3c551fe3)
detox[94958] TRACE: [exec.js/EXEC_SUCCESS, #4]
detox[94958] DEBUG: [exec.js/EXEC_SUCCESS, #4] au.com.up.money.integration terminated
detox[94958] TRACE: [ArtifactsManager.js/LIFECYCLE] artifactsManager.onTerminateApp({
  deviceId: '46AF1CE8-0373-49B4-BB26-78E90B96CB5D',
  bundleId: 'au.com.up.money.integration'
})
detox[94958] DEBUG: [exec.js/EXEC_CMD, #6] applesimutils --byId 46AF1CE8-0373-49B4-BB26-78E90B96CB5D --bundle au.com.up.money.integration --restartSB --setPermissions location=always,notifications=YES
detox[94958] DEBUG: [exec.js/EXEC_TRY, #6] Trying to set permissions...
detox[94958] TRACE: [exec.js/EXEC_SUCCESS, #6]
detox[94958] DEBUG: [exec.js/EXEC_SUCCESS, #6] Permissions are set
detox[94958] TRACE: [ArtifactsManager.js/LIFECYCLE] artifactsManager.onBeforeLaunchApp({
  bundleId: 'au.com.up.money.integration',
  deviceId: '46AF1CE8-0373-49B4-BB26-78E90B96CB5D',
  launchArgs: {
    detoxServer: 'ws://localhost:51374',
    detoxSessionId: '3f310b0f-bbc3-fe73-3087-353b3c551fe3',
    detoxURLBlacklistRegex: '\\("localhost:8081"\\)'
  }
})
detox[94958] TRACE: [Artifact.js/START] starting SimulatorLogRecording {
  udid: '46AF1CE8-0373-49B4-BB26-78E90B96CB5D',
  bundleId: 'au.com.up.money.integration'
}
detox[94958] TRACE: [Artifact.js/STOP] stopping SimulatorLogRecording
detox[94958] DEBUG: [exec.js/KILL] sending SIGINT to [pid = 95063]: /usr/bin/xcrun simctl spawn 46AF1CE8-0373-49B4-BB26-78E90B96CB5D log stream --level debug --style compact
detox[94958] TRACE: [exec.js/SPAWN_END, #5] /usr/bin/xcrun simctl spawn 46AF1CE8-0373-49B4-BB26-78E90B96CB5D log stream --level debug --style compact finished with code = 0
detox[94958] DEBUG: [exec.js/EXEC_CMD, #7] /usr/bin/xcrun simctl get_app_container 46AF1CE8-0373-49B4-BB26-78E90B96CB5D au.com.up.money.integration
detox[94958] TRACE: [exec.js/EXEC_SUCCESS, #7] /Users/david/Library/Developer/CoreSimulator/Devices/46AF1CE8-0373-49B4-BB26-78E90B96CB5D/data/Containers/Bundle/Application/6AA6FDE4-C9E2-4572-AD36-774A922C5038/test.app

detox[94958] DEBUG: [exec.js/SPAWN_CMD, #8] [pid=95116] /usr/bin/xcrun simctl spawn 46AF1CE8-0373-49B4-BB26-78E90B96CB5D log stream --level debug --style compact --predicate "processImagePath beginsWith \"/Users/david/Library/Developer/CoreSimulator/Devices/46AF1CE8-0373-49B4-BB26-78E90B96CB5D/data/Containers/Bundle/Application/6AA6FDE4-C9E2-4572-AD36-774A922C5038/test.app\""
detox[94958] DEBUG: [exec.js/EXEC_CMD, #9] SIMCTL_CHILD_DYLD_INSERT_LIBRARIES="/Users/david/Library/Detox/ios/8819bfbbc5e7840cd22a0609009bcfaefd64e1a2/Detox.framework/Detox" /usr/bin/xcrun simctl launch 46AF1CE8-0373-49B4-BB26-78E90B96CB5D au.com.up.money.integration --args -detoxServer ws://localhost:51374 -detoxSessionId 3f310b0f-bbc3-fe73-3087-353b3c551fe3 -detoxURLBlacklistRegex '\("localhost:8081"\)'
detox[94958] DEBUG: [exec.js/EXEC_TRY, #9] Launching au.com.up.money.integration...
detox[94958] TRACE: [exec.js/EXEC_SUCCESS, #9] au.com.up.money.integration: 95210

detox[94958] DEBUG: [exec.js/EXEC_CMD, #10] /usr/bin/xcrun simctl get_app_container 46AF1CE8-0373-49B4-BB26-78E90B96CB5D au.com.up.money.integration
detox[94958] TRACE: [exec.js/EXEC_SUCCESS, #10] /Users/david/Library/Developer/CoreSimulator/Devices/46AF1CE8-0373-49B4-BB26-78E90B96CB5D/data/Containers/Bundle/Application/6AA6FDE4-C9E2-4572-AD36-774A922C5038/test.app

detox[94958] INFO:  [AppleSimUtils.js] au.com.up.money.integration launched. To watch simulator logs, run:
        /usr/bin/xcrun simctl spawn 46AF1CE8-0373-49B4-BB26-78E90B96CB5D log stream --level debug --style compact --predicate 'process == "Up"'
detox[95210] TRACE: [ArtifactsManager.js/LIFECYCLE] artifactsManager.onLaunchApp({
  bundleId: 'au.com.up.money.integration',
  deviceId: '46AF1CE8-0373-49B4-BB26-78E90B96CB5D',
  launchArgs: {
    detoxServer: 'ws://localhost:51374',
    detoxSessionId: '3f310b0f-bbc3-fe73-3087-353b3c551fe3',
    detoxURLBlacklistRegex: '\\("localhost:8081"\\)'
  },
  pid: 95210
})
detox[94958] TRACE: [AsyncWebSocket.js/WEBSOCKET_SEND] {"type":"isReady","params":{},"messageId":-1000}
detox[94958] TRACE: [DetoxServer.js/MESSAGE] role=tester action=isReady (sessionId=3f310b0f-bbc3-fe73-3087-353b3c551fe3)
detox[94958] DEBUG: [DetoxServer.js/CANNOT_FORWARD] role=app not connected, cannot fw action (sessionId=3f310b0f-bbc3-fe73-3087-353b3c551fe3)
detox[94958] DEBUG: [DetoxServer.js/LOGIN] role=app, sessionId=3f310b0f-bbc3-fe73-3087-353b3c551fe3
detox[94958] DEBUG: [DetoxServer.js/LOGIN_SUCCESS] role=app, sessionId=3f310b0f-bbc3-fe73-3087-353b3c551fe3
detox[94958] TRACE: [AsyncWebSocket.js/WEBSOCKET_SEND] {"type":"currentStatus","params":{},"messageId":1}
detox[94958] TRACE: [DetoxServer.js/MESSAGE] role=tester action=currentStatus (sessionId=3f310b0f-bbc3-fe73-3087-353b3c551fe3)
detox[94958] TRACE: [DetoxServer.js/MESSAGE] role=app action=currentStatusResult (sessionId=3f310b0f-bbc3-fe73-3087-353b3c551fe3)
detox[94958] TRACE: [AsyncWebSocket.js/WEBSOCKET_MESSAGE] {"messageId":1,"type":"currentStatusResult","params":{"status":"The system is busy with the following tasks:\n\nDelayed Perform Selector\n⏱ 1 pending selector\n\nDispatch Queue\n⏱ Queue: “Main Queue (<OS_dispatch_queue_main: com.apple.main-thread>)” with 24 work items\n\nRun Loop\n⏱ “Main Run Loop”\n\nOne-time Events\n⏱ “React Native (bundle load)”\n⏱ “Network Request” with object: “URL: “https://api2.branch.io/v1/install””\n\nTimer\n⏱ Fire date: 2021-01-22 10:06:46 +1100 (fire interval: 0.9999979734420776) repeats: NO repeat interval: 0>\n⏱ Fire date: 2021-01-22 10:06:46 +1100 (fire interval: 1.499992966651917) repeats: NO repeat interval: 0>","messageId":1}}

detox[94958] INFO:  [actions.js] The system is busy with the following tasks:

Delayed Perform Selector
⏱ 1 pending selector

Dispatch Queue
⏱ Queue: “Main Queue (<OS_dispatch_queue_main: com.apple.main-thread>)” with 24 work items

Run Loop
⏱ “Main Run Loop”

One-time Events
⏱ “React Native (bundle load)”
⏱ “Network Request” with object: “URL: “https://api2.branch.io/v1/install””

Timer
⏱ Fire date: 2021-01-22 10:06:46 +1100 (fire interval: 0.9999979734420776) repeats: NO repeat interval: 0>
⏱ Fire date: 2021-01-22 10:06:46 +1100 (fire interval: 1.499992966651917) repeats: NO repeat interval: 0>
detox[94958] TRACE: [AsyncWebSocket.js/WEBSOCKET_SEND] {"type":"currentStatus","params":{},"messageId":2}
detox[94958] TRACE: [DetoxServer.js/MESSAGE] role=tester action=currentStatus (sessionId=3f310b0f-bbc3-fe73-3087-353b3c551fe3)
detox[94958] TRACE: [DetoxServer.js/MESSAGE] role=app action=currentStatusResult (sessionId=3f310b0f-bbc3-fe73-3087-353b3c551fe3)
detox[94958] TRACE: [AsyncWebSocket.js/WEBSOCKET_MESSAGE] {"params":{"messageId":2,"status":"The system is busy with the following tasks:\n\nDispatch Queue\n⏱ Queue: “Main Queue (<OS_dispatch_queue_main: com.apple.main-thread>)” with 1 work item\n\nRun Loop\n⏱ “Main Run Loop”\n\nOne-time Events\n⏱ “React Native (bundle load)”"},"messageId":2,"type":"currentStatusResult"}

detox[94958] INFO:  [actions.js] The system is busy with the following tasks:

Dispatch Queue
⏱ Queue: “Main Queue (<OS_dispatch_queue_main: com.apple.main-thread>)” with 1 work item

Run Loop
⏱ “Main Run Loop”

One-time Events
⏱ “React Native (bundle load)”
detox[94958] TRACE: [AsyncWebSocket.js/WEBSOCKET_SEND] {"type":"currentStatus","params":{},"messageId":3}
detox[94958] TRACE: [DetoxServer.js/MESSAGE] role=tester action=currentStatus (sessionId=3f310b0f-bbc3-fe73-3087-353b3c551fe3)
detox[94958] TRACE: [DetoxServer.js/MESSAGE] role=app action=currentStatusResult (sessionId=3f310b0f-bbc3-fe73-3087-353b3c551fe3)
detox[94958] TRACE: [AsyncWebSocket.js/WEBSOCKET_MESSAGE] {"params":{"messageId":3,"status":"The system is busy with the following tasks:\n\nDispatch Queue\n⏱ Queue: “Main Queue (<OS_dispatch_queue_main: com.apple.main-thread>)” with 1 work item\n\nRun Loop\n⏱ “Main Run Loop”\n\nOne-time Events\n⏱ “React Native (bundle load)”"},"messageId":3,"type":"currentStatusResult"}

detox[94958] INFO:  [actions.js] The system is busy with the following tasks:

Dispatch Queue
⏱ Queue: “Main Queue (<OS_dispatch_queue_main: com.apple.main-thread>)” with 1 work item

Run Loop
⏱ “Main Run Loop”

One-time Events
⏱ “React Native (bundle load)”

It seems like the React Native bundle load is stuck. We've seen this happen when there is a conflict between Detox and FB's Flipper, and we have code that is supposed to disable Flipper when running Detox tests. Can you please try disabling Flipper (normally in the AppDelegate.m file) and running the test again?
Thanks

It seems like the React Native bundle load is stuck. We've seen this happen when there is a conflict between Detox and FB's Flipper, and we have code that is supposed to disable Flipper when running Detox tests. Can you please try disabling Flipper (normally in the AppDelegate.m file) and running the test again?
Thanks

Running in the same issue with Flipper disabled on the project.
Environment:

Detox: 18.2.2
React Native: 0.63.4
Node: 12.6.0
Device: iPhone 12 Pro Max @ iOS 14.3
Xcode: 12.3
iOS: 14.3
macOS: 11.1

Running in the same issue with Flipper disabled on the project.
Environment:

Detox: 18.2.2
React Native: 0.63.4
Node: 12.6.0
Device: iPhone 12 Pro Max @ iOS 14.3
Xcode: 12.3
iOS: 14.3
macOS: 11.1

Can anyone please create a zip (sans Node Modules) of a project that reproduces this and post here? Thanks

Can anyone please create a zip (sans Node Modules) of a project that reproduces this and post here? Thanks

@LeoNatan just checked - we don't have Flipper enabled either. The code doesn't seem to exist in AppDelegate.swift. I can add in a bunch of logging in the AppDelegate#application function and see if/when it is failing there.

@LeoNatan just checked - we don't have Flipper enabled either. The code doesn't seem to exist in AppDelegate.swift. I can add in a bunch of logging in the AppDelegate#application function and see if/when it is failing there.

We are experiencing the same problem, and despite I don't know the cause yet, I was able to fix it by changing this:
...
await device.launchApp({
  launchArgs: {
     ...params
  }
  ...
  );
await mockServers()/setUrlBlacklist()/...

to this:
...
await device.launchApp({
  launchArgs: {
     ...params,
     detoxEnableSynchronization: 0,
  }
  ...
  );
await mockServers()/setUrlBlacklist()/...
device.enableSynchronization()

As you can see, the change is to enable and then disable synchronization. For the record, everything was working nearly perfectly with version 17.

We are experiencing the same problem, and despite I don't know the cause yet, I was able to fix it by changing this:
...
await device.launchApp({
  launchArgs: {
     ...params
  }
  ...
  );
await mockServers()/setUrlBlacklist()/...

to this:
...
await device.launchApp({
  launchArgs: {
     ...params,
     detoxEnableSynchronization: 0,
  }
  ...
  );
await mockServers()/setUrlBlacklist()/...
device.enableSynchronization()

As you can see, the change is to enable and then disable synchronization. For the record, everything was working nearly perfectly with version 17.

@erheron I don't think your issue is related to this one. If you have timeouts in Detox, it means it's something busy in your app.

@erheron I don't think your issue is related to this one. If you have timeouts in Detox, it means it's something busy in your app.

Having the same problem:
Detox: 18.2.1
React Native: 0.63.2 (Expo ejected project bare workflow)
Node: 14.15.0
Device: iPhone 11 iOS 14.4
Xcode: 12.4
iOS: 14.4
macOS: 10.15.7

Having the same problem:
Detox: 18.2.1
React Native: 0.63.2 (Expo ejected project bare workflow)
Node: 14.15.0
Device: iPhone 11 iOS 14.4
Xcode: 12.4
iOS: 14.4
macOS: 10.15.7

Guys, I am unable to reproduce this. As requested before, please create an empty project that reproduces this issue with the latest Detox, so I can investigate. Thanks

Guys, I am unable to reproduce this. As requested before, please create an empty project that reproduces this issue with the latest Detox, so I can investigate. Thanks

I didn't have this locally, but after upgrading to the latest version I started getting the below problem on my Bitrise builds
detox[17557] INFO:  [actions.js] The system is busy with the following tasks:
Dispatch Queue
⏱ Queue: “Main Queue (<OS_dispatch_queue_main: com.apple.main-thread>)” with 1 work item
Run Loop
⏱ “Main Run Loop”
UI Elements
⏱ 1 CA animation pending

@dbilgin You have an animation. Unrelated to the problem here.

@deecewan Did u find a solution to this?

I did not. I haven't had time to dig into it, either.
It's likely one of our libraries that's causing this. I'm not sure how to diagnose which one it is. Perhaps @LeoNatan has some hints as to where I can look to see what's breaking it?

@deecewan Do you have Firebase/Google stuff in your project? Recently it was shown to have bugs.

we do have firebase. I can't remember if it's enabled on iOS or not. I'll take a look.

I want to put my two cents: the issue of
App has not responded to the network requests below:
  (id = -1000) isReady: {}

might occur if someone forgot to finalize the Android configuration according to Introduction.Android. I'm aware the thread is about iOS but maybe it'll help someone who's facing this or similar problem.

@marek-siemieniuk-morawski Thanks... this was my issue. Didn't add the java file. Thought it was for non-RN setups.

We have run into the similar issue with our production app. Disabling Flipper having no effect. I have been trying to reproduce the issue adding only bunch of dependencies into a clean project, but cannot reproduce.
What I found out and may help to locate the issue:

The issue only appears when using detox 18.x, on v17.14.9 it works well.
The debug iOS build is hanging on the bundle load step (as described in the initial post).
When we try to run the release iOS build, it goes past the initial loading, but hangs when performing some specific server call from a redux-saga using axios. (figured out by trying without that call). Strangely, some axios calls finish successfully before. The app doesn't hang completely, the buttons in UI are still working when pressed manually. It looks like if the redux-saga would get cancelled. The detox test fails almost immediately by not passing a testing expect call. (so like if synchronization would be completed)
Every time the same hang is 100% reproducible, so not random at all. Always happening at the same stage of the app.
Running the exact same build manually works without issues.

So it seems strangely that the issue is not connected with any particular library, but more with the architecture of the app.
The app is using many different libraries. All hangs I've seen so far are coming from a redux-saga custom code. When we workaround one hang, it hangs later in the flow on something else. Sometimes not even directly on a server call, but when trying to wait for the server response using a redux-saga take effect.
I'll try to spend more time investigating where it's coming from, and hopefully create some minimal example. Unfortunately so far we only run into this issue with our production code, so cannot share.

We have run into the similar issue with our production app. Disabling Flipper having no effect. I have been trying to reproduce the issue adding only bunch of dependencies into a clean project, but so far no luck.
What I found out and may help to locate the issue:

The issue only appears when using detox 18.x, on v17.14.9 it works well.
The debug iOS build is hanging on the bundle load step (as described in the initial post).
When we try to run the release iOS build, it goes past the initial loading, but hangs when performing some specific server call from a redux-saga using axios. (figured out by trying without that call). Strangely, some axios calls finish successfully before. The app doesn't hang completely, the buttons in UI are still working when pressed manually, but the app doesn't get pass the hanging operation. It looks like if the redux-saga would get cancelled. The detox test fails almost immediately by not passing a testing expect call. (so like if synchronization would be completed)
Every time the same hang is 100% reproducible, so not random at all. Always happening at the same stage of the app.
Running the exact same build manually works without issues.

So it seems strangely that the issue is not connected with any particular library, but more with the architecture of the app.
Our app is using many libraries. All hangs I've seen so far are coming from a redux-saga custom code. When we workaround one hang, it hangs later in the flow on something else. Sometimes not even directly on a server call, but when trying to wait for the server response using a redux-saga take effect.
I'll try to spend more time investigating where it's coming from, and hopefully create some minimal example. Unfortunately so far we only run into this issue with our production code, so cannot share.

EDIT: After hours of investigating and removing one lib at a time (very tedious job), I've found the culprit: react-native-cert-pinner. When removed from the project, tests work again. Are you using the same (or similar) in your project @deecewan ? And does someone know some better alternative? The lib is not maintained anymore (for 2 years). Thank you

@Iskander508 we don't use that particular project, but we do have Cert Pinning in our app.

Amazing, thanks @Iskander508 @avanderberg

I had the same issue in iOS release build event it was working in debug build
my current react native version "react-native": "0.61.5"
i fix it by add in info.plist file
<key>NSAllowsArbitraryLoads</key>
<true/>

which is added by default since react-native version 0.64

@MoeMamdouh Setting NSAllowsArbitraryLoads to true enables all unsecure HTTP traffic and is therefore a bad approach. It can get your app to fail app-store reviews. Read all about it here. Consider using NSAllowsLocalNetworking, instead.

Same problem, I am using Trustkit with "kTSKSwizzleNetworkDelegates: @YES"!

@ericschaal I have the same problem. I am using Trustkit with "kTSKSwizzleNetworkDelegates: @YES". Were you able to fix the issue?

We have SSL pinning setup in our app using TrustKit. We have followed the approach outlined in https://itnext.io/react-native-security-ssl-pinning-cde086210d58

Having the same issue, I am using Trustkit with "kTSKSwizzleNetworkDelegates: @YES" as well.
Has anyone found the solution to this ?

@walterholohan unfortunately the only solution I found was to downgrade Detox to v17.

@d4vidi do you think this issue will be fixed in the near future?
At the moment we have the following two options when it comes to using Detox and TrustKit SSL pinning:

Downgrade to v17 and keep using TrustKit swizzling
Refactor our app's SSL pinning strategy to not use sizzling (At the moment RN does not expose an API to accept a custom Network interface on iOS, that is the reason why we need to use swizzling)

Hey I've added this to the backlog, I hope we could handle it soon 🙏🏻

Fantastic @d4vidi. I will buy you a beer if you manage to fix it for us.

LOL, I highly appreciate the offer, but if anything, @alon-ha would be address for this. In any case, it's not quite needed! Wix takes good care of us in that sense 🍻

In the meantime, as a workaround, we are disabling SSL pinning when Detox is running. We feel that disabling SSL pinning will not drastically affect our test coverage and the quality of the product we are shipping. @ericschaal this might also be an option for you.
Here is an example of how we are disabling it in AppDelegate.m:
BOOL IS_DETOX = [[[NSProcessInfo processInfo] arguments] containsObject: @"-detoxServer"];
 if (IS_DETOX == NO) {
  /// SSL Pinning Init Code
 }

Thank you @walterholohan that's a great alternative.

Having this issue during first setup while using Expo RN, disabled kTSKSwizzleNetworkDelegates in my infoPlist key in app.json but still not getting anywhere.

it's still relevant

@alon-ha any updates here, yet?

In TrustKit doc they specifically mention: "Apps where method swizzling of the connection delegates is already performed by another module or library (such as Analytics SDKs)"
DetoxSync (The mechanism for tracking app status in Detox) swizzling both NSURLSession and NSURLConnection.
I already check the swizzling in DetoxSync and it's done correctly. I still need to validate and go over their code, But I'm afraid I can't do anything about it and they are doing swizzling the wrong way which cause other libraries swizzling to not work properly.
Will update after I go fully over their code

I created a DetoxTemplate project that you can fork and add an example test which reproduce your issue. It will be great if someone can do so and add TrustKit / the minimal test which cause this issue.
Then I will be able to solve it by cloning and debug locally.
@deecewan @walterholohan

keep open

Based on @walterholohan solution I use the following code in AppDelegate.m. This seems to work.
  BOOL IS_DETOX = [[[NSProcessInfo processInfo] arguments] containsObject: @"-detoxServer"];
  NSDictionary *trustKitConfig =
  @{
    // Swizzling because we can't access the NSURLSession instance used in React Native's fetch method
    // For Detox we need to turn this off
    kTSKSwizzleNetworkDelegates: @(!IS_DETOX),
    kTSKPinnedDomains: @{
    ...
    }};
    [TrustKit initSharedInstanceWithConfiguration:trustKitConfig];

I've disabled both TrustKit and Flipper, updated detox to the latest version and app still hangs after terminating and launching with the same instance, or by reloading react native.
Detox: 18.23.1 React Native: 0.64.2 Node: 16.9.1 Device: iPhone 12 iOS 14.5 Xcode: 13 iOS: 14.5 macOS: 11.6

React Native minimum version should be 0.68.x  https://github.com/wix/Detox


Seeing IOException in Octavi Joystick class

Describe the bug
When I connect and disconnect USB devices, I would see this error message (see screenshot)
Steps To Reproduce
Steps to reproduce the behavior:

Connect Octavi
Start MobiFlight
Disconnect & connect Arduino
See error

Expected behavior
Nothing related to Octavi should happen.
Actual behavior
The exception is thrown.
Details

MobiFlight Version: 10.0

Additional context

I have not had this issue anymore

This happens when you disconnect the Octavi while MobiFlight is running...


Added warning if HotModuleReplacementPlugin is already registered

[x] This is a bugfix
[ ] This is a new feature
[ ] This is a code refactor
[ ] This is a test update
[ ] This is a typo fix
[ ] This is a metadata update

For Bugs and Features; did you add new tests?
Not sure how to test this change. See aditional info
Motivation / Use-Case
Fixes a "Maximum call stack exceeded" error when HotModuleReplacementPlugin is included manually and the autoconfigure option is used.
For more context see:
https://github.com/webpack-contrib/webpack-serve/issues/149
https://www.youtube.com/watch?v=JGXAvgVHC5A
Breaking Changes
Not a breaking change
Additional Info
This pull request is a bit incomplete because I'm not sure how to proceed. I think it'd be great if we could log both to the terminal and to the browser but I'm not sure how logging works within the webpack ecosystem. Additionally it is unclear to me how to test this change, I'm assuming the best way to test this is to check if the warning is logged when someone registers the HotModuleReplacementPlugin manually but because of the previous point I don't really know how to log and then test whether this log happened.
Help and suggestions are very welcome :heart:

Thanks very much for your effort on this one. But this took a little bit more of a different direction "to make right." You had the idea correct though - users need a heads up. We're going to close this in favor of #66. But please feel free to share any thoughts/improvements on that PR.


New version: blacktop.ipswd 3.1.375

[ ] Have you signed the Contributor License Agreement?
[ ] Have you checked that there aren't other open pull requests for the same manifest update/change?
[ ] This PR only modifies one (1) manifest
[ ] Have you validated your manifest locally with winget validate --manifest <path>?
[ ] Have you tested your manifest locally with winget install --manifest <path>?
[ ] Does your manifest conform to the 1.4 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Automated with GoReleaser
Microsoft Reviewers: codeflow:open?pullrequest=https://github.com/microsoft/winget-pkgs/pull/114264&drop=dogfoodAlpha

@wingetbot run


Remove tooltip max-with

CSS max-width prevents from properly displaying tooltip content for tiny targets as tooltip size is limited to content size.

:tada: This issue has been resolved in version 2.7.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


No mention of immutability of lists is made on the List page

The problem
Although it's mentioned in another page, it's not mentioned in its own page
Suggestions
Mention it and add an example.

This should be all done, shouldn't it?


Added js array methods

issue no #11
I have added js array methods
pls check once @neerajrathore

@neerajrathore
done bro!!
pls check

@neerajrathore
pls label this as hacktoberfest-accepted


feat: trigger circle ci

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


[Feature] Action to copy branch name

I think I would find it useful to have an action to copy the branch name, because I often want to do that in order to switch back to the branch from the command line later on

Closing as duplicate of https://github.com/microsoft/vscode/issues/148069


Add support for 'diesel' carType and attributes 'adBlueRange' / 'dieselRange'

Hi Till,
this is an awesome project you have created here!
I was looking into getting rid of the custom_component in Home Assistant using the old WeConnect API, and I found your implementation working via MQTT.
I have a Passat Alltrack MY2021 which also has always-on connectivity and works with the WeConnect ID App.
As this is a diesel car, VWsFriend does not yet have support for it:
WARNING:addressable:/vehicles/WVWZZZxxx/domains/fuelStatus/rangeStatus/carType: An unsupported carType: diesel was provided, known values are [electric, hybrid, gasoline, petrol, cng, lpg, invalid, unknown car type] please report this as a bug
WARNING:addressable:/vehicles/WVWZZZxxx/domains/fuelStatus/rangeStatus/primaryEngine/type: An unsupported type: diesel was provided, known values are [gasoline, electric, petrol, cng, lpg, invalid, unknown engine type] please report this as a bug
WARNING:generic_status:/vehicles/WVWZZZxxx/domains/measurements/rangeStatus: Unknown attribute adBlueRange with value 2800
WARNING:generic_status:/vehicles/WVWZZZxxx/domains/measurements/rangeStatus: Unknown attribute dieselRange with value 320
INFO:vehicle:Could not update status picture as birdview image could not be retrieved
INFO:_internal:<IP_ADDRESS> - - [01/Aug/2022 08:47:48] "GET / HTTP/1.1" 302 -
INFO:_internal:<IP_ADDRESS> - - [01/Aug/2022 08:47:48] "GET /status/vehicles HTTP/1.1" 302 -
INFO:_internal:<IP_ADDRESS> - - [01/Aug/2022 08:47:48] "GET /login?next=%2Fstatus%2Fvehicles HTTP/1.1" 200 -
INFO:_internal:<IP_ADDRESS> - - [01/Aug/2022 08:47:48] "GET /static/style.css HTTP/1.1" 200 -
INFO:_internal:<IP_ADDRESS> - - [01/Aug/2022 08:47:52] "POST /login?next=%2Fstatus%2Fvehicles HTTP/1.1" 302 -
INFO:_internal:<IP_ADDRESS> - - [01/Aug/2022 08:47:52] "GET /status/vehicles HTTP/1.1" 200 -
INFO:_internal:<IP_ADDRESS> - - [01/Aug/2022 08:47:52] "GET /static/style.css HTTP/1.1" 200 -
INFO:_internal:<IP_ADDRESS> - - [01/Aug/2022 08:47:52] "GET /static/icons/settings.png HTTP/1.1" 200 -
INFO:_internal:<IP_ADDRESS> - - [01/Aug/2022 08:47:52] "GET /status/vehicles/WVWZZZxxx-car.png HTTP/1.1" 404 -
INFO:_internal:<IP_ADDRESS> - - [01/Aug/2022 08:47:55] "GET /status/vehicle/WVWZZZxxx/ HTTP/1.1" 200 -
INFO:_internal:<IP_ADDRESS> - - [01/Aug/2022 08:47:55] "GET /static/style.css HTTP/1.1" 200 -
INFO:_internal:<IP_ADDRESS> - - [01/Aug/2022 08:47:55] "GET /status/vehicles/WVWZZZxxx-status_or_car-badge.png HTTP/1.1" 404 -
INFO:_internal:<IP_ADDRESS> - - [01/Aug/2022 08:47:55] "GET /status/vehicles/WVWZZZxxx-car.png?fallback=icons%2Fpin.png HTTP/1.1" 302 -
INFO:_internal:<IP_ADDRESS> - - [01/Aug/2022 08:47:55] "GET /static/icons/pin.png HTTP/1.1" 200 -

Would you be able to add this as well?

sure, will be added with the next release!

Support is added in 0.20.1 happy to hear if it works.

It is working fine now and showing all data, thanks!


Place Object or Text always in front of Camera

Hi all,
is it possible to place an object or text always in front of the camera? So when I move my device, the object/text would always be in sight.
thanks!

This is now supported in ViroReact 2.8.0 via the ViroCamera component.

Hi @AntoniaBe,
Yep both are possible. To place a text or any object relative to  the camera just do the following for an AR Scene:
<ViroARCamera>
            <ViroText position={[0, 0, -6]} text={"Menu Text"}
                    width={2} height={2} />
 </ViroARCamera>

For VR, simply useViroCamera. You an put as many children as you want under the camera. This will position the objects relative to the camera at all times.
To position objects in world space simply put them outside of the camera tag as you would usually.

hi @VikAdvani,
thanks for the example! I used ViroCamera before, but now it makes sense.
But when I use the example you provided, I get the following error screen:

When I remove the child, I don't get an error screen.

Hi @VikAdvani ,
thanks for the fast reply! I did update to 2.8 and I'm not using the testbed app, I built it on my android device. I tried to remove the node_modules folder and run npm install for the second time, but I still get the error above.

Hi @AntoniaBe,
I was able to repro the issue. We just launched Viro React 2.8.1 with a fix. Try upgrading to the latest. That should work. If it doesn't let me know!

Hi @VikAdvani ,
thanks for the update, it works perfectly now! :)


attempt at allowing raw defines for Stylus

grunt fix:
https://github.com/gruntjs/grunt-contrib-stylus/issues/100
original reason this was added:
https://github.com/stylus/stylus/issues/1286

Could you add a test case for this por favor? :pray:

Sorry for the delay @jenius never used mocha before, test added!

Perfect, looks great! Hope it was a smooth experience for the first time :grinning:

Thanks! it was, I'm a mocha fan now, any potential ETA on a release? I have an inception-type issue of modules breaking from this :)

Just released :grinning:

:-D


Check user quota before uploading files to iRods userZone

The goal is to validate a user's quota before allowing them to upload to the iRods userZone.
I'm not confident the best approach here. It might look like a check for file headers before the file upload is initiated
This is a key component for Quota enforcement

Chris helped me brainstorm this and one option is to have Hydroshare execute (something like how we create userZone account) an iRule that prevents iput in the userZome, but still allows all other functionality.

Discussed today and if nuanced access in userZone is not easily achievable, then we will opt instead to notify help/admin when a user has reached quota but continues to upload to the userzone.

as part of https://github.com/hydroshare/hydroshare/issues/5228, PR: https://github.com/hydroshare/hydroshare/pull/5331 added notifications to support in the case that uploads continue even after a user exceeds their quota


Pass payload data to query params for GET requests

Added tests. Note that I had to move the tests into a beforeEach so I can assert against the calls otherwise I get all them mock calls in the test.
Adds about 110 bytes, not sure if it is possible to reduce further.

Added tests. Note that I had to move the tests into a beforeEach so I can assert against the calls otherwise I get all them mock calls in the test.
Adds about 110 bytes, not sure if it is possible to reduce further.

Once it's merged, and we have test coverage, we can play further for byte-shaving :)

@kwhitley I added tests for the changes, did you see something missing?


Create serverless architecture design blog post

Description
Checklist:

[x] I have reviewed the style guide.
[x] If blogging, I have reviewed the blogging guide.
[x] I have manually confirmed that all new links work.
[x] I added aliases (i.e., redirects) for all filename changes.

@AdoraNwodo At a high-level, we need:

More content like what is in the "Serverless Function Design" section (best practices, recommendations, considerations for various approaches, etc.)
Less tutorial content

Let's discuss further.

Oh, one other request: please take a look at existing content and see where you can possibly work in some links to that earlier content. Thanks!

Closing this PR without merging per discussion with @aaronkao & @interurban (will move content to a "What Is..." SEO page instead


Add info logging if no loadbalancers are found

When working on #111 I didn't get the expected load balancer metrics.
# HELP kos_loadbalancer_admin_state_up Load balancer admin state up
# TYPE kos_loadbalancer_admin_state_up gauge
# HELP kos_loadbalancer_provisioning_status Load balancer status
# TYPE kos_loadbalancer_provisioning_status gauge

After some investigation I noticed that the test project didn't actually have any load balancers in it and therefore no metrics where published. By adding this info log I hope that others might find this mistake faster than I did :sweat_smile:

Thank you very much for the pull request.

To merge this Pull Request we require a signed CLA.
Is this something that you could do? That would be great. Thanks a lot and sorry for the process.

Please sign the Mercedes-Benz Tech Innovation CLA "2022-04-25_MB_FOSS_CLA_MBTI.pdf" and send a scan of the CLA to<EMAIL_ADDRESS>

No problem! I will do it immediately.

@seanschneeweiss I have mailed a signed copy now.

@seanschneeweiss I have mailed a signed copy now.

@oscr the signed CLA has been arrived! We can merge the PR now 🙂

Awesome! Thanks @tobiasgiese and @seanschneeweiss! :pray:


PP-6676 Set node version for concourse build packs

The highest version of 12.X node that pass build pack supports is 12.16.3 so
set the node engine version to use this or higher. This setting is only
used by PaaS buildpack at present since Jenkins Ci will reference .nvmrc
and the app is deployed to current infra in a container with node
version set via the docker image base.
WHAT
Current paas error
**ERROR** Unable to install node: no match found for ^12.18.1 in [10.19.0 10.20.1 12.16.2 12.16.3 13.12.0 13.14.0]

concourse ci is failing but since jenkins has passed and this is needed to deploy on concourse I'm going to merge.


Dataservice number validator sample : missing required libraries from class-path

Description:
missing required libraries (org.wso2.carbon.dataservices.core*, etc) from class-path

Input validators are supported with the new DSS editor.


Docker base image with python venv rust d4tools

This PR adds | fixes:

Create a base image to be used by apps requiring python and d4tools

How to test:

Build the image
Run the image with the command d4tools

Expected outcome:

[x] Tests should pass

Review:

[x] Tests executed by CR

This version is a:

[ ] MAJOR - when you make incompatible API changes
[x] MINOR - when you add functionality in a backwards compatible manner
[ ] PATCH - when you make backwards compatible bug fixes or documentation/instructions

Image takes quite some time to build but it works:

Pushed in Docker Hub now:


onto option for --checkout

It would be nice to be able to use git rebase --onto for the checkout options, this will make it easier to review prs targetting staging

From nixpkgs-review point of view how is a merge different from a rebase? I do not understand the issue here yet.

With rebase --onto we can apply a staging pr to master so we don't have to rebuild the world to review a staging pr. I'm not aware of an alternative in nixpkgs-review currently

Ah. I see this makes now sense to me.

Alternatively, you could select a list of commits to cherry-pick onto master, as to not rebase all the rest of staging with you.


WebRTC support

Hi,
I have downloaded bowser code. when i run the application it gives the following prompt,
"No webRTC support..."
can somebody help me to resolve this issue. As far as i know that Bowser is the only browser that support webRTC on iOS.
thanks in advance.
regards,
Haider Ali Khan

Detecting WebRTC is something that the web app does. Some libraries only look for Chrome in the UserAgent header. Bowser uses this UA:
https://github.com/EricssonResearch/bowser/wiki/Developing-for-Bowser#useragent


ARROW-5372: [GLib] Add support for null/boolean values CSV read option

How about adding a function that adds an element such as garrow_csv_read_options_add_null_value()?

Thanks for your comment. I think I've addressed it.

How about adding a function that adds an element such as garrow_csv_read_options_add_null_value()?

Sounds good. I've added garrow_csv_read_options_add_{null,true,false}_value.

Related: we should have a discussion about what should be the default null values in case we want to make changes to the current defaults

@wesm OK. Thanks for the note. We'll do when we need to change the default values.
Arrow GLib uses the same default values as Arrow C++ in this implementation. (It'll not be changed.)


@batch breaks for eachindex(x) when x is a view

MWE:
u = randn(10,100);
x = view(u,1:5,:);
@batch for i in eachindex(x)
x[i] *= 2.0
end

Is this because eachindex returns iterators over CartesianIndex instead of Base.OneTo(...)?

Yeah, I should probably fix this in a manner similar to how @simd works.


Session serialize method implementation.

PhpHandler:serialize: Simply reverse behaviour of 'PhpHandler:unserialize' method.
P.S. Fixed Travis CI issue with PHP 5.3.

Thanks for the work! Any change you could add a unit test in for this?

Tested in f5e8a1834187745a50b9b5d88d21c8adb1d6baaf

Sorry, didn't see your request for unit-tests...


fix: return message from child()

Updated benchmarks:
Validation
✔ diary
✔ ulog
✔ roarr
✔ bunyan
✔ debug
✔ pino
✔ winston

Benchmark
  diary      x 661,459 ops/sec ±1.34% (91 runs sampled)
  ulog       x 22,853 ops/sec ±44.25% (9 runs sampled)
  roarr      x 749,119 ops/sec ±12.59% (86 runs sampled)
  bunyan     x 99,588 ops/sec ±24.33% (92 runs sampled)
  debug      x 222,025 ops/sec ±3.22% (88 runs sampled)
  pino       x 49,700 ops/sec ±2.49% (91 runs sampled)
  winston    x 12,532 ops/sec ±9.64% (80 runs sampled)

Thanks for doing this! I'm running this on a windows pc, and for some reason roarr still outputs log messages, even though its turn off via .write.
I can see that they are not logging through GH Actions, so will leave this PR here till I figure out what's going on.

Thanks for this! Those numbers look impressive! I ran this on my windows pc, and roarr is outputing log messages even though its "turned off" via .write = noop.
I can see them working in GH Actions, so could be something my end. So will leave this open till I figure out what's going on.

Validation
✔ diary
✔ roarr

Benchmark
  diary      x 658,573 ops/sec ±1.35% (90 runs sampled)
  roarr      x 1,170,401 ops/sec ±0.78% (93 runs sampled)

Latest numbers. :-)
Regarding the output to console.log, looks like you have somewhere locally defined global.ROARR.write method.

WOW, now that is impressive! So good, amazing what difference Date.now had.


Fix CI: Wrong directory and cleaning up file.

Removing check for features that doesn't exist.

I cannot merge without signed commits.


AnimatableBody3D's Constant Linear/Angular velocity not doing anything

Godot version
4.1.2, 4.2dev6
System information
Godot v4.2.dev6 - Windows 10.0.22621 - Vulkan (Forward+) - dedicated NVIDIA GeForce RTX 3080 (NVIDIA; <IP_ADDRESS>42) - 13th Gen Intel(R) Core(TM) i5-13600KF (20 Threads)
Issue description
Hello !
AnimatableBody3D and StaticBody3D's constant angular velocity and constant angular velocity just don't seem to work.
Their description is a bit blurry too : The body's constant angular velocity. This does not rotate the body, but affects touching bodies, as if it were rotating.
Why would you want the body not rotating, but affecting other physics bodies as if it were rotating ?
But in fact, it seems the body is not rotating and not affecting anything at all when you put a value in constant angular velocity or in constant angular velocity as you'll see in the joined project.
Maybe I'm missing something... Those parameters would be rather useful id they did work.
Steps to reproduce
Run the project : the AnimatableBody3D should be rotating and moving (or at least affecting other bodies as if it were).
You can put it's animate parameter to true to see it rotating manually in it's physics process and affecting other bodies.
Minimal reproduction project
AnimatableBodyConstantVelocity.zip

This is indeed how constant linear/angular velocity is supposed to work on StaticBody3D/AnimatableBody3D. They won't move/rotate on their own. If you need that, use AnimatableBody3D and move/rotate them using an AnimationPlayer or script.

Thanks for you answer, I can see how this can be useful for some use cases.
But, in the joined project, the rigid body 3D placed on the animatableBody3D isn't affected by the constant linear/angular velocity of the animatable. This still does not seem normal.

Hi! The original setup consist in a rotating will that instantly launch the object. As such, is not possible to see it working. If you delete the code that rotates the body and set linear velocity it works as expected:
https://github.com/godotengine/godot/assets/64601424/bde89f3a-22d5-4e10-9574-26fa78b667f2

Oh, ok, thanks. I just didn't put enough linear velocity to see it working while disabling the manual animation..
There is still some mysteries around it :

it seem that only the cylinder collision shape under the animatablebody shape is considered by the constant linear/angular velocity, the box shape of the white box mesh is ignored  (no matter the order bewteen the shape nodes)
angular velocity on x and z axis seems to have a rather weird behavior :

https://github.com/godotengine/godot/assets/15822164/f4790fd8-3732-4036-872e-c3f6c106e6e1


Assign OID arcs for data media OIDs

Feature Branch
Current feature branch for this issue: not created yet.
Progress

[ ] Assign OID arcs:

[ ] OID arc for SCSI WWNs/WWIDs.
[ ] OID arc for MMC CIDs.
[ ] OID arc for USB VID/PID/SERRNO.
[ ] OID arc for LTO-CM HPE UCI.

[ ] Define usage of OID arcs, with examples.
[ ] Record assigned OID arcs and their usage in a public OID repository (https://oid-info.com)

Background
To identify storage media within a catalogue, there needs to be a way to uniquely identify a physical drive/tape, but existing identifiers have issues:

Serial numbers could work, but they are not globally unique (multiple manufacturers exist).
World Wide Names (WWNs) could work, but only SCSI devices (e.g. SATA, SAS) will have them and they might not be available when the device is connected via USB.
For USB flash drives, a tuple of (Vendor ID, Product ID, Serial Number) could work, but there is the possibility of two devices having exactly the same values.
"dev" URNs could work (urn:dev:...), but I can only find a way to convert WWNs/WWIDs to dev URNs.

Ideally, dev URNs as defined in RFC 9039 would be used, and everything could be uniquely identified by URN. Unfortunately, the only way that would work would be if every storage device manufacturer defined how to convert their identifiers (e.g. serial number) into a dev URN, possibly per Section 4.4 (Organization Serial Numbers - "urn:os:") or Section 4.5 (Organization Product and Serial Numbers - "urn:ops") of RFC 9039.
Requesting a Private Enterprise Number (PEN) from the IANA so I can create device URNs using my own PEN is an option, but it is not an ideal method.
As I don't want to deal with different URN namespaces for the moment, I have decided to go with deterministic OID arc generation (similar to OIDs created from UUIDs) for data media identifiers. Unfortunately, the IEEE-RA were supposed to be creating a method for turning WWNs/WWIDs into OIDs, but they don't appear to have done so yet.
I could use one of the organisation identifiers from wikidata to identify a manufacturer, but that would require (a) a wikidata entry existing for all manufacturers, (b) an organisation identifier of the same type available for every manufacturer on wikidata, and (c) a lookup method to convert a hardware identifier I can access locally into a manufacturer identifier via the Web.
I have thus decided to go with OIDs, with different storage media types/interfaces/organisations using different OID arcs that define how to generate that type of OID.
Placeholder OID Arc Names
I have decided on the following placeholder names for the OID arcs:

{iso(1) member-body(2) gb(826) national(0) eng-ltd(1) john-cook(11484356) john-cook(1) infosec(0) storage-media ieee-wwn}

1.2.8<IP_ADDRESS>84356.1.0.a.b
iso.member-body.gb.national.eng-ltd.john-cook.john-cook.infosec.storage-media.ieee-wwn

{iso(1) member-body(2) gb(826) national(0) eng-ltd(1) john-cook(11484356) john-cook(1) infosec(0) storage-media jedec-mmc-cid}

1.2.8<IP_ADDRESS>84356.1.0.a.c
iso.member-body.gb.national.eng-ltd.john-cook.john-cook.infosec.storage-media.jedec-mmc-cid

{iso(1) member-body(2) gb(826) national(0) eng-ltd(1) john-cook(11484356) john-cook(1) infosec(0) storage-media usb-vid-pid-serno}

1.2.8<IP_ADDRESS>84356.1.0.a.d
iso.member-body.gb.national.eng-ltd.john-cook.john-cook.infosec.storage-media.usb-vid-pid-serno

{iso(1) member-body(2) gb(826) national(0) eng-ltd(1) john-cook(11484356) john-cook(1) infosec(0) storage-media lto-cm-uci}

1.2.8<IP_ADDRESS>84356.1.0.a.e
iso.member-body.gb.national.eng-ltd.john-cook.john-cook.infosec.storage-media.lto-cm-uci

OID arc storage-media.ieee-wwn
Description:
Information:

OID arc storage-media.jedec-mmc.cid
Description:
Information:

OID arc storage-media.usb-vid-pid.serno
Description:
Information:

OID arc storage-media.lto-cm-uci
Description:
Information:


HIE doesn't find cabal

I've set up hie using all-hies on a NixOS system. Opening a Haskell file and explicitly invoking first direnv-mode and then lsp results in an error in *hie::stderr* saying it cannot find Cabal == <IP_ADDRESS>.
Opening a terminal, changing to the directory and executing cabal --version, however, gives:
cabal-install version <IP_ADDRESS>

I read about the direnv and lsp race condition, which is why I explicitly enabled direnv and then lsp, but to no avail.
How can I debug this further?

is this really a hie bug?
Can you try to execute hie --debug in the root of your project and if this fails, link some logs?
If it succeeds, you can try to pass a filepath like hie --debug src/ to attempt load your project into hie and report the logs.
If all that works, the problem is not with hie itself.

Alright, so this does not succeed. Find attached the log output of hie --debug:
debug.log
Note, again, that cabal --version does succeed, as does ghc --version (which outputs 8.6.5).

I see!
Did you try to run cabal update, btw?
However, this looks like a bug in cabal-helper.
Would you mind trying whether creating a file hie.yaml with the contents
cradle:
  cabal:

and check if that works?

Thanks @fendor! That did the trick.
I don't mind having hie.yaml around, shall I close the issue or is it worth investigating this further?

It looks like a bug of cabal-helper, but since this is issue actually persists, I would prefer to have it open so that it documents the process.


Exit viewport only called when element passes out the bottom of the viewport?

Hi, this is a great library. I'm not sure if this is expected behaviour, but if i have an element that scrolls into view, the enter event is fired as expected. If i keep scrolling so that the element disappears out the top of the viewport, the exit event is not fired, its only fired when i scroll back up past the element and it disappears out the bottom of the viewport. Is this as intended? Is there a way to make it detect whether it has exited either the top and bottom of the viewport so I can tell if it is currently in view right now or not?

this is the intended effect, basically direction is included by default. if entering is defined as when it scrolls into view (as the user scrolls down), exiting is when it reverses and scrolls out of view (as the user scrolls up).

I had hoped that the library would provide the functionality described by alexr8 above. In my application, I use a D3 graph in which I highlight the nodes that a user currently sees in the viewport. Because the events only ever fire in one direction, my graph nodes remain highlighted.


Cannot resolve Lazy<IEmptySubService[]>

When registering both the CollectionResolver and the Lazy resolver, trying to resolve Lazy<IEmptySubService[]> works, but when accessing the Lazy.Value it throws an exception
Failed 1 tests.
Castle.MicroKernel.ComponentNotFoundException : No component for supporting the service CastleArrayResolverLab.IEmptySubService[] was found
Test can be download using this url : https://skydrive.live.com/redir?resid=6C6DB85BD06DD466!172&authkey=!AExF8hHR7J3u6gc

The context of this issue is lost. The links are no longer relevant and we have no repro. Closing.


Ability to initialize parametrized constructor

In our smart contracts, there are several properties dependent on the state variables which need to be initialized through the constructor.
In one such instance, we need to check that "msg.value" is always greater than a global state variable value "Rv" during a call to the "registerEntity" function. The value of "Rv" is initialized through the constructor. Now, if we use "Rv" in the specification language of scribble the property never succeeds because "Rv" is by default 0.
So, is there any way we can initialize constructor parameters with hardcoding them inside the constructor? Maybe there could be something like VerX provides: VerX

I am not sure if I understand everything here. If you just want to check that msg.value > Rv JUST BEFORE the registerEntity function, you can do something like this:
/// #if_succeeds old(msg.value>Rv);
function registerEntity(....) {
   ...
}

Does this answer your question? Or is it something different?

Haven't heard anything on this for a while, so closing. If this is still an issue please reopen


chore(main): release 1.2.0

:robot: I have created a release beep boop
1.2.0 (2023-09-10)
Features

Force gem rebuild (e78fc31)
Support Rails 6.1 & 7.0, & Ruby 3 (16a82c4)

Miscellaneous

Added codespell ignore (e80815b)
Fixes rubocop warnings (0f9a91e)
Update gem information (24ce807)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/itsmechlark/okcomputer-checks/releases/tag/v1.2.0 :sunflower:


Dark theme

Add dark theme support

Done in https://github.com/pokatomnik/mrakopedia-api/pull/4

Incomplete support of the dark mode on some devices, reopened


modified valiladtions.py so it recognize "." and "_" as illegal char …

hi just doing what's in qwiklabs

test


Dataset

Hi, I have read your artitle "Multi-Temporal Scene Classification and Scene Change Detection with Correlation based Fusion" and it is really very enlightening. Could you please share the dataset?

Hi, @Cbanyungong,  thanks for your interest in our work. We'll upload the dataset after our manuscript is accepted since it's still under review.


cli tools not found.

File "/opt/anaconda3/envs/pymemgpt/lib/python3.11/site-packages/memgpt/cli/cli.py", line 585, in run
memgpt_agent = Agent(agent_state=agent_state, interface=interface(),             tools=tools)
UnboundLocalError: cannot access local variable 'tools' where it is not associated with a value

add code
python         tools = []         for tool_name in agent_state.tools:             tool = ms.get_tool(tool_name, agent_state.user_id)             if tool is None:                 typer.secho(f"Couldn't find tool {tool_name} in database, please run memgpt add tool", fg=typer.colors.RED)             tools.append(tool)

How to merge into the main branch.


As Paas-ops, I want to host sandbox service in CF instead of bosh

Benefits:

java buildpack available
market place

Drawbacks:

TODO

Inspiration: https://github.com/logsearch/logsearch-for-cloudfoundry/blob/master/jobs/push-kibana/templates/bin/run

As a paas-ops, i prefer deploying sandbox with a bosh release. The current bosh release runs the sandbox-ui and sandbox-service as 2 bosh jobs. Could consider using bosh errands to push the jars as cf apps inside cloudfoundry.


Flutter 2.2.0 , Dart 2.13.0

I got this error when I upgrade my flutter to 2.2.0, but when I run this package in 2.0.4 its running without error.

this is my flutter doctor -v
[√] Flutter (Channel stable, 2.2.0, on Microsoft Windows [Version 10.0.19042.985], locale en-PH)
    • Flutter version 2.2.0 at D:\flutter
    • Framework revision b22742018b (13 days ago), 2021-05-14 19:12:57 -0700
    • Engine revision a9d88a4d18
    • Dart version 2.13.0

[√] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at D:\Android
    • Platform android-30, build-tools 30.0.3
    • ANDROID_HOME = D:\Android
    • ANDROID_SDK_ROOT = D:\Android\cmdline-tools\tools
    • Java binary at: D:\Android\openjdk\bin\java
    • Java version OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_202-b08)
    • All Android licenses accepted.

Hi @micazi ,
I just add this line and save it and it works fine now.

Yes, This problem was already fixed in the latest commit.
Thank you!


createShellLinkHelper CoTaskMemFree on stack variables

In createShellLinkHelper() exePath and slPath are stack variables, yet CoTaskMemFree() is being called on both. Isn't this incorrect?
I ask because I've received a crash report (intermittent) in initialize() -> createShellHelper() line 373.

Here's the screenshot:

I'm about 99% sure this code is incorrect (since CoTaskMemFree "Frees a block of task memory previously allocated through a call to the CoTaskMemAlloc or CoTaskMemRealloc function.") but just want to make sure I'm not missing something.

Fixed in #7.


chore: setup o200k_base tokenizer

This PR integrates the new tokenizer for gpt-4o o200k_base.
Encoding file:
https://openaipublic.blob.core.windows.net/encodings/o200k_base.tiktoken 214
Closes #42

Any idea when this will merge?

@niieani @caugner Sry I am bumping this by tagging you.
We're trying to move to GPT-4o but the token calculations are coming out to be wrong since the base is different for GPT-4 Turbo & GPT-4o. It is imperative we have this PR merged as we are using this package in production. Until this PR gets merged, we are blocked.

@niieani Thanks for merging. Seems like there is a formatting issue with the code blocking it from being published to NPM?
Possible to check on your end and make these fixes?


Make package noarch python

Closes: https://github.com/conda-forge/pygpcca-feedstock/issues/14
Closes: https://github.com/conda-forge/conda-forge-pinning-feedstock/pull/4094
Checklist

[ ] Used a personal fork of the feedstock to propose changes
[ ] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

It seems that the dependencies like:
slepc4py

are not build for windows. However, one peculiarity about conda(-forge) is that noarch is built with linux, and then used whereever it can find its dependencies.
I'm going to make a PR to show my suggestion

Thanks a lot @hmaarrfk ! @msmdev can you merge this please?

Thank you very much @hmaarrfk and @michalk8 ! :D


The website loads very slowly

The event images are too big and need to be resized

yep, full images are used for the list view, I'll make some thumbs / optimise the big ones, good issue to check how hugo works

I haven't optimized the event images yet because has I said in the PR I'm going to replace them, I intend to optimize the images once it's done. I did this quickly and just used the images I made for meetup, but I need blank images and will add the text on them trough html. I will do it tomorrow probably.

ok, I already made the changes to use thumbnails if you are interested in a pr for that

Ok great @gorhgorh, go ahead.
I will just have to change the images then :)

@cdeleeuwe can you help to make the resize auto instead of having to manually resize images?
I prefer to rely on hugo for this and profit that hugo knows the image size to have a fixed-height div while the image is still loading

Yes @moul I know we should do this auto and it is what I was planning to do I just believed it is was @gorhgorh was doing...

@moul , yes sure, I can do this :). Will make a PR in a bit.

looks good, thanks!


setIamPolicy for Cloud Functions

Hi Team,
I tried to set IAM policy bindings (invoker etc.) for gcp-types/cloudfunctions-v1:projects.locations.functions resources. However, DM complains with No method found to update access control on resource 'my-function' of type 'cloudfunctions-v1'.
Looking at the type provider, it indeed doesn't seem to include setIamPolicy method.
I then defined my own my-project/cloudfunctions-v1:projects.locations.functions custom type provider, and in that case setIamPolicy method works. However, I'm then unable to update my functions resource, for an unrelated reason (i.e. DM can't find the "patch" method because the path parameter is named differently in the API between "patch" and "create"... I'm not sure why that is, given that the "native" gcp-types provider works for updates).
As a result, I'm not sure how we can set IAM policy through DM. Another possible workaround is to do it inside a "utility" cloud function, and gcp-types/cloudfunctions-v1:cloudfunctions.projects.locations.functions.call that function from the template to set the policy on the "target" function. But even then we're in a bit of a catch-22, where we also need to set IAM policy on the "utility" function..
I should also mention that Terraform currently doesn't support setting IAM policy on a Function resource either, so we're a bit out of options when it comes to declarative deployment.
What would be a good way to proceed here?
Thanks a lot

Hi,
Can you clarify, how did you tried to call the setIamPolicy?
Here is the old implementation of project level setIamPolicy:
https://github.com/GoogleCloudPlatform/deploymentmanager-samples/blob/ocsig-patch-2/community/cloud-foundation/templates/iam_member/iam_member.py
It needs 3 actions:
'action': 'gcp-types/cloudresourcemanager-v1:cloudresourcemanager.projects.getIamPolicy', # Get
'action': 'gcp-types/cloudresourcemanager-v1:cloudresourcemanager.projects.setIamPolicy',  # Create/update
'action': 'gcp-types/cloudresourcemanager-v1:cloudresourcemanager.projects.setIamPolicy', # Delete

NOTE: This is not a nice or best practice implementation. We are working on removing the need of using the actions with the virtual type providers. You can see the new implementations under projects: https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/cft-dm-dev/dm/templates/iam_member/iam_member.py

I'm not sure why that is, given that the "native" gcp-types provider works for updates

The gcp-types are based on the discovery doc, the same way as you created the type provider. However in some cases when the underlying API is not 100% aligned to the CRUD structure DM expects there are overwrites defined. Here is some info about advanced type provider options: https://cloud.google.com/deployment-manager/docs/configuration/type-providers/advanced-configuration-options
Let me know if this helped, I do a deeper look what is the status of the virtual endpoint for function IAM binding.

I looked up and the virtual.*.iamMemberBinding endpoint implementation is currently under internal review. I am reaching out the team to push this through fast. Hopefully it can be live within a few weeks.

Thanks @ocsig, does that endpoint address resource-based IAM policies?
To clarify, instead of setting a project-wide IAM policy I wanted to grant a list of members access to invoke specific GCFs. Normally (for other types of resources, like buckets), this is done through accessControl key, which in turn calls setIamPolicy method on the resource. But in case of projects.locations.functions resource from gcp-types, that method doesn’t appear to be exposed yet in the DM type definitions (even though it’s present on the API).
Could you perhaps update the gcp-types provider with this method? I defined my own provider as an exact copy of gcp-types one, plus setIamPolicy input mapping, and that enabled accessControl in DM. But as I mentioned, the update/patch method then stops working, which appears to be due to some internal override in gcp-types that’s not exposed through DM public API. I believe this is due to the requirement by DM to have exactly the same path parameter names for create/update methods, which is not the case for GCF API. I stumbled on the same issue trying to configure a provider for Cloud Run - everything works (incl. setIamPolicy), except for updates.
With that said, I’ve now converted this stack to Terraform, which has just added IAM bindings for GCFs and also offers nice-to-haves like ability to easily upload source ZIPs to GCS for GCF deployment. I think we’ll go with that stack for now.

Custom type:
In my previous comment I quoted the methodMap which you need to add to your custom type provider, that solves the update/patch problem.
IAM:
I did not suggested to use project wide IAM, but to use the same action based implementation like it was before in https://github.com/GoogleCloudPlatform/deploymentmanager-samples/blob/ocsig-patch-2/community/cloud-foundation/templates/iam_member/iam_member.py
This is an alternative option to the custom type provider for the short time, while you are waiting for the virtual.*.iamMemberBinding rollout.
As I mentioned, virtual.*.iamMemberBinding is in the pipeline, which will include resources like CloudFunctions.
Upload:
Please take a look at our latest implementation example, it is supporting file upload for months:
https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/cft-dm-dev/dm/templates/cloud_function/examples/cloud_function_upload.yaml
Full template:
https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/tree/cft-dm-dev/dm/templates/cloud_function

In my previous comment I quoted the methodMap which you need to add to your custom type provider, that solves the update/patch problem.

Thanks @ocsig - apologies that I missed that. I'll try to see if that solves the problem.

Please take a look at our latest implementation example, it is supporting file upload for months

Yep, was aware of that - however, it's a bit more cumbersome to do it this way (i.e. through Cloud Build) than to simply use a google_storage_bucket_object in TF.
A bit OT here, but TF also offers other niceties like being able to call Berglas executable locally to grant GCF access to secrets. Overall it appears to fit our current use case better atm (but we do have another stack that's working well in DM and we don't see a reason to switch..)

As a follow-up on methodMap - is there any official documentation on the use of that parameter? I could not find it in the advanced guide.

@dinvlad: I may started the explanation from the wrong end. There is a large codebase ( for DM and for TF) called Cloud Foundation Toolkit. The DM templates moved out recently to their own repo. It covers many of the early usecases and provides you reference implementation. It is expected you to use this as an external library in your codebase, not re-implementing it.
About CF uploads. As of today, this is a fundamental difference between DM and TF. DM runs on a GCP managed server where you can't run custom commands like gsUtil, this makes it harder to implement features like file upload. The team is currently implementing local expansion, which means you will be able to communicate with your backed services and possibly call local commands like upload files etc. Stay tuned.
The methodMap is currently missing from the public documentation.

Sounds good, thanks for the explanation! I'm looking forward for any updates. I'll go ahead and close this for now.

Note: I removed methodMap from my previous comment. That feature never reached the type-provider APIs external production state. ( It's not available publicly.)

Understood, thanks! I'll be looking forward to any official news and alphas.

Hey,
is there any udpate when (if ever) the setIamPolicy will be available for GCF?  Just run into the same problem. I can deploy my GCF via DM without problems and it works like a charm, but if I can't set the accessControl via my configuration file, its rather useless for me to use DM if it doesn't support something like this..

Hi @Abszissex
I did not update this thread, but the functionality went live a few months ago:
https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/tree/master/dm/templates/iam_member
Or you can use the virtual type directly:
gcp-types/cloudfunctions-v1:virtual.projects.locations.functions.iamMemberBinding
I realized we published tests for CloudFunctions, but no example. I will fix that soon.

Hey @ocsig ,
first of all thanks for the very fast response. I hope you maybe can help me with my specific problem. Maybe you can also use parts for it for the example?
So I have a deployment.yml file which is passed to the DM via the --config flag. This file imports a .jinja file. Everything works fine except the IAM stuff. So for testing I wanted to add allUsers the invoker role. But everytime I do the DM returns with a 404.
If it was that much time ago, shouldn't it work then? Funny thing is that the DM runs without errors when I rename gcpIamPolicy to policy even though it still doesn't add the policy to the GCF, it just doesn't error. Also the same happens when I move the accessControl section from the .jinja file to the deployment.yml file => no error, but no IAM is added.
Thanks in Advance
// configurable_functions.jinja
resources:
- type: gcp-types/cloudfunctions-v1:projects.locations.functions
  name: {{ env['deployment'] }}-function
  properties:
    parent: projects/{{ env['project'] }}/locations/{{ properties['region'] }}
    function: {{ env['deployment'] }}
    sourceArchiveUrl: gs://{{ properties['codeBucket'] }}/{{ properties['codeBucketObject'] }}
    entryPoint: {{ properties['entryPoint'] }}
    runtime: {{ properties['runtime'] }}
    availableMemoryMb: {{ properties['availableMemoryMb'] }}
    timeout: {{ properties['timeout'] }}
    httpsTrigger: {}
  accessControl:
    gcpIamPolicy:
      bindings:
      - members:
        - allUsers
        role: roles/cloudfunctions.invoker

// deployment.yml
imports:
  - path: configurable_functions.jinja
resources:
  - name: get-user
    type: configurable_functions.jinja
    properties:
      codeBucket: get-user
      codeBucketObject: WILL_BE_OVERWRITTEN_ANYWAY.zip
      region: europe-west1
      entryPoint: handler
      runtime: nodejs8
      availableMemoryMb: 256
      timeout: 60s

any news on this issue ??? it's a relly big deal

@saiaman I think the solution described by @ocsig and @Abszissex works already, IIRC

Only Works after first deploy not the first

And this is not a solution: Google have to patch their deployment manager that’s all

@saiaman The solution mentioned above works, although I'd recommend using a reference to create a dependency between the two resources.
Here's a sample (Jinja template) from our test suite for the virtual IAM member binding resource:
resources:
- type: gcp-types/cloudfunctions-v1:projects.locations.functions
  name: {{ env['deployment'] }}-my-function
  properties:
    parent: projects/{{ env['project'] }}/locations/{{ properties['region'] }}
    function: my-{{ env['deployment'] }}
    sourceArchiveUrl: gs://cloud-function-sample/function.zip
    entryPoint: handler
    runtime: nodejs8
    httpsTrigger: {}
- name: {{ env['deployment'] }}-my-function-iam
  type: gcp-types/cloudfunctions-v1:virtual.projects.locations.functions.iamMemberBinding
  properties:
    resource: $(ref.{{ env['deployment'] }}-my-function.name)
    member: serviceAccount:{{ env['project_number']<EMAIL_ADDRESS>    role: roles/cloudfunctions.viewer


Disable a memory-hungry test

It keeps falling over in Jenkins

Aah - katpull approves :) Silly me...


More than 3 iteams in bottom bar

This parameter should be optional, or at least to expect no more than 5 elements as UI/UX suggest for every application.
https://github.com/therezacuet/Motion-Tab-Bar/blob/bbb2b514b92061984b23322c733d2547d0e574c0/lib/MotionTabController.dart#L7

Change length to 4 or 5 if you want that many buttons at the bottom.

Thanks for the feedback.
I'll close this issue, it was my mistake for not seeing that part.


lv_ta: When the long text is automatically wrapped, the text before the line break exceeds the display area.

Possible error location：
src/lv_misc/lv_txt.c
lv_txt_utf8_prev()：This function fails
lv_txt_utf8_size(): 5.3 update 6.0，Modified code

Please send a code to reproduce.

parent: lv_btn *btton;
child: lv_img *img
click btton, img set src  123.png
click btton, img set src  234.png (Not the same as 123.png)
But img doesn't show 234.png

Please open a new issue for it as it's a different bug and add code teher too to reproduce it.

The same code, 5.3 no error, 6.0 appears。
1、call lv_ta_set_text();
2、lvgl call lv_draw_label();
3、lv_draw_label(); call  lv_txt_get_next_line(); The return value is increased by one than expected.
4、lv_txt_get_next_line(); call lv_txt_encoded_prev(); Unable to get the byte position of the previous character.
diff 5.3 vs 6.0 above
static uint8_t lv_txt_utf8_size(const char * str) {     if((str[0] & 0x80) == 0) return 1;     else if((str[0] & 0xE0) == 0xC0) return 2;     else if((str[0] & 0xF0) == 0xE0) return 3;     else if((str[0] & 0xF8) == 0xF0) return 4;     return 0; }
static uint8_t lv_txt_utf8_size(const char * str) {     if((str[0] & 0x80) == 0)         return 1;     else if((str[0] & 0xE0) == 0xC0)         return 2;     else if((str[0] & 0xF0) == 0xE0)         return 3;     else if((str[0] & 0xF8) == 0xF0)         return 4;     return 1; /*If the char was invalid step tell it's 1 byte long*/ }

I mean add a code which can be copy-pasted to the simulator to demonstrates the issue. Same for the other issue.

We use GitHub issues for development related discussions.
Please use the forum to ask questions.
It's possible to sign in to the forum with your GitHub account... you don't need to make a separate account.
Use the How-to template and fill out the template completely. Otherwise we will not have enough information to solve your problem, and your post(s) may not get attention.


Unable to grant permission for user aptitude

I want to access the JWT token from user aptitude.
It looks like the way to grant permission for user aptitude is not yet documented. I tried to use:
{
  "ldk": {
    "permissions": {
      "user": {},
     }
  }
}

But I see the error when accessing user.jwt()
2021-06-03T09:42:54+08:00 WRN Unable to grant unrequested permission aptitude=user loopDir="C:\\Users\\foobar\\AppData\\Roaming\\Olive Helps\\secureloops\\d37a62d0-248a-48f3-895e-a66fc9dd27c8_49239f3e-955c-4103-a355-fd39c51ef10b_1621307894_local" system=secureloops
2021-06-03T09:42:54+08:00 ERR Received error calling service access to aptitude was not requested console=error system=secureloops
2021-06-03T09:42:54+08:00 ERR error occurred: GoError: access to aptitude was not requested console=error system=secureloops
2021-06-03T09:42:54+08:00 INF loop started loopID=d37a62d0-248a-48f3-895e-a66fc9dd27c8 system=secureloops

Sorry, I found the reason. To speed up the development, I usually directly overwrite the loop.js in the installation folder. And it looks like the metadadta.json is only generated when the loop is installed, so that file wasn't updated when I restarted the loop. That's the reason why I saw the user permission not granted. If I install the loop again, it works.


html form with directives

I cannot use directives inside html parameter:
<input type="text" mask="39/19/9999" />
or
<my-directive></my-directive>

May be this can help you https://github.com/oitozero/ngSweetAlert


isArray and isString evalulation bug

I'm submitting a ...

[ x] bug report
[ ] feature request
[ ] other (Please do not submit support requests here (see above))

Current behavior:

isArray and isString have issues handling an array of strings and/or referencing scope properties. At the moment it seems that when used from ng-show or ng-if the properties are transformed into strings which breaks the expected type checking behavior.
Expected / new behavior:

isArray and isString when used from ng-show or ng-if should evaluate the expression and leave it untouched.
Minimal reproduction of the problem with instructions:

http://plnkr.co/edit/rGDKCeol363kXf8V06UB
AngularJS version: 1.x.y

1.6.5 is the code I tested, however I've noticed this behavior in 1.6.x versions. 1.6.6 breaks the syntax of my example, however I'm fairly certain that the behavior is reproducible in the latest version.
Browser: [all | Chrome XX | Firefox XX | Edge XX | IE XX | Safari XX | Mobile Chrome XX | Android X.X Web Browser | iOS XX Safari | iOS XX UIWebView | iOS XX WKWebView ]

all
Anything else:

Evaluate the object before transformations like .join() or .tostring() are used which would change the type of the object.

Scopes don't have such methods as isArray and isString. For your code to work, you could add them:
  $scope.isArray = angular.isArray;
  $scope.isString = angular.isString;

@thorn0 is right (updated plnkr).