refactor: move resolver logic inside resolvers

🧿 Current issues / What's wrong ?
Image resolver logic is inside express routes, making it hard to test
💊 Fixes / Solution
Move the logic inside resolver itself, like we already do with addressResolver
Calling the resolver with the given params should return back an array of image buffer, all the other logic should be hidden inside the resolver call, and not in express route.
🚧 Changes

Move the image resolving logic inside resolvers/index

🛠 Tests

yarn dev
Go to http://localhost:3008/avatar/0xeF8305E140ac520225DAf050e2f71d5fBcC543e7
It should return an image
Test with other image type such as space or token
It should return the correct image for the type
Visit http://localhost:3008/metrics
It should have new metrics starting by image_resolver

This still relevant?

This still relevant?

Yes

Not even sure of how this work now.
but if resolver is set to something, it should be something valid, and throw when invalid.


Disable mTLS for connections to kube-dns.kube-system

I imagine there's a better place to patch this, like in envoy or something.
See istio/istio#19968 for a write-up of the issue.  TL/DR: mTLS needs to be disabled when accessing kube-dns.kube-system so DNS resolution over TCP can work.
Fixes istio/istio#19968

Hi @taylorreece. Thanks for your PR.
I'm waiting for a istio member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.
Once the patch is verified, the new status will be reflected by the ok-to-test label.
I understand the commands that are listed here.

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@incfly seems like we shouldn't need this with auto mtls? or does that not apply when strict mode is enabled

@howardjohn good call.  I hadn't realized https://github.com/istio/installer/commit/3a1b2b9963be7fafe740592597e98f3156a500bd was added so recently.  I moved my change into the "if not .Values.global.mtls.auto" block, as it should only affect things if global.mtls.auto=false.

not needed when auto mtls is enabled(regardless of permissive or strict), but could be case auto mtls is disabled. the change now seems right to me.

@howardjohn with the moving of directories to istio/istio, should I create a new pull request for this against the other istio/istio repo?


Add a message when Broccoli isn't installed

Fixes #2
This is the fix done by @csrl as a pull request, for your consideration.
(It's well verbose on the message front, but I didn't think that hurt? But understand if it's more wordy than you think necessary :-) )

Thanks! This fell between the cracks, but I finally merged it just now. It's released in broccoli-cli 1.0.0.


[enhancement] Add missing bower.json.

Hey, maintainer(s) of kolber/audiojs!
We at VersionEye are working hard to keep up the quality of the bower's registry.
We just finished our initial analysis of the quality of the Bower.io registry:
7530 - registered packages, 224 of them doesnt exists anymore;
We analysed 7306  existing packages and  1070 of them don't have bower.json on the master branch ( that's where a Bower client pulls a data ).
Sadly, your library kolber/audiojs is one of them.
Can you spare 15 minutes to help us to make Bower better?
Just add a new file bower.json and  change attributes.
{
  "name": "kolber/audiojs",
  "version": "1.0.0",
  "main": "path/to/main.css",
  "description": "please add it",
  "license": "Eclipse",
  "ignore": [
    ".jshintrc",
    "**/*.txt"
  ],
  "dependencies": {
    "<dependency_name>": "<semantic_version>",
    "<dependency_name>": "<Local_folder>",
    "<dependency_name>": "<package>"
  },
  "devDependencies": {
    "<test-framework-name>": "<version>"
  }
}

Read more about bower.json on the official spefication and nodejs semver library has great examples of proper versioning.
NB! Please validate your bower.json with jsonlint before commiting your updates.
Thank you!
Timo,
twitter: @versioneye
email<EMAIL_ADDRESS>VersionEye - no more legacy software!

:+1:

Please see #207, I'm going to contact @kolber to get this resolved.


Facing OutOfMemoryError: Java heap space when calling create session.

PoD PI2 is configured to run with wiremock provided in master branch, when create session request is made from swagger-ui, it fails and the application runs into memory issue -  OutOfMemoryError: Java heap space.
Top output:

application.property
cat src/main/resources/application.properties
# Swagger UI
quarkus.swagger-ui.enable=true
quarkus.swagger-ui.always-include=true

# Global Server configuration
# Be aware servlet.context-path is relative to http.root-path
quarkus.http.root-path=qod/v0
quarkus.http.port=8080
quarkus.application.name=camara-qod
quarkus.log.console.format=%d{HH:mm:ss} %-5p [%c{2.}] (%t) %s%e%n
camara.notifications.base-url=http://localhost:8080/qod/v0/notifications

# Log configuration
quarkus.log.level=FINEST

# Redis config
#quarkus.redis.hosts=redis://${REDIS_CLIENTUSERNAME}:${REDIS_CLIENTPASSWORD}@${REDIS_HOST}:${REDIS_PORT}
quarkus.redis.hosts=redis://<IP_ADDRESS>:6379
quarkus.rest-client."com.camara.scef.ScefClient".url=https://localhost:8888/http://localhost:8888/apigm
quarkus.oidc-client.token-path=https://localhost:8888/oauth/v3/token

quarkus.oidc-client.grant.type=client
quarkus.oidc-client.client-id=${CLIENT_ID}
quarkus.oidc-client.credentials.secret=${CLIENT_SECRET}
# Basic Authentication
quarkus.http.auth.basic=true
quarkus.security.users.embedded.enabled=true
quarkus.security.users.embedded.plain-text=true
## OrangeDevPortal
quarkus.security.users.embedded.users.OrangeDevPortal=password
quarkus.security.users.embedded.roles.OrangeDevPortal=OrangeDevPortal
## admin
quarkus.security.users.embedded.users.admin=password
quarkus.security.users.embedded.roles.admin=admin
## sessions and qosProfiles Access Configuration
quarkus.http.auth.policy.OrangeDevPortal-policy.roles-allowed=OrangeDevPortal,admin
quarkus.http.auth.permission.role-OrangeDevPortal.paths=sessions,sessions/*,qosProfiles,qosProfiles/*
quarkus.http.auth.permission.role-OrangeDevPortal.policy=OrangeDevPortal-policy

## admin Access Configuration
quarkus.http.auth.policy.admin-policy.roles-allowed=admin
quarkus.http.auth.permission.role-admin.paths=admin/profiles,admin/profiles/*
quarkus.http.auth.permission.role-admin.policy=admin-policy

Profile config:
redis-cli GET profiles | jq
{
  "vp251iMf1TJiFQq1jpzihd9E9K40.lHI89cTyIdtumWq2VB_cCM4KmUqYvUP8TJCzXab1PvqjaS-vIWwltxHsUjUN": {
    "flowId": 0,
    "qosProfile": {
      "name": "vp251iMf1TJiFQq1jpzihd9E9K40.lHI89cTyIdtumWq2VB_cCM4KmUqYvUP8TJCzXab1PvqjaS-vIWwltxHsUjUN",
      "description": "string",
      "status": "ACTIVE",
      "targetMinUpstreamRate": {
        "value": 1024,
        "unit": "bps"
      },
      "maxUpstreamRate": {
        "value": 1024,
        "unit": "bps"
      },
      "maxUpstreamBurstRate": {
        "value": 1024,
        "unit": "bps"
      },
      "targetMinDownstreamRate": {
        "value": 1024,
        "unit": "bps"
      },
      "maxDownstreamRate": {
        "value": 1024,
        "unit": "bps"
      },
      "maxDownstreamBurstRate": {
        "value": 1024,
        "unit": "bps"
      },
      "minDuration": {
        "value": 1,
        "unit": "Days"
      },
      "maxDuration": {
        "value": 1,
        "unit": "Days"
      },
      "priority": 100,
      "packetDelayBudget": {
        "value": 1,
        "unit": "Days"
      },
      "jitter": {
        "value": 1,
        "unit": "Days"
      },
      "packetErrorLossRate": 10
    }
  }
}

Request
curl -X 'POST' \
  'http://localhost:8080/qod/v0/sessions' \
  -H 'accept: application/json' \
  -H 'X-OAPI-Application-Id: appId' \
  -H 'Content-Type: application/json' \
  -d '{
  "duration": 86400,
  "device": {
    "phoneNumber": "12345678901",
    "networkAccessIdentifier"<EMAIL_ADDRESS>    "ipv4Address": {
      "publicAddress": "<IP_ADDRESS>",
      "privateAddress": "<IP_ADDRESS>",
      "publicPort": 1234
    },
    "ipv6Address": {}
  },
  "applicationServer": {
    "ipv4Address": "<IP_ADDRESS>"
  },
  "devicePorts": {
    "ranges": [
      {
        "from": 0,
        "to": 65535
      }
    ],
    "ports": [
      1234
    ]
  },
  "applicationServerPorts": {
    "ranges": [
      {
        "from": 0,
        "to": 65535
      }
    ],
    "ports": [
      4321
    ]
  },
  "qosProfile": "vp251iMf1TJiFQq1jpzihd9E9K40.lHI89cTyIdtumWq2VB_cCM4KmUqYvUP8TJCzXab1PvqjaS-vIWwltxHsUjUN",
  "webhook": {
    "notificationUrl": "http://localhost:8080/qosChanged",
    "notificationAuthToken": "L2xvY2FsaG9zdDoxMDAxMi9Bc1NDUy9ub3RpZnk"
  }
}'

LOG
log.txt

Hi @WillusDong,
This implementation supports only device designed by ipv4Address.publicAddress and single port.
Try something like this.
{
    "duration": 86400,
    "device": {
        "ipv4Address": {
            "publicAddress": "<IP_ADDRESS>"
        }
    },
    "applicationServer": {
        "ipv4Address": "<IP_ADDRESS>"
    },
    "devicePorts": {
        "ports": [
            5022
        ]
    },
    "applicationServerPorts": {
        "ports": [
            5010
        ]
    },
    "qosProfile": "vp251iMf1TJiFQq1jpzihd9E9K40.lHI89cTyIdtumWq2VB_cCM4KmUqYvUP8TJCzXab1PvqjaS-vIWwltxHsUjUN",
    "webhook": {
          "notificationUrl": "http://localhost:8080/qosChanged",
          "notificationAuthToken": "L2xvY2FsaG9zdDoxMDAxMi9Bc1NDUy9ub3RpZnk"
    }
}

Hello @patrice-conil,
Thanks for the quick turnaround, when I tried with this payload and the same configuratioin mentioned earlier, I got this errors - 'Default' client configuration is not initialized.
Any thoughts?
log_default_client.txt

Hi @WillusDong,
I think you didn't provide values for CLIENT_ID and CLIENT_SECRET in your env and these values are used to configure oidc client.
Hope this helps

Thanks @patrice-conil,
If provided, with customized values as follows, the same error returns:
export CLIENT_ID=appId; export CLIENT_SECRET=secret; java -jar ./build/camara-qod-0.9.0-runner.jar
Request
curl -X 'POST' \
  'http://<IP_ADDRESS>:8080/qod/v0/sessions' \
  -H 'accept: application/json' \
  -H 'X-OAPI-Application-Id: appId' \
  -H 'Content-Type: application/json' \
  -d '{
    "duration": 86400,
    "device": {
        "ipv4Address": {
            "publicAddress": "<IP_ADDRESS>"
        }
    },
    "applicationServer": {
        "ipv4Address": "<IP_ADDRESS>"
    },
    "devicePorts": {
        "ports": [
            5022
        ]
    },
    "applicationServerPorts": {
        "ports": [
            5010
        ]
    },
    "qosProfile": "vp251iMf1TJiFQq1jpzihd9E9K40.lHI89cTyIdtumWq2VB_cCM4KmUqYvUP8TJCzXab1PvqjaS-vIWwltxHsUjUN",
    "webhook": {
          "notificationUrl": "http://localhost:8080/qosChanged",
          "notificationAuthToken": "L2xvY2FsaG9zdDoxMDAxMi9Bc1NDUy9ub3RpZnk"
    }
}'

LOG
log_CLIENT.txt

Hi @WillusDong,
I think your scef client config is wrong : https://localhost:8888/http://localhost:8888/apigm should be something like http://localhost:8888/apigm => default client is not initialized.

Still getting the same error with suggested change.
Would you provide complete settings that works with wiremock?
Thanks.

Hi @WillusDong,
I pushed a new version more user friendly that need no additional config to run and auto-provision redis content. Could you see if it solve your problem?

Thanks @patrice-conil
Will give it a try and keep you updated.

Sorry for the delay,
The update makes the deployment much easier, I would just need to make sure that wiremock is listening on port 8888, redis server is listening on localhost:6370, and it works fine.
Thanks.

Hi @WillusDong,
You have to download wiremock standalone jar and launch it by hand with something like
java -jar ~/Downloads/wiremock-jre8-standalone-2.35.0.jar --port 8888 --bind-address localhost -vv

from the project's wiremock folder (where __files and __mappings reside)
Enjoy


Getting <IP_ADDRESS> port 80: Connection timed out

Following the doucument I get:
curl: (7) Failed to connect to <IP_ADDRESS> port 80: Connection timed out

inside the container. az login --identity also shows the same timeout.

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

ID: f4bb823e-1c72-5777-bdd6-e89942c4f470
Version Independent ID: eb046e79-f39c-dcca-fbd4-519c0a320201
Content: Enable managed identity in container group - Azure Container Instances
Content Source: articles/container-instances/container-instances-managed-identity.md
Service: container-instances
GitHub Login: @dlepow
Microsoft Alias: danlep

Thanks for the feedback! We are currently investigating and will update you shortly.

Deleting and recreating the container group made it work again. Not sure if there was something I did to break it. Closing, thanks!

Again a problem when updating an existing container. Deleting and recreating it makes it work.

@chrmarti A per our discussion yesterday I will go ahead and close the issue.
If there are further questions regarding this, please tag me in a comment. I will reopen it and we will continue the discussion.
Thanks

@psmanhas not sure why this is closed, it happened to me too and I'd say it's a pretty serious bug...
If attaching a managed identity to an ACI isn't supported, don't allow it.
But the current situation is the worst of both worlds - we pretend it's allowed, and then it doesn't work in a way that is near impossible to debug (other than finding this thread pretty much).

@psmanhas please re-open this. It is not solved. We just got the same problem (only difference is that it's a container app instead of a container instance).

@psmanhas this issues is still present. We face the same issue with container app

Same issue on Python Web App.
I test using curl on ssh :
curl -H "Metadata: true" "http://<IP_ADDRESS>/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net"
curl: (7) Failed to connect to <IP_ADDRESS> port 80: Connection refused

enable to authenticate using Managed Service Identity, perhaps authentication method change ?

Same issue on Python Web App. I test using curl inside ssh session on Web App:
curl -H "Metadata: true" "http://<IP_ADDRESS>/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net"
curl: (7) Failed to connect to <IP_ADDRESS> port 80: Connection refused

enable to authenticate using Managed Service Identity, perhaps authentication method change ?

Apparently on Web App do not use "http://<IP_ADDRESS>/metadata/identity/oauth2/token" but Web App Env variable to call authentication provider (this is different in each Azure Region):
https://learn.microsoft.com/en-us/azure/app-service/overview-managed-identity?tabs=portal%2Chttp#rest-endpoint-reference
One thing is not very well documented, use object_id parameter is you want to use User Assign Identity
Best regards,


[Improvement]: CHANGELOG and Version Bump PreCommit Hook

Description
The v1 codebase is required to document all important changes in a CHANGELOG.md at the root of the repository and module specific CHANGELOG.md if the changes impacted the module in-question. In addition to that, the version should be bumped accordingly.
This issue is a perfect starter task for community contributions.
Origin Document
This issue was created as a starter task for community contribution, as suggested per in the following conversation
Goals

[ ] Add pre-commit logic to validate if CHANGELOGs and the version were updated accordingly before commit
[ ] Allow this to be disable locally
[ ] Configure CI to always run this validation before merge of PRs

Non-Goals

[ ] Adding CI/CD to the V1 Codebase
[ ] Automating the population of the CHANGELOG based on git-diff results

Maintainers
Creator: @derrandz

@derrandz Could you link to some examples of where the changelogs are right now for those who are new to the code base?

For anyone who comes by this issue, I recently found this diff that removed this feature (which we actually want here): https://github.com/celestiaorg/smt/pull/68/files
GitOps is an alternative tool we can use in addition / instead of a PreCommit hook.
Disclaimer: I did not do in-depth research into this.


unix: mark threadpool as uninitialized after fork()

The threadpool is marked for re-initialization here:
https://github.com/libuv/libuv/blob/87df1448a48fb64c2b9ebe37e3344f7e5b81dd88/src/threadpool.c#L182
The actual re-initialization is scheduled for uv__work_submit (called through uv_queue_work):
https://github.com/libuv/libuv/blob/87df1448a48fb64c2b9ebe37e3344f7e5b81dd88/src/threadpool.c#L193
But if uv_queue_work is never called after the fork, it will never be re-initialized. And the destructor will access the old information and probably trigger a segmentation fault:
https://github.com/libuv/libuv/blob/87df1448a48fb64c2b9ebe37e3344f7e5b81dd88/src/threadpool.c#L105
Marking the threadpool as uninitialized during reset_once will prevent this scenario.
cc @jamadden  (many thanks from my side too)

Have you actually seen a segfault? Just by inspection I don't see anything that could segfault. All of the memory remains valid in the child process.
It's possible that the abort will still trigger, though, because we probably can't join the threads that are dead.
Setting initialized to 0 after a fork results in what looks like a memory leak, though (hypothetically, I think, only something that matters to valgrind). But we probably still have that same leak now.
I think the right thing is to probably run the cleanup function from reset_once...except we probably can't do that because of joining on dead threads. So we need to factor that part out so we just free the threads array and destroy the mutex and cond.
Thoughts?

Yes, I've observed the segfault. Otherwise I wouldn't have look at it. It happens in pthread_join. Example backtrace:
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x000003e9d77638d9 in pthread_join (threadid=4302864721664, thread_return=thread_return@entry=0x0) at pthread_join.c:45
45	pthread_join.c: No such file or directory.
(gdb) bt
#0  0x000003e9d77638d9 in pthread_join (threadid=4302864721664, thread_return=thread_return@entry=0x0) at pthread_join.c:45
#1  0x0000030b6286056e in uv_thread_join (tid=<optimized out>) at src/unix/thread.c:89
#2  0x0000030b628522da in cleanup () at src/threadpool.c:114
#3  0x000003e9d7b91f0a in _dl_fini () at dl-fini.c:235
#4  0x000003e9d73ce2e0 in __run_exit_handlers (status=0, listp=0x3e9d77555d8 <__exit_funcs>, run_list_atexit=run_list_atexit@entry=true,
    run_dtors=run_dtors@entry=true) at exit.c:83
#5  0x000003e9d73ce33a in __GI_exit (status=<optimized out>) at exit.c:105
#6  0x000003e9d73b43f8 in __libc_start_main (main=0x30b6285278e <main>, argc=1, argv=0x3fd3f8122f8, init=<optimized out>, fini=<optimized out>,
    rtld_fini=<optimized out>, stack_end=0x3fd3f8122e8) at ../csu/libc-start.c:325
#7  0x0000030b6285236a in _start ()

OK. That's platform dependent then and liable to change, which makes sense. In the past, I know the abort was being triggered; even if the join operation doesn't crash, the abort will still likely be triggered.

It's not ready for merge. reset_once is probably still to simplistic. The state of the global wq QUEUE and of reused_loop->wq is dubious after a fork.
The previous state of the global wq is currently discarded inside init_threads after the fork. But this won't work, if you intend to use the same loop in the child: https://gist.github.com/fdopen/b5bfbe33dcdbee1b4028ae2fc1d979f4
uv_loop(uv_default_loop(),UV_RUN_DEFAULT) will never finish inside the child, because the queued work tasks are in an inconsistent state. They are currently not marked as canceled in the child and are not added to the loop as finished inside uv_loop_fork.

Ok, I've added three more changes

loop->active_reqs (already mentioned)

The global QUEUE wq (inside threadpool.c) is lost after fork is called (see. https://github.com/libuv/libuv/blob/9d94fd978fc3fa8b32721ce523e46262ab88e392/src/threadpool.c#L178)
If a loop is re-used after fork, old requests are still inside loop->active_reqs, but not longer inside wq. They would stay in loop->active_reqs forever and block uv_run(loop,UV_DEFAULT).
As a workaround, I just cancel all not finished work requests in the child process. That's the usual effect of fork, parallel threads are gone. What else could be done? The user cannot sort it out manually, because some requests could be in a state that is not longer cancelable.

Async

The async handles must also be brought back to a proper state.

In the parent process uv_async_send(h) is called, h->pending is set to 1 and something is written to loop->async_io_watcher.fd
fork and uv_loop_fork are called and uv__async_fork assigns a new loop->async_io_watcher.fd (https://github.com/libuv/libuv/blob/9d94fd978fc3fa8b32721ce523e46262ab88e392/src/unix/async.c#L203)
Subsequent uv_async_send(h) calls will have no effect, because h->pending is already 1. That's of course only valid for the old loop->async_io_watcher.fd, the new loop->async_io_watcher.fd would never get a message until uv_async_send is called with a handle whose pending state is zero.

Mutex

Mutex destruction is not possible. Their states are inherited, but the other threads who deal with them are gone. Calls to pthread_mutex_destroy will likely fail, because they were either locked or used through pthread_cond_wait by threads of the parent.
But mutexes are an interesting point. Global mutexes are used sometimes. If added a few lines to fs.c to ensure that uv_fs_write will work in the child. But it's so ugly.
There are also loop local mutexes: loop->wq_mutex and loop->cf_mutex (darwin only, and probably unproblematic because either unused in the parent or unused in the child). Buf if loop->wq_mutex was locked, when fork was called, the loop data structure is corrupt in the child. The thread that would normally clean it up again, is gone 😝

Not sure if any other platforms are seeing this but on z/OS the fork_threadpool_queue_work_simple test fails. The pthread_cond_init on the  pthread_cond_t variable belonging to threadpool returns an EBUSY error.
I think this is  because the parent process is still waiting on that condition while the child is trying to re-initialize it.

@jBarz You mean condition variables on z/OS are shared, i.e., visible across processes?  Should libuv set the PTHREAD_PROCESS_PRIVATE attribute explicitly?

@bnoordhuis : The documentation says that PTHREAD_PROCESS_PRIVATE is set by default. I tried setting it explicitly but that didn't work either. After some experimentation, I found a difference in the behavior of pthread_cond_init when re-initializing a condition variable that no thread is waiting on.

On Linux, it passes.
On z/OS, it fails with EBUSY.

I will investigate this further and update asap.

@fdopen It's not completely clear to me what the status of this PR is.  Do you still want to pursue this?  Is it ready for review?

I'll go ahead and assume this PR has been abandoned.  Closing, let me know if I should reopen it.


Issue with IP

Initially when I was deploying controller(<IP_ADDRESS>) and edge node(<IP_ADDRESS>), hosts were connected to public network in my work place.
Controller and Edge node were brought up successfully by running ./deploy_ne.sh script.
But due to some reason, we had  move to vpn environment and those hosts are connected to local network with static IPs. IPs are different from what it was initially used for deploying controller and edge node.
Now I entered new IPs in inventory.ini file(controller=<IP_ADDRESS>, edge node=<IP_ADDRESS>) and tried to run deploy_ne.sh script. Should I cleanup and deploy again since IPs are changed.
I have attached the error. Please help me to resolve

With the changed IPs, the connection between the master and the worker is broken. You could probably perform kubeadm reset -f on both nodes and restart the deployment.
Please make sure that the OEK machine is able to connect to the nodes over SSH password-less.

Closing this issue due to inactivity..


fix: disable confirm button if offline

Details

When the network status is offline, disable the close account button in the confirmation modal.
Fixed Issues

$ https://github.com/Expensify/App/issues/23472
PROPOSAL: https://github.com/Expensify/App/issues/23472#issuecomment-1647729967
Tests

Go to Settings
Go to Security
Go to Close account
Click on the Close account button
Disable your internet connection
Observe that the Close account button in the modal is disabled

[X] Verify that no errors appear in the JS console

Offline tests

Go to Settings
Go to Security
Go to Close account
Observe that the Close account button is disabled

QA Steps

Go to Settings
Go to Security
Go to Close account
Click on the Close account button
Disable your internet connection
Observe that the Close account button in the modal is disabled

[X] Verify that no errors appear in the JS console

PR Author Checklist

[X] I linked the correct issue in the ### Fixed Issues section above
[X] I wrote clear testing steps that cover the changes made in this PR

[X] I added steps for local testing in the Tests section
[X] I added steps for the expected offline behavior in the Offline steps section
[X] I added steps for Staging and/or Production testing in the QA steps section
[X] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[X] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[X] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[X] I included screenshots or videos for tests on all platforms
[X] I ran the tests on all platforms & verified they passed on:

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

[X] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[X] I followed proper code patterns (see Reviewing the code)

[X] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[X] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[X] I verified that comments were added to code that is not self explanatory
[X] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[X] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[X] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[X] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[X] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[X] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[X] I verified the JSDocs style guidelines (in STYLE.md) were followed

[X] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[X] I followed the guidelines as stated in the Review Guidelines
[X] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[X] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[X] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[X] I verified that if a function's arguments changed that all usages have also been updated correctly
[X] If a new component is created I verified that:

[X] A similar component doesn't exist in the codebase
[X] All props are defined accurately and each prop has a /** comment above it */
[X] The file is named correctly
[X] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[X] The only data being stored in the state is data necessary for rendering and nothing else
[X] If we are not using the full Onyx data that we loaded, I've added the proper selector in order to ensure the component only re-renders when the data it is using changes
[X] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[X] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[X] All JSX used for rendering exists in the render method
[X] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[X] If any new file was added I verified that:

[X] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[X] If a new CSS style is added I verified that:

[X] A similar style doesn't already exist
[X] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG))

[X] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[X] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[X] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[X] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[X] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[X] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

Screenshots/Videos

Web

https://github.com/Expensify/App/assets/137707942/05953642-39b2-47b1-8ef6-d31367cd8737

Mobile Web - Chrome

https://github.com/Expensify/App/assets/137707942/87ef7643-bed8-42c6-853b-97fe6b2275cd

Mobile Web - Safari

https://github.com/Expensify/App/assets/137707942/8e2365ac-0677-4261-bc41-51fe10b584ba

Desktop

https://github.com/Expensify/App/assets/137707942/fc2c296b-8bb3-4ee3-bc1b-a3cbbfcecfcf

iOS

https://github.com/Expensify/App/assets/137707942/9aeaaf81-079b-4d55-b361-42d56cbe2620

Android

https://github.com/Expensify/App/assets/137707942/fe30d6f3-d355-4323-b721-e464eb38433d

🚀 Deployed to staging by https://github.com/marcaaron in version: 1.3.49-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to staging by https://github.com/marcaaron in version: 1.3.50-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/Beamanator in version: 1.3.49-3 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/puneetlath in version: 1.3.50-3 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


Haversine distance for the metrics modules

It would be nice to have the option to choose other distances, for instance haversine, , to be used in the metrics module.

This would indeed be a nice suggestion, but for the time being, you can use https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.FunctionTransformer.html in combination with an sklearn Pipeline with KNN (or some clustering algorithm).
e.g.:
pipe = Pipeline([
	(
		'norm',
		TimeSeriesScalerMeanVariance()
	),
	(
		'transform',
		SymbolicAggregateApproximation(n_segments=16, alphabet_size_avg=10)
	),
	(
		'distance',
		FunctionTransformer(calc_distances, validate=False, pass_y=False)
	)
])

all_X = numpy.vstack((X_train, X_test))
distances = pipe.transform(all_X)

# We only need the distances to the timeseries from the training set.
# Both for the test and the training set.
X_train_dist = distances[:len(X_train), :len(X_train)]
X_test_dist = distances[len(X_train):, :len(X_train)]

knn = KNeighborsClassifier(n_neighbors=1, metric='precomputed')
knn.fit(X_train_dist, y_train)
predictions = knn.predict(X_test_dist)
print('Accuracy score on test set with KNN on SAX using MINDIST')
print(confusion_matrix(y_test, predictions))
print(accuracy_score(y_test, predictions))

I wanted this to explore the metrics module, not clustering

Well what do you want to do with the metrics module? Do you want a pairwise distance matrix? If so, distances from my code snippet will be just that.

Ok, so the goal would be to allow to define the metric you are using in order to calculate the pairwise distance matrix in which DTW looks for the optimal path.
In other words, instead of using always using Euclidean distances as in the matrix below, we could allow a configurable metric.

The traj-dist library (https://github.com/bguillouet/traj-dist) offers the possibility to use either euclidean or spherical distance for different types of similarity measures. But that's just it, it doesn't offer dtw_path and many others functions that tslearn does. Also, the DTW values with euclidean distance from traj-dist differs from the ones with tslearn, don't know why ¯_(ツ)_/¯

@Danisodu
Regarding the differences between implementations, we detail in the docs how we compute DTW.
Then, having something like dtw_path but for another inner cost metric would indeed make sense. What would you think of a function that would have the following prototype?
def dtw_path_from_inner_cost(s1, s2, inner_cost_matrix, global_constraint=None,
                             sakoe_chiba_radius=None, itakura_max_slope=None)

This would not be very difficult to implement, but I'm afraid I would not have time to do so in the near future. I could definitely help anyone on that, though.

I don't think there's the need to create a new function, just change the existing ones to have a new signature where the distance type (euclidean, haversine, or else) can be provided.
For now, I will change the tslearn code directly.

Well, in terms of library design, I think I would prefer to have a different function for this use-case so that the docs can be more concise for the general case (Euclidean) and advanced users can read through another function that meets their needs.

Ok ok. Of course it would be nice to extend this to all functions of dtw, but having it for both dtw() and dtw_path() would suffice already

@Danisodu
A fix has been implemented in #219 . It will be available in tslearn v0.4.
If you want to use it before v0.4 is out, you should first install the tslearn from @rfayat repo (who implemented the feature):
python -m pip install https://github.com/rfayat/tslearn/archive/dtw_path_inner_cost.zip

and here is an excerpt from the docs:

The wrapping can be done by passing a string indicating the metric to pass to scikit-learn pairwise_distances:
>>> dtw_path_from_metric(s1, s2, metric="sqeuclidean")
[(0, 0), (0, 1), (1, 2), (2, 3), (3, 4), (4, 5)], 1.1177581530156733


The plugin connectivity could not be built due to the issue above.

Gradle task assembleRelease failed with exit code 1
MBPalkhasbMac:into_store mac$ flutter clean
Cleaning Xcode workspace...                                         4.0s
Deleting Generated.xcconfig...                                       1ms
Deleting flutter_export_environment.sh...                            0ms
MBPalkhasbMac:into_store mac$ flutter build apk --target-platform android-arm,android-arm64,android-x64 --split-per-abi
Note: /Users/mac/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/connectivity-0.4.9/android/src/main/java/io/flutter/plugins/connectivity/ConnectivityBroadcastReceiver.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: /Users/mac/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-5.5.0/android/src/main/java/io/flutter/plugins/urllauncher/WebViewActivity.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
FAILURE: Build failed with an exception.

What went wrong:
Execution failed for task ':system_setting:verifyReleaseResources'.

A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
1 exception was raised by workers:
com.android.builder.internal.aapt.v2.Aapt2Exception: Android resource linking failed
/Users/mac/.gradle/caches/transforms-2/files-2.1/e590224ffba83860e782561c6890c8d3/core-1.1.0/res/values/values.xml:142:5-173:25: AAPT: error: resource android:attr/fontVariationSettings not found.

 /Users/mac/.gradle/caches/transforms-2/files-2.1/e590224ffba83860e782561c6890c8d3/core-1.1.0/res/values/values.xml:142:5-173:25: AAPT: error: resource android:attr/ttcIndex not found.

Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

Get more help at https://help.gradle.org

BUILD FAILED in 1m 42s
Running Gradle task 'assembleRelease'...
Running Gradle task 'assembleRelease'... Done                     103.5s
The built failed likely due to AndroidX incompatibilities in a plugin. The tool is about to try using Jetfier to solve the incompatibility.
Building plugin connectivity...
Running Gradle task 'assembleAarRelease'...
Running Gradle task 'assembleAarRelease'... Done                    1.1s
FAILURE: Build failed with an exception.

What went wrong:
A problem occurred configuring root project 'connectivity'.

SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable.

Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

Get more help at https://help.gradle.org

BUILD FAILED in 774ms
The plugin connectivity could not be built due to the issue above.

Finally I found the solution only. I had a problem issuing the SDK inside the settings file inside the gradle
First, you should go to the next track if you are facing the same problem:
Open Android Studio.
Select Open an existing Android Studio Project.
Open Gradle Script.
Now open the file "Settings"
Change the following from:
compileSdkVersion 27
to me
compileSdkVersion 30
Now just do it
Select Sync project with Gradle files from above
Now run Flutter clean
I really hope you have benefited

Hi @ahmedGibran,
Given your last message I feel safe to close this issue.
if you disagree please write in the comments and I will reopen it.
Thank you

Finally I found the solution only. I had a problem issuing the SDK inside the settings file inside the gradle
First, you should go to the next track if you are facing the same problem:
Open Android Studio.
Select Open an existing Android Studio Project.
Open Gradle Script.
Now open the file "Settings"
Change the following from:
compileSdkVersion 27
to me
compileSdkVersion 30
Now just do it
Select Sync project with Gradle files from above
Now run Flutter clean
I really hope you have benefited

please can you explain better?..where did you select Sync project with Gradle files from above?


egui_winit+egui_glow on web

Closes #1032.
This PR Aims to reduce future maintenance cost for egui_glow ,egui_web and egui_winit.

[x]  eliminate crash on web.
[x]  delete browser's context menu.
[x]  type ascii chars.
[x] open link.(webbrowser support it via web-sys.)
[ ]  IME support.
[x]  port persistence on web for egui_winit.
[ ]  clipboard
[ ] multi touch

Implementing Clipboard operation for  egui-winit on web but No event handler fired.

In implementing tasks I found too many difference between native and web in winit .
therefore if we want to access glow then face many big challenge.
but persistence in web should move to epi .

winit on wasm very lack of feature and tried to add eventlistener to egui-winit to support IME I have to add many target_arch="wasm32" not(target_arch="wasm32") code

Thanks for your effort @t18b219k - sounds like winit isn't mature enough for this yet. Perhaps we should investigate https://github.com/tauri-apps/tao some day


Update startDate and endDate at start of job or transformation

Calculate the correct date range just like with a relational database log table.
Start: last time transformation ran (correctly: errors=0) or -oo
End : now

So it looks like there is no way to update the start and end date in a transformation or job, only getters available.
So we need a new step.

Needs more testing


Can't run with Rails 6.1 / Zeitwerk

Steps to reproduce

Spin up a new rails app on version 6.1. Standard rails new is fine.
add rails_admin to Gemfile and bundle install
Attempt to spin up a server or console in production mode. rails c -e production, rails s -e production
You will see the error /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rails_admin-2.0.2/app/helpers/rails_admin/form_builder.rb:3:in class:FormBuilder': uninitialized constant NestedForm::BuilderMixin (NameError)`
If I change the autloader from :zeitwerk to :classic it works but :classic is going to be deprecated soon.
I can't seem to figure out how to resolve this issue without changing the autoloader to classic.

Full Trace
=> Booting Puma
=> Rails 6.1.0 application starting in production
=> Run `bin/rails server --help` for more startup options
Exiting
Traceback (most recent call last):
	88: from bin/rails:2:in `<main>'
	87: from bin/rails:2:in `load'
	86: from /Users/joe/Desktop/Code/rails_admin_test/bin/spring:5:in `<top (required)>'
	85: from /Users/joe/Desktop/Code/rails_admin_test/bin/spring:5:in `tap'
	84: from /Users/joe/Desktop/Code/rails_admin_test/bin/spring:8:in `block in <top (required)>'
	83: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
	82: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
	81: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/spring-2.1.1/lib/spring/binstub.rb:11:in `<top (required)>'
	80: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/spring-2.1.1/lib/spring/binstub.rb:11:in `load'
	79: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/spring-2.1.1/bin/spring:49:in `<top (required)>'
	78: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/spring-2.1.1/lib/spring/client.rb:30:in `run'
	77: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/spring-2.1.1/lib/spring/client/command.rb:7:in `call'
	76: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/spring-2.1.1/lib/spring/client/rails.rb:28:in `call'
	75: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/spring-2.1.1/lib/spring/client/rails.rb:28:in `load'
	74: from /Users/joe/Desktop/Code/rails_admin_test/bin/rails:5:in `<top (required)>'
	73: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activesupport-6.1.0/lib/active_support/dependencies.rb:332:in `require'
	72: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activesupport-6.1.0/lib/active_support/dependencies.rb:299:in `load_dependency'
	71: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activesupport-6.1.0/lib/active_support/dependencies.rb:332:in `block in require'
	70: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
	69: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
	68: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
	67: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
	66: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
	65: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/railties-6.1.0/lib/rails/commands.rb:18:in `<main>'
	64: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/railties-6.1.0/lib/rails/command.rb:50:in `invoke'
	63: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/railties-6.1.0/lib/rails/command/base.rb:69:in `perform'
	62: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/thor-1.0.1/lib/thor.rb:392:in `dispatch'
	61: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/thor-1.0.1/lib/thor/invocation.rb:127:in `invoke_command'
	60: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/thor-1.0.1/lib/thor/command.rb:27:in `run'
	59: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/railties-6.1.0/lib/rails/commands/server/server_command.rb:135:in `perform'
	58: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/railties-6.1.0/lib/rails/commands/server/server_command.rb:135:in `tap'
	57: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/railties-6.1.0/lib/rails/commands/server/server_command.rb:144:in `block in perform'
	56: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/railties-6.1.0/lib/rails/commands/server/server_command.rb:39:in `start'
	55: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rack-2.2.3/lib/rack/server.rb:311:in `start'
	54: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rack-2.2.3/lib/rack/server.rb:379:in `handle_profiling'
	53: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rack-2.2.3/lib/rack/server.rb:312:in `block in start'
	52: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rack-2.2.3/lib/rack/server.rb:422:in `wrapped_app'
	51: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rack-2.2.3/lib/rack/server.rb:249:in `app'
	50: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rack-2.2.3/lib/rack/server.rb:349:in `build_app_and_options_from_config'
	49: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rack-2.2.3/lib/rack/builder.rb:66:in `parse_file'
	48: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rack-2.2.3/lib/rack/builder.rb:105:in `load_file'
	47: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rack-2.2.3/lib/rack/builder.rb:116:in `new_from_string'
	46: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rack-2.2.3/lib/rack/builder.rb:116:in `eval'
	45: from config.ru:3:in `block in <main>'
	44: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:53:in `require_relative'
	43: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activesupport-6.1.0/lib/active_support/dependencies.rb:332:in `require'
	42: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activesupport-6.1.0/lib/active_support/dependencies.rb:299:in `load_dependency'
	41: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activesupport-6.1.0/lib/active_support/dependencies.rb:332:in `block in require'
	40: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/zeitwerk-2.4.2/lib/zeitwerk/kernel.rb:34:in `require'
	39: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
	38: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
	37: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
	36: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
	35: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
	34: from /Users/joe/Desktop/Code/rails_admin_test/config/environment.rb:5:in `<main>'
	33: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/railties-6.1.0/lib/rails/application.rb:384:in `initialize!'
	32: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/railties-6.1.0/lib/rails/initializable.rb:60:in `run_initializers'
	31: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/2.6.0/tsort.rb:205:in `tsort_each'
	30: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/2.6.0/tsort.rb:226:in `tsort_each'
	29: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/2.6.0/tsort.rb:347:in `each_strongly_connected_component'
	28: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/2.6.0/tsort.rb:347:in `call'
	27: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/2.6.0/tsort.rb:347:in `each'
	26: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/2.6.0/tsort.rb:349:in `block in each_strongly_connected_component'
	25: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/2.6.0/tsort.rb:431:in `each_strongly_connected_component_from'
	24: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/2.6.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
	23: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/2.6.0/tsort.rb:228:in `block in tsort_each'
	22: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/railties-6.1.0/lib/rails/initializable.rb:61:in `block in run_initializers'
	21: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/railties-6.1.0/lib/rails/initializable.rb:32:in `run'
	20: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/railties-6.1.0/lib/rails/initializable.rb:32:in `instance_exec'
	19: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/railties-6.1.0/lib/rails/application/finisher.rb:133:in `block in <module:Finisher>'
	18: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/zeitwerk-2.4.2/lib/zeitwerk/loader.rb:508:in `eager_load_all'
	17: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/zeitwerk-2.4.2/lib/zeitwerk/loader.rb:508:in `each'
	16: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/zeitwerk-2.4.2/lib/zeitwerk/loader.rb:393:in `eager_load'
	15: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/zeitwerk-2.4.2/lib/zeitwerk/loader.rb:393:in `synchronize'
	14: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/zeitwerk-2.4.2/lib/zeitwerk/loader.rb:404:in `block in eager_load'
	13: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/zeitwerk-2.4.2/lib/zeitwerk/loader.rb:725:in `ls'
	12: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/zeitwerk-2.4.2/lib/zeitwerk/loader.rb:725:in `foreach'
	11: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/zeitwerk-2.4.2/lib/zeitwerk/loader.rb:733:in `block in ls'
	10: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/zeitwerk-2.4.2/lib/zeitwerk/loader.rb:409:in `block (2 levels) in eager_load'
	 9: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/zeitwerk-2.4.2/lib/zeitwerk/loader.rb:409:in `const_get'
	 8: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/zeitwerk-2.4.2/lib/zeitwerk/kernel.rb:26:in `require'
	 7: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
	 6: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
	 5: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
	 4: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
	 3: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
	 2: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rails_admin-2.0.2/app/helpers/rails_admin/form_builder.rb:1:in `<main>'
	 1: from /Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rails_admin-2.0.2/app/helpers/rails_admin/form_builder.rb:2:in `<module:RailsAdmin>'
/Users/joe/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rails_admin-2.0.2/app/helpers/rails_admin/form_builder.rb:3:in `<class:FormBuilder>': uninitialized constant NestedForm::BuilderMixin (NameError)

Faced with the same issue in production mode.
=> Booting Puma
=> Rails 6.1.1 application starting in production
=> Run `bin/rails server --help` for more startup options
Exiting
/usr/local/bundle/gems/rails_admin-2.0.2/app/helpers/rails_admin/form_builder.rb:3:in `<class:FormBuilder>': uninitialized constant NestedForm::BuilderMixin (NameError)
	from /usr/local/bundle/gems/rails_admin-2.0.2/app/helpers/rails_admin/form_builder.rb:2:in `<module:RailsAdmin>'
	from /usr/local/bundle/gems/rails_admin-2.0.2/app/helpers/rails_admin/form_builder.rb:1:in `<main>'
	from /usr/local/bundle/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
	from /usr/local/bundle/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
	from /usr/local/bundle/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
	from /usr/local/bundle/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
	from /usr/local/bundle/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
	from /usr/local/bundle/gems/zeitwerk-2.4.2/lib/zeitwerk/kernel.rb:26:in `require'
	from /usr/local/bundle/gems/zeitwerk-2.4.2/lib/zeitwerk/loader.rb:409:in `const_get'
	from /usr/local/bundle/gems/zeitwerk-2.4.2/lib/zeitwerk/loader.rb:409:in `block (2 levels) in eager_load'
	from /usr/local/bundle/gems/zeitwerk-2.4.2/lib/zeitwerk/loader.rb:733:in `block in ls'
	from /usr/local/bundle/gems/zeitwerk-2.4.2/lib/zeitwerk/loader.rb:725:in `foreach'
	from /usr/local/bundle/gems/zeitwerk-2.4.2/lib/zeitwerk/loader.rb:725:in `ls'
	from /usr/local/bundle/gems/zeitwerk-2.4.2/lib/zeitwerk/loader.rb:404:in `block in eager_load'
	from /usr/local/bundle/gems/zeitwerk-2.4.2/lib/zeitwerk/loader.rb:393:in `synchronize'
	from /usr/local/bundle/gems/zeitwerk-2.4.2/lib/zeitwerk/loader.rb:393:in `eager_load'
	from /usr/local/bundle/gems/zeitwerk-2.4.2/lib/zeitwerk/loader.rb:508:in `each'
	from /usr/local/bundle/gems/zeitwerk-2.4.2/lib/zeitwerk/loader.rb:508:in `eager_load_all'
	from /usr/local/bundle/gems/railties-6.1.1/lib/rails/application/finisher.rb:133:in `block in <module:Finisher>'
	from /usr/local/bundle/gems/railties-6.1.1/lib/rails/initializable.rb:32:in `instance_exec'
	from /usr/local/bundle/gems/railties-6.1.1/lib/rails/initializable.rb:32:in `run'
	from /usr/local/bundle/gems/railties-6.1.1/lib/rails/initializable.rb:61:in `block in run_initializers'
	from /usr/local/lib/ruby/2.7.0/tsort.rb:228:in `block in tsort_each'
	from /usr/local/lib/ruby/2.7.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
	from /usr/local/lib/ruby/2.7.0/tsort.rb:431:in `each_strongly_connected_component_from'
	from /usr/local/lib/ruby/2.7.0/tsort.rb:349:in `block in each_strongly_connected_component'
	from /usr/local/lib/ruby/2.7.0/tsort.rb:347:in `each'
	from /usr/local/lib/ruby/2.7.0/tsort.rb:347:in `call'
	from /usr/local/lib/ruby/2.7.0/tsort.rb:347:in `each_strongly_connected_component'
	from /usr/local/lib/ruby/2.7.0/tsort.rb:226:in `tsort_each'
	from /usr/local/lib/ruby/2.7.0/tsort.rb:205:in `tsort_each'
	from /usr/local/bundle/gems/railties-6.1.1/lib/rails/initializable.rb:60:in `run_initializers'
	from /usr/local/bundle/gems/railties-6.1.1/lib/rails/application.rb:384:in `initialize!'
	from /app/config/environment.rb:5:in `<main>'
	from /usr/local/bundle/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
	from /usr/local/bundle/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
	from /usr/local/bundle/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
	from /usr/local/bundle/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
	from /usr/local/bundle/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
	from /usr/local/bundle/gems/zeitwerk-2.4.2/lib/zeitwerk/kernel.rb:34:in `require'
	from /usr/local/bundle/gems/activesupport-6.1.1/lib/active_support/dependencies.rb:332:in `block in require'
	from /usr/local/bundle/gems/activesupport-6.1.1/lib/active_support/dependencies.rb:299:in `load_dependency'
	from /usr/local/bundle/gems/activesupport-6.1.1/lib/active_support/dependencies.rb:332:in `require'
	from /usr/local/bundle/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:53:in `require_relative'
	from config.ru:3:in `block in <main>'
	from /usr/local/bundle/gems/rack-2.2.3/lib/rack/builder.rb:116:in `eval'
	from /usr/local/bundle/gems/rack-2.2.3/lib/rack/builder.rb:116:in `new_from_string'
	from /usr/local/bundle/gems/rack-2.2.3/lib/rack/builder.rb:105:in `load_file'
	from /usr/local/bundle/gems/rack-2.2.3/lib/rack/builder.rb:66:in `parse_file'
	from /usr/local/bundle/gems/rack-2.2.3/lib/rack/server.rb:349:in `build_app_and_options_from_config'
	from /usr/local/bundle/gems/rack-2.2.3/lib/rack/server.rb:249:in `app'
	from /usr/local/bundle/gems/rack-2.2.3/lib/rack/server.rb:422:in `wrapped_app'
	from /usr/local/bundle/gems/rack-2.2.3/lib/rack/server.rb:312:in `block in start'
	from /usr/local/bundle/gems/rack-2.2.3/lib/rack/server.rb:379:in `handle_profiling'
	from /usr/local/bundle/gems/rack-2.2.3/lib/rack/server.rb:311:in `start'
	from /usr/local/bundle/gems/railties-6.1.1/lib/rails/commands/server/server_command.rb:39:in `start'
	from /usr/local/bundle/gems/railties-6.1.1/lib/rails/commands/server/server_command.rb:144:in `block in perform'
	from /usr/local/bundle/gems/railties-6.1.1/lib/rails/commands/server/server_command.rb:135:in `tap'
	from /usr/local/bundle/gems/railties-6.1.1/lib/rails/commands/server/server_command.rb:135:in `perform'
	from /usr/local/bundle/gems/thor-1.0.1/lib/thor/command.rb:27:in `run'
	from /usr/local/bundle/gems/thor-1.0.1/lib/thor/invocation.rb:127:in `invoke_command'
	from /usr/local/bundle/gems/thor-1.0.1/lib/thor.rb:392:in `dispatch'
	from /usr/local/bundle/gems/railties-6.1.1/lib/rails/command/base.rb:69:in `perform'
	from /usr/local/bundle/gems/railties-6.1.1/lib/rails/command.rb:50:in `invoke'
	from /usr/local/bundle/gems/railties-6.1.1/lib/rails/commands.rb:18:in `<main>'
	from /usr/local/bundle/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
	from /usr/local/bundle/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
	from /usr/local/bundle/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
	from /usr/local/bundle/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
	from /usr/local/bundle/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
	from /usr/local/bundle/gems/activesupport-6.1.1/lib/active_support/dependencies.rb:332:in `block in require'
	from /usr/local/bundle/gems/activesupport-6.1.1/lib/active_support/dependencies.rb:299:in `load_dependency'
	from /usr/local/bundle/gems/activesupport-6.1.1/lib/active_support/dependencies.rb:332:in `require'
	from bin/rails:5:in `<main>'

Faced with the same issue in production mode.
=> Booting Puma
=> Rails 6.1.1 application starting in production
=> Run `bin/rails server --help` for more startup options
Exiting
/usr/local/bundle/gems/rails_admin-2.0.2/app/helpers/rails_admin/form_builder.rb:3:in `<class:FormBuilder>': uninitialized constant NestedForm::BuilderMixin (NameError)
	from /usr/local/bundle/gems/rails_admin-2.0.2/app/helpers/rails_admin/form_builder.rb:2:in `<module:RailsAdmin>'
	from /usr/local/bundle/gems/rails_admin-2.0.2/app/helpers/rails_admin/form_builder.rb:1:in `<main>'
	from /usr/local/bundle/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
	from /usr/local/bundle/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
	from /usr/local/bundle/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
	from /usr/local/bundle/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
	from /usr/local/bundle/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
	from /usr/local/bundle/gems/zeitwerk-2.4.2/lib/zeitwerk/kernel.rb:26:in `require'
	from /usr/local/bundle/gems/zeitwerk-2.4.2/lib/zeitwerk/loader.rb:409:in `const_get'
	from /usr/local/bundle/gems/zeitwerk-2.4.2/lib/zeitwerk/loader.rb:409:in `block (2 levels) in eager_load'
	from /usr/local/bundle/gems/zeitwerk-2.4.2/lib/zeitwerk/loader.rb:733:in `block in ls'
	from /usr/local/bundle/gems/zeitwerk-2.4.2/lib/zeitwerk/loader.rb:725:in `foreach'
	from /usr/local/bundle/gems/zeitwerk-2.4.2/lib/zeitwerk/loader.rb:725:in `ls'
	from /usr/local/bundle/gems/zeitwerk-2.4.2/lib/zeitwerk/loader.rb:404:in `block in eager_load'
	from /usr/local/bundle/gems/zeitwerk-2.4.2/lib/zeitwerk/loader.rb:393:in `synchronize'
	from /usr/local/bundle/gems/zeitwerk-2.4.2/lib/zeitwerk/loader.rb:393:in `eager_load'
	from /usr/local/bundle/gems/zeitwerk-2.4.2/lib/zeitwerk/loader.rb:508:in `each'
	from /usr/local/bundle/gems/zeitwerk-2.4.2/lib/zeitwerk/loader.rb:508:in `eager_load_all'
	from /usr/local/bundle/gems/railties-6.1.1/lib/rails/application/finisher.rb:133:in `block in <module:Finisher>'
	from /usr/local/bundle/gems/railties-6.1.1/lib/rails/initializable.rb:32:in `instance_exec'
	from /usr/local/bundle/gems/railties-6.1.1/lib/rails/initializable.rb:32:in `run'
	from /usr/local/bundle/gems/railties-6.1.1/lib/rails/initializable.rb:61:in `block in run_initializers'
	from /usr/local/lib/ruby/2.7.0/tsort.rb:228:in `block in tsort_each'
	from /usr/local/lib/ruby/2.7.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
	from /usr/local/lib/ruby/2.7.0/tsort.rb:431:in `each_strongly_connected_component_from'
	from /usr/local/lib/ruby/2.7.0/tsort.rb:349:in `block in each_strongly_connected_component'
	from /usr/local/lib/ruby/2.7.0/tsort.rb:347:in `each'
	from /usr/local/lib/ruby/2.7.0/tsort.rb:347:in `call'
	from /usr/local/lib/ruby/2.7.0/tsort.rb:347:in `each_strongly_connected_component'
	from /usr/local/lib/ruby/2.7.0/tsort.rb:226:in `tsort_each'
	from /usr/local/lib/ruby/2.7.0/tsort.rb:205:in `tsort_each'
	from /usr/local/bundle/gems/railties-6.1.1/lib/rails/initializable.rb:60:in `run_initializers'
	from /usr/local/bundle/gems/railties-6.1.1/lib/rails/application.rb:384:in `initialize!'
	from /app/config/environment.rb:5:in `<main>'
	from /usr/local/bundle/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
	from /usr/local/bundle/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
	from /usr/local/bundle/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
	from /usr/local/bundle/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
	from /usr/local/bundle/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
	from /usr/local/bundle/gems/zeitwerk-2.4.2/lib/zeitwerk/kernel.rb:34:in `require'
	from /usr/local/bundle/gems/activesupport-6.1.1/lib/active_support/dependencies.rb:332:in `block in require'
	from /usr/local/bundle/gems/activesupport-6.1.1/lib/active_support/dependencies.rb:299:in `load_dependency'
	from /usr/local/bundle/gems/activesupport-6.1.1/lib/active_support/dependencies.rb:332:in `require'
	from /usr/local/bundle/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:53:in `require_relative'
	from config.ru:3:in `block in <main>'
	from /usr/local/bundle/gems/rack-2.2.3/lib/rack/builder.rb:116:in `eval'
	from /usr/local/bundle/gems/rack-2.2.3/lib/rack/builder.rb:116:in `new_from_string'
	from /usr/local/bundle/gems/rack-2.2.3/lib/rack/builder.rb:105:in `load_file'
	from /usr/local/bundle/gems/rack-2.2.3/lib/rack/builder.rb:66:in `parse_file'
	from /usr/local/bundle/gems/rack-2.2.3/lib/rack/server.rb:349:in `build_app_and_options_from_config'
	from /usr/local/bundle/gems/rack-2.2.3/lib/rack/server.rb:249:in `app'
	from /usr/local/bundle/gems/rack-2.2.3/lib/rack/server.rb:422:in `wrapped_app'
	from /usr/local/bundle/gems/rack-2.2.3/lib/rack/server.rb:312:in `block in start'
	from /usr/local/bundle/gems/rack-2.2.3/lib/rack/server.rb:379:in `handle_profiling'
	from /usr/local/bundle/gems/rack-2.2.3/lib/rack/server.rb:311:in `start'
	from /usr/local/bundle/gems/railties-6.1.1/lib/rails/commands/server/server_command.rb:39:in `start'
	from /usr/local/bundle/gems/railties-6.1.1/lib/rails/commands/server/server_command.rb:144:in `block in perform'
	from /usr/local/bundle/gems/railties-6.1.1/lib/rails/commands/server/server_command.rb:135:in `tap'
	from /usr/local/bundle/gems/railties-6.1.1/lib/rails/commands/server/server_command.rb:135:in `perform'
	from /usr/local/bundle/gems/thor-1.0.1/lib/thor/command.rb:27:in `run'
	from /usr/local/bundle/gems/thor-1.0.1/lib/thor/invocation.rb:127:in `invoke_command'
	from /usr/local/bundle/gems/thor-1.0.1/lib/thor.rb:392:in `dispatch'
	from /usr/local/bundle/gems/railties-6.1.1/lib/rails/command/base.rb:69:in `perform'
	from /usr/local/bundle/gems/railties-6.1.1/lib/rails/command.rb:50:in `invoke'
	from /usr/local/bundle/gems/railties-6.1.1/lib/rails/commands.rb:18:in `<main>'
	from /usr/local/bundle/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
	from /usr/local/bundle/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
	from /usr/local/bundle/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
	from /usr/local/bundle/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
	from /usr/local/bundle/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
	from /usr/local/bundle/gems/activesupport-6.1.1/lib/active_support/dependencies.rb:332:in `block in require'
	from /usr/local/bundle/gems/activesupport-6.1.1/lib/active_support/dependencies.rb:299:in `load_dependency'
	from /usr/local/bundle/gems/activesupport-6.1.1/lib/active_support/dependencies.rb:332:in `require'
	from bin/rails:5:in `<main>'

I had luck with this: https://github.com/sferik/rails_admin/issues/887#issuecomment-636622362

I had luck with this: https://github.com/sferik/rails_admin/issues/887#issuecomment-636622362

The fix ajkerr refers to works, why this only comes up in production is weird.

@coder2000 I think it only happens in production because production env is eager loaded by default.
You can also reproduce by running rails zeitwerk:check

to define constant RedmineExtensions::EasySettings, but didn't (Zeitwerk::NameError)
Pls help me to resolve


Variable naming is not very elegant

Some of the variables used CamelCase, some used Snake_case, some used lower_snake. So we must choose a case style. But this change will be a big thing. gg.py and gpawsolve.py must be edited at the same time. Also, it will make compatibility issues with the older versions. Examples must be changed also. However, before having a user base, we can do it asap.

Today, I added more comments to gg.py, to understand all objects better. Next, we must change generic labels and frames in gg.py. Then we must start to change variables.

With time, gpawsolve.py uses many variables in it and in input files. However, it does not have a proper naming convention for these variables. Also some of the variable names are misleading the user. From this version, gpawsolve.py will use a special Snake_case (first letter of each variable is capitalized) variables for the input file variables usage. Variables that are affected: mode -> Mode, fmaxval -> Max_F_tolerance, whichstrain -> Relax_cell, cut_off_energy -> Cut_off_energy, kpts_density -> Ground_kpts_dens, kpts_x -> Ground_kpts_x, kpts_y -> Ground_kpts_y, kpts_z -> Ground_kpts_y, gpts_density -> Ground_gpts_dens, gpts_x -> Ground_gpts_x, gpts_y -> Ground_gpts_y, gpts_z -> Ground_gpts_z, Hubbard -> Setup_params, band_path -> Band_path, band_npoints -> Band_npoints, gridref -> Refine_grid energy_max -> Energy_max, GWtype -> GW_type, GWkpoints -> GW_kpoints_list, GWtruncation -> GW_truncation, GWcut_off_energy -> GW_cut_off_energy, GWbandVB -> GW_valence_band_no, GWbandCB -> GW_conduction_band_no, GWppa -> GW_PPA, GWq0correction -> GW_q0_correction, GWnblock -> GW_nblocks_max, GWbandinterpolation -> GW_interpolate_band, opttype -> Opt_calc_type, optshift -> Opt_shift_en, optBSEvb -> Opt_BSE_valence, optBSEcb -> Opt_BSE_conduction, optBSEminEn -> Opt_BSE_min_en, optBSEmaxEn -> Opt_BSE_max_en, optBSEnumdata -> Opt_BSE_num_of_data, num_of_bands -> Opt_num_of_bands, optFDsmear -> Opt_FD_smearing, opteta -> Opt_eta, optdomega0 -> Opt_domega0, optomega2 -> Opt_omega2, optecut -> Opt_cut_of_energy, optnblocks -> Opt_nblocks, MPIcores -> MPI_cores
All new variable changes are corrected and new variables are added to gg.py.
The variables used in asapsolve.py is also changed. From this version, asapsolve.py will use a special Snake_case (first letter of each variable is capitalized) variables for the input file variables usage.Variable that are affected are: Manualpbc -> Manual_PBC, pbcmanual -> PBC_constraints, PotentialUsed -> OpenKIM_potential, SolveDoubleElementProblem -> Solve_double_element_problem.
New variable names have been started to be used with version 23.2.0


Invalid type value results in an undefined error

I'm seeing an "undefined" error in a case where the schema is invalid, but I'd expect to get an error message directing me to the error at hand. Here's the invalid schema:
{
    "$schema": "http://json-schema.org/draft-06/schema#",
    "$id": "http://example.com/test",
    "properties": {
        "a": { "type": "date-time" }
    }
}

If I fix this by changing the type of "a" to "string", then the schema loads and I can validate instance documents. With this error, the schema will load, but when I validate a document, it throws undefined.

I'm not able to reproduce this one. The expected result is for it to throw the result of meta-validation. When I attempt to validate that schema I get the following error.
{
  keyword: 'http://json-schema.org/draft-06/schema#validate',
  absoluteKeywordLocation: 'http://json-schema.org/draft-06/schema#',
  instanceLocation: 'http://example.com/test#',
  valid: false,
  errors: [
    {
      keyword: 'http://json-schema.org/draft-06/schema#additionalProperties',
      absoluteKeywordLocation: 'http://json-schema.org/draft-06/schema#',
      instanceLocation: 'http://example.com/test#/properties',
      valid: false,
      errors: [Array]
    },
    {
      keyword: 'http://json-schema.org/draft-06/schema#properties',
      absoluteKeywordLocation: 'http://json-schema.org/draft-06/schema#/properties',
      instanceLocation: 'http://example.com/test#',
      valid: false,
      errors: [Array]
    }
  ]
}

OK--thanks for investigating. I'll take another look at my code, and then provide an update here.

Alright, here's what I got tripped up on. When I call validate:
const output = await JsonSchema.validate(schema, instanceJSON, JsonSchema.VERBOSE);
If the schema fails to validate, then this throws--but it doesn't throw an Error. Instead, it throws an output object for the schema. Is this the intended behavior?

Yes, that's the expected behavior. I've never been happy with the way meta-validation errors are handled. Throwing the output was intended to be temporary until I came up with something I liked better, but I haven't come up with anything yet, so it's still there. I wanted to avoid having to make a custom error implementation, but at this point I should probably do that or prioritize coming up with an approach I like better.

Got it. As a client, I think the throw seems reasonable, but not extending Error definitely tripped me up. I would have expected a custom error from which I could retrieve the output object.
Do you want me to close this? Or leave it open as a reminder to revisit this? :)

Thanks for the feedback. You can leave it open. I'm not sure what I'm going to do yet, but I'll figure something out and take care of it soon.

I added the custom Error class. I'm still not super happy with it. The part I don't like is that you have to know to look for the validation results in custom property output. I'm concerned that people won't know to look for this field. But, it's not good enough the way it is and I didn't come up with a better option, so this will have to do.


DELETE_RESOURCES_SUCCEEDED doesn't remove entry in "resources" object in store

redux-resource: 3.0.0-beta4
redux-resource-plugins: 3.0.0-beta4
Maybe I'm doing something wrong but when I dispatch:
    dispatch({
      type: actionTypes.DELETE_RESOURCES_SUCCEEDED,
      resourceType: "cat",
      request: "deleteCat",
      resources: ["123"],
    });

it sets the resource object in the store to:
cats: {
  resources: {
    "123": null,
  }
}

acording to the wiki

When an action of type DELETE_RESOURCES_SUCCEEDED is dispatched, any resources included in the action will be removed from the resources array of your state tree.

The problem is that calling getResources after a deletion fails with a resource is null error.
In get-resources.js there is no check to make sure the resource is an object.

Thanks for the report! I’ll fix this soon. I am sick with the flu atm so it may not be today 🤒

@au-re can you post the arguments you’re passing to getResources?

Thanks for the quick reply!
I'm calling getResources in mapStateToProps and passing the state slice
const mapStateToProps = (state, props) => ({
  cats: getResources(state.cats)
});

I setup the reducer like so:
import { resourceReducer } from "redux-resource";
import { httpStatusCodes, reset } from "redux-resource-plugins";

export default {
  cats: resourceReducer("cats", { plugins: [httpStatusCodes, reset] }),
};

And add it to the store:
import { applyMiddleware, combineReducers, createStore } from "redux";
import thunk from "redux-thunk";

import reducers from "./reducers";

const middlewares = [thunk];

const store = createStore(
  combineReducers({
    ...reducers,
  }),
  applyMiddleware(...middlewares),
);

Thanks for the details @au-re !
It turns out that this issue also affects v2. I am thinking about the best solution there. This is a consequence of the addition of the new filter function signature in getResources; I didn't consider this as a consequence, and so far we haven't run into this as Netflix (pretty surprising to me tbqh).
Also, I noticed that you referenced the v2 documentation (redux-resource.js.org) when you reported this issue. I do not encourage you to read the v2 docs if you are using v3. That didn't lead to this problem, but v3 has many improvements over v2, so you should definitely use the v3 docs instead if you intend to use the beta!
Lastly, I PR'd a solution over in #377 :v: I will release it as beta5 shortly :+1:

A fix has been released as beta5. Let me know if you still run into the issue. Thanks for the report @au-re ! I will open another issue to track fixing this in v2.


[test] Add minimized test case from SR-7337

Because we've changed how conformances represent associated types since Swift 4.2 branched, the error described there (and addressed in #17523) no longer occurs. But we still want to make sure we don't regress.
SR-7337 / rdar://problem/39142121

@swift-ci Please smoke test


Develop

See #175 , #168, #177

@Kersten-TCD @karynemayer new issue created to address feedback: https://github.com/telosnetwork/app-telos-native/issues/186

@Kersten-TCD has determined that this is not a blocking issue for this release, so we're good to merge it


Request for feature

Is your feature request related to a problem? Please describe.
Cannot search option from filters by typing. Example, in data hosting page, in the Buyer name filter, user would want to search for department by typing instead of scrolling through all the options., which is a long list.
Describe the solution you'd like.
Search by typing feature needed.
Additional context.
…

added in #37


Add plugin peripheral support

This makes it possible for plugins to implement their own peripherals.
Its registry follows the same scheme as RendererFactory.
Usage is as simple as creating a class that implements IPeripheral, and adding it to the PeripheralFactory like so:
PeripheralFactory.implementations.put("my_peripheral", MyPeripheral::new);

The peripheral can then be attached using the CCEmuX API:
ccemux.attach("top","my_peripheral")

And the peripheral will function as expected on top.

Do we still plan on merging this at some point in time?

Yeah probably

Yeah once its not complete garbage

Ok please turn this into non-garbage

When will work be done on this? I can't wait to have modems in CCEmuX, it'll be cool.

@MineRobber9000 It will be worked on. Right now I'm mostly waiting to see if the Cobalt PR gets merged into CC, as it will allow me to rewrite a good chunk of CCEmuX in a more coherent fashion.

Also, you can download and apply this PR as a patch to start developing against it before it gets merged if you like.

Superseded by #95


Don't split on ellipses

I believe it's not safe to always split sentences on ellipses. For example, the following sentence (initially mentioned at https://github.com/DavidAnson/markdownlint/pull/719#issuecomment-1447501641):

Pausing... for... thought... should not [trigger splitting].

...currently splits as

'Pausing...',
'for...',
'thought...',
'should not [trigger splitting]'

but should remain as a single sentence.
/cc @DavidAnson @aepfli

Hey, I extracted this whole rule into a different repo - https://github.com/aepfli/markdownlint-rule-max-one-sentence-per-line
and within the test, it clearly states that theoretically, you could add ... to the ignore_words - we do not have any kind of fancy logic in there to detect sentences. We commonly only detect certain chars (or combinations) and split on those. That is also the reason why I renamed my liniting rule to max-one-sentence-per-line. This way, I removed the need to combine split sentences, etc. - https://github.com/aepfli/markdownlint-rule-max-one-sentence-per-line/blob/main/test/sentences-per-line.md - is my updated version of the test


Add a sync icon

Hello,
First of all thank you for an amazing tool =)
We have a refresh icon that can be used to reefer sync but..., and this is probably a "my own preference", but I would like to ask if a proper sync icon is to be expected? I think one similar to Font Awesome would be more suitable.  It´s really helpful in mobile apps so it makes sense to be available.
Once again, thanks for Ratchet.

Yes, please


How to rendering Shadow&AO into a transparent plane?

Hi,
I want rendering a model with Shadow&AO into a transparent plane, I created a plane but I don't want draw it on framebuffer, only want it receive the shadow and AO, so the vertex.color all is (0, 0, 0,0) the plane and the shadow will disappeared, but when I set the vertex.color to (1, 1, 1, 1) the plane is all white, but the shadow is correct.
Is anyway can rendering a plane just with shadow pixels not all the plane?
Thanks

(If I understand your question correctly) Currently what you are describing is not possible as the alpha channel is respected for all ray query types, at least for our main scivis and pathtracer renderers.
The idea is that you want an object to cast a shadow, but not be rendered itself?

right, the goal is I need render a model based on a video(AR) as the background.

Sorry for the late reply. This definitely sounds interesting as AR is not a space we have worked in yet, though we would like to discuss it first among the team (several team members are on vacation right now).

hello, can you elaborate on the scenario you need?  You would like the light from the video frame to influence the scene without actually rendering the light image used is that correct?  This may be already supported in the path tracer, as you can create an image based light but then use a "backplate" for the background color which could be transparent.

Thank your all input, I have already find a solution and it is work well, when I review the code I got a property of renderer named "shadowCatcherPlane", but in core code have a lot of TODO, but after I set the currect plane for shadowCatcherPlane, it works well.

Yes, shadowCatcherPlane is the (undocumented) feature you are looking for. Please note that this is implemented for the path tracer only (but you can use an ambient light to emulate AO, or maybe you even have a light probe (HDRI) recorded together with the video).

@cshan, can you please put some example code to use shadowCatcherPlane , because when I use it it gives black plane .
renderer->setParam("shadowCatcherPlane", vec4f(0, 0, 1, 1));
addObjectToCommit(renderer->handle());

The plane is affected by the renderer backgroundColor parameter.  There is currently no method to set the shadowCatcherPlane plane independent of the background color, because you are effectively just seeing a shadow on the background with the shadowCatcherPlane.

I am setting shadowCatcherPlane with below code,
renderer->setParam("backgroundColor", vec3f(1,1,1));
renderer->setParam("shadowCatcherPlane", vec4f(0, 0, 1, 1));
the plane is coming but all black.
Any idea why it is black instead of completely transparent ?

From just this image, it is impossible to tell what the image should look like.  Can you post images with and without the shadowCatcherPlane for some context?  Is the white I'm seeing the background or something else?
The plane will appear transparent to the background, however, if geometry is on the far side of the plane, it will not be visible - ie it is a ground plane, anything underground is not visible.
Also, please keep in mind that the backgroundColor has an alpha component as per https://www.ospray.org/documentation.html#renderers that affects the background of a saved renderbuffer image if png.

float / vec3f / vec4f
backgroundColor
black, transparent
background color and alpha (linear A/RGB/RGBA), if no map_backplate is set

Also, looking at commits, it appears that we have made some fixes to the shadowCatcherPlane since the 2.8 release (https://github.com/ospray/ospray/commit/ce42e06709e342dae31fc919acaad829d24a40ca).  I can't recall if that would affect your situation or not.


Unable to deserialize object

Hi,
I was trying to serialize and deserialize bloom filter object, and deserialization gives me the following error during the compilation:
flatty-0.3.4/flatty.nim(171, 23) Error: for a 'var' type a variable needs to be passed; but 'uint64(x.capacity)' is immutable

code causing the issue is:
proc importFlatty*(srcPath: string): Bloom =
  result = srcPath.readFile().fromFlatty(Bloom)

and it works perfectly the opposite way (toFlatty).
Is that a bug or me doing something wrong?

This looks like a bug. Could you provide a small example to reproduce this?
You might need to include the bloom filter import in the same file as the code that is doing the deserialization. Some times Nim is confusing with imports.
On Thu, Sep 22, 2022, at 3:02 AM, srozb wrote:

Hi,
I was trying to serialize and deserialize bloom filter object https://github.com/dizzyliam/flower/blob/main/src/flower.nim#L17, and deserialization gives me the following error during the compilation:
flatty-0.3.4/flatty.nim(171, 23) Error: for a 'var' type a variable needs to be passed; but 'uint64(x.capacity)' is immutable
code causing the issue is:
proc importFlatty*(srcPath: string): Bloom =
result = srcPath.readFile().fromFlatty(Bloom)
and it works perfectly the opposite way (toFlatty).
Is that a bug or me doing something wrong?
—
Reply to this email directly, view it on GitHub https://github.com/treeform/flatty/issues/34, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAA6X7EC2ACXKX6RL6BNPKTV7QVFHANCNFSM6AAAAAAQS4IFWI.
You are receiving this because you are subscribed to this thread.Message ID: @.***>

Here's the minimal example:
import flower, flatty

var
  bloom = newBloom(10, 0.01)
  bl = fromFlatty(toFlatty(bloom), Bloom)

nim c -r test.nim
/Users/slawek/tmp/bloombug/test.nim(5, 18) template/generic instantiation of `fromFlatty` from here
/Users/slawek/.nimble/pkgs/flatty-0.3.4/flatty.nim(291, 4) template/generic instantiation of `fromFlatty` from here
/Users/slawek/.nimble/pkgs/flatty-0.3.4/flatty.nim(171, 23) Error: for a 'var' type a variable needs to be passed; but 'uint64(x.capacity)' is immutable

Tested with flatty  [0.3.4] and flower  [1.0.0]. Imports included in the same file.


WHAT IS msg.guild.settings.prefix

I CANT FIND ITTTT DX XD

Umm.... if you could give me more details on this, I could potentially fix this issue.
But essentially, it's your guild settings in Margarine. Specifically the prefix setting in this case.

"Whoops! Looks like you are thinking of my default prefix. That is not the case here. Please use: "
if ((client.config.prefix !== msg.guild.settings.prefix) && (msg.content === (client.config.prefix + "help"))) { return msg.channel.send(Whoops! Looks like you are thinking of my default prefix. That is not the case here. Please use: ${msg.guild.settings.prefix}); }

That's where the magic happens... so is there a prefix in the message or just a blank space?  I don't even know what version of Margarine you are using.
If you can please provide me with the following, that would be fantastic.

Version that you are using (Found in your settings.json file)
Guild prefix settings (Found in the bwd/"Your guild id".json file)
General settings (Found in your settings.json file)
Steps on what you did to get this issue.

"version": "Beta 0.9",
I dont have a bwd?
{
"ownerID": "330528293843632130",
"prefix": "~",
"build": {
    "version": "Beta 0.9",
    "releaseDate": "TBD"
},
"owner": {
    "channels": {
        "award": "<CHANNEL_ID>",
        "report": ""
    },
    "awards": {
        "suggest": 250,
        "bug": 500,
        "minor": 600,
        "major": 2000
    }
}

}
settings.json

Nada.


Same query parameters for the pricehistory endpoint, with different results

Hey there,
Thank you for your work on this repo.
I'm noticing that when I set query params in the TD Ameritrade API tool, I'm getting different results than when I setup the same parameters with a GetPriceHistoryParams object and was wondering if you might have any insight?
For example, if I go to the TD Ameritrade API tool and enter the following parameters, I get a full year's candle data, confirmed by cross referencing the oldest epoch with an epoch time converter for ease:
            end_date: None
            frequency_type: daily
            frequency: 1
            need_extended_hours_data: None
            period_type: year
            period: 1
            start_date: None

However, when I use the same set of parameters with the GetPriceHistoryParams struct, it seems as if the defaults are used for start_date and end_date in that, I see in the comments that the default is for one trading day:
            end_date: None,
            frequency_type: Some(String::from("daily")),
            frequency: Some(String::from("1")),
            need_extended_hours_data: None,
            period_type: Some(String::from("year")),
            period: Some(String::from("1")),
            start_date: None,

I am a bit green to rust, so I'm sorry if I'm missing something fairly obvious, but I'm curious why this happens?
I don't see any defaults implemented in the get_price_history method and I don't see anything in the params.rs that would set a default, unless the Default impl is used if the fields are none and that's a language mechanic that I'm overlooking?

Hello and thanks for creating this ticket! It looks like I goofed and had the query params for the get_price_history call wrong. I was using underscores when I should have been using camelCase, causing the TDA API to use their defaults.
I published a new version (v0.1.1) that fixes this, so if you upgrade then it should work as expected.

Thanks @rideron89


iOS  implicit instantiation of undefined template 'std::string'

Problem
run in real iphone is ok，but when run in  iOS simulator，have a error:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator15.0.sdk/usr/include/c++/v1/bitset:983:16: implicit instantiation of undefined template 'std::string'

@mrcao2011 Is this compiling the iOS CHIPTool application?  What SHA of the SDK are you using?  What XCode version?

@mrcao2011 Is this compiling the iOS CHIPTool application? What SHA of the SDK are you using? What XCode version?

yes，compiling the  iOS CHIPTool application  in iOS simulator，use the TE9 tag project，xcode version is 13.0。The strange thing is that the real machine（my iPhone XR） is normal。

bzbarsky-apple

yes，compiling the iOS CHIPTool application in iOS simulator，use the TE9 tag project，xcode version is 13.0。The strange thing is that the real machine（my iPhone XR） is normal。

xcode version is 13.0

I just tried that SHA in xcode 13.2 targeting the "iPhone 11" simulator, as follows:

git checkout cfc3595
git submodule update --init
. ./scripts/bootstrap.sh
Start Xcode
Select the "CHIP Framework" target.
Select the "iPhone 12" similator.
Build.
Select the "CHIP Tool App" target.
Select the "iPhone 12" simulator.
Build.

and the build succeeded.
It's worth checking whether updating XCode to 13.2 helps, perhaps?

xcode version is 13.0

I just tried that SHA in xcode 13.2 targeting the "iPhone 11" simulator, as follows:

git checkout cfc3595
git submodule update --init
. ./scripts/bootstrap.sh
Start Xcode
Select the "CHIP Framework" target.
Select the "iPhone 12" similator.
Build.
Select the "CHIP Tool App" target.
Select the "iPhone 12" simulator.
Build.

and the build succeeded.
It's worth checking whether updating XCode to 13.2 helps, perhaps?

i have save the issuse,updating XCode to 13.4.1 is ok


RGI10 (North Asia)

RGI7a for region 10 was produced by:

extracting RGI6 data from GLIMS data base
dropping all nominal glaciers (116, located on Wrangel Island and islands in the Sibirian Sea)
replacing glaciers in Kamtchatka with data by Barr

points to discuss are:

omitted nominal glaciers which account for about 84 km² and could not be replaced by other data as no outlines for these areas are available in GLIMS.
the subset of Kamchatka glaciers which shall be replaced based on data by Barr. In a first version we replaced all...
the glacier divides presented by Barr which should be checked and eventually be revised.

Thanks! This region also seem to have ~ 10 glaciers which are merged as in https://github.com/GLIMS-RGI/glims_issue_tracker/issues/5

Are you guys talking about the nominal glacier in the Delong Islands? I have attached a picture here. I know this was also a problem in RGI6 with the circles, now they are missing. If it would be useful, I would be happy to digitize these glaciers and submit them to GLIMS next week.

There are "nominal" (circles representing) glaciers on Wrangell Island also.

Ah, I had not noticed that before. Are there even glaciers on Wrangell Island? I see the circles now in RGI6, but I don't ever remember seeing glaciers on Wrangell before in Landsat imagery, but maybe I am not looking closely enough. Maybe hard to tell the difference between perennial snow and glaciers here? Regardless, I am happy to dive into this and generate the best outlines I could for both of these areas. Would that be helpful? I just don't want to duplicate work someone else is already doing. @bruceraup, are there other areas where there are still circle glaciers? If so, I am happy to generate these layers too to make sure RGI7 is as complete as possible.

Thanks a lot @willkochtitzky for this.
Unfortunately, the two main actors here (Frank and Philipp) are not using github. Can you send them an email linking to this issue and discuss with them whether new mapping is necessary? (I believe it will be - in general I would suggest not having nominal glaciers in GLIMS at all, so these need to be replaced or deleted if there are no glaciers there, no?)

Hi Fabien, will do.

What is the status of this, after the email conversation? Are there outlines to be added to GLIMS or RGI?

Apologies for not closing the loop here. Here is the link to the outlines: https://www.dropbox.com/sh/6riifept2whk7gs/AABiSDc6fzLBbFiX54VNZGWna?dl=0
I sent them to Bruce on July 23, I received confirmation that he got them but not that they were ingested.

Thanks will! I had a look at the outlines: in principle we will take them "as is" for RGI (because it is better than no glaciers), however to be optimal they should have ice flow divides. For now we will keep them as is, unless you have a quick way to compute the flow divides.

I don't have a cleaver way of doing it, but I could go do it manually for these glaciers, it is not many. I could also do that next week and resubmit them if that would be useful. I didn't fully understand how these divides worked in RGI until speaking with Frank last week. So I am happy to learn more about the process!

Thanks OK I understand. Wait before doing anything here, let's see if Philipp can help

I think this has now been including in GLIMS submission 726 and is now in RGI7a: https://github.com/GLIMS-RGI/rgi7_scripts/wiki/RGI10-(North-Asia)
Reopen if I'm mistaken


Bump version to 2.3.1

Signed-off-by: Sayali Gaikawad<EMAIL_ADDRESS>Description
Bump version to 2.3.1 to prepare for next patch.
Issues Resolved
[List any issues this PR will resolve]
Check List

[x] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Need to rebase before approving

Need to rebase before approving

Rebased! Can you review again? Thanks!

Codecov Report

Merging #263 (8429da5) into 2.3 (0d5a5d4) will not change coverage.
The diff coverage is n/a.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@           Coverage Diff           @@
##              2.3     #263   +/-   ##
=======================================
  Coverage   51.49%   51.49%
=======================================
  Files         183      183
  Lines        5805     5805
  Branches      936      936
=======================================
  Hits         2989     2989
  Misses       2595     2595
  Partials      221      221

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


Date / time is wrong on mobile

Date and time doesn't look right.

Only seems to be an issue on mobile. Slack App and web report time correctly ...

ts should have been epoch seconds, not milliseconds.


Add support for argument separator '--'

Add support for using '--' to separate command args from remaining args. Use case: dotnet-watch or dotnet-run.
This will put everything following the first '--' into app.RemainingArguments
cc @pranavkm @victorhurdugaci

cc @victorhurdugaci regardless of whether https://github.com/aspnet/dotnet-watch/pull/159 goes in or not, does this PR look okay?

Yes, it's good :shipit:

😎 cool