[Improvement] Blue/Green deployment

Hey guys !
What about an API route to update the constraints of a local Traefik instance ?
Example:
# traefik.toml
[consulCatalog]
  endpoint = <IP_ADDRESS>:8500
  constraints = []

# erase old constraints
$ curl -X PUT' /api/providers/consulCatalog/constraints' -d '["tag==api-us-east", "tag!=api-blue"]'
# set/erase one constraint
$ curl -X PATCH '/api/providers/consulCatalog/constraints' -d 'tag!=api-blue'
# remove one constraint
$ curl -X DELETE '/api/providers/consulCatalog/constraints/tag!=api-blue'
# flush constraints
$ curl -X DELETE '/api/providers/consulCatalog/constraints'

I would be even better to have a custom flag in provider configuration, dedicated to blue/green deployment:

Backend configuration from kv store:

container 1 /traefik/backends/etcd/my-service/servers/my-container-1/bluegreen = v4.2
container 2 /traefik/backends/etcd/my-service/servers/my-container-2/bluegreen = v5.0

Frontend configuration of a service from Traefik api or backends:

/traefik/frontends/my-service/bluegreen = v4.2
Then /traefik/frontends/my-service/bluegreen = v5.0
To rollback: /traefik/frontends/my-service/bluegreen = v4.2

UI: <select> button to switch bluegreen mode.

I like that

This looks promising. Is there a way to do blue/green deployment today, without this API?

I like this idea of a constraints API. @samber by chance, would you work on this ?

Support for Blue/Green deployments would be great.   We have to support many stateful legacy applications, meaning we also need Traefik's support of sticky sessions.   It would be great if there was a way with Traefik to (assuming old version is 'blue'):

Manage a new 'green' version of a service.

Only allow special traffic (maybe with a certain URL parameter) to hit the new 'green' version for testing purposes.

Support a request so that all new traffic goes to the new 'green' version of the service, while continuing to send existing 'sticky' traffic to the old 'blue' version of the service.

Support a subsequent request so that all traffic is sent to the new 'green' service.

I would not be surprised if there are lots of teams who have to support stateful applications, who would really like to be using blue/green deployments.
Thanks.

I am requesting a feature to support blue/green deployment when using Docker swarm mode as its backend configuration.
The idea is to support a label for source IP address(es), IP address range or subnet (or geolocation perhaps) and forward the users' traffic to a backend server intended for the green deployment. Let's say serviceA is running version 1.0.0 in the blue environment (active) at overlay network A then another serviceA is also running but this time it is on version 1.0.1 in the green environment attached to both overlay networks A and B but for selected users only whose IP addresses matches to the label.
Thank you in advance.

ServiceA and ServiceB are basically the same application with different Docker image tags/versions but ServiceB comes maybe with additional feature and/or minor fixes.

Blue: ServiceA on v1.0.0 (active as catch all)
Green: ServiceB on v1.0.1 (active selectively if traefik.backend.allow.ipaddr, traefik.backend.allow.network, and/or traefik.backend.allow.country labels is/are present)

The Nomad project has support for blue/green + canary deployments. However, it is not stated there how they are going to decide whose traffic will be forwarded to the canary version or maybe I'm not yet aware of it. I hope that in Traefik using Docker swarm mode backend, the source IP address(es), source network and/or source geolocation will be supported to decide whose traffic will be forwarded to the canary version.

It would be great 👍

I managed to come close to a workaround, while the feature is being worked on.
So far I am using a combination of Consul and File endpoint but lacks of auto-reloading, watch = true is not working for me and cross-endpoint communication.
Target workflow

Deploy containers
Update config.toml with correct backend to use for production/preproduction
traefik reloads the configuration
Static frontends now points to correct backends

(2. could be automated via a CI's job)
Current problem(s)

Cannot use Consul + Consul KV (KV entries are being ignored)
Cannot use Consul + Etcd (traefik fails to choose a endpoint)
Cannot reference a backend from another endpoint (traefik does not recognize the backend)
watch = true does not reload traefik's configuration on changes

Suggestion(s)

Allow frontends to cross-endpoint references backends
Allow usage of Consul's catalog and a KV store (KV entries can override settings or at least create frontends/backends aliases)

docker-compose.yml
version: '2'
services:
  consul:
    image: consul:latest
    container_name: consul
    networks:
      - discovery
    ports:
      - "8400:8400"
      - "8500:8500"
      - "<IP_ADDRESS>:53:8600/udp"
    labels:
      SERVICE_IGNORE: "true"

  registrator:
    image: gliderlabs/registrator:latest
    container_name: registrator
    privileged: true
    networks:
      - discovery
    depends_on:
      - consul
    command: -internal=true consul://consul:8500
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock
    labels:
      SERVICE_IGNORE: "true"

  proxy:
    image: traefik
    container_name: proxy
    command: --web --file --consul --consul.endpoint=consul:8500 --consulcatalog.endpoint=consul:8500 --logLevel=DEBUG
    networks:
      - internet-gateway
      - discovery
      - proxy
    ports:
      - "80:80"
      - "443:433"
      - "8080:8080"
    depends_on:
      - consul
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - $PWD/config.toml:/traefik.toml
    labels:
      SERVICE_IGNORE: "true"

  app-blue:
    image: emilevauge/whoami
    networks:
      - proxy
    expose:
      - 80
    labels:
      SERVICE_NAME: "blue"
      SERVICE_TAGS: "traefik.frontend.rule=Host:blue.service.consul"

  app-green:
    image: emilevauge/whoami
    networks:
      - proxy
    expose:
      - 80
    labels:
      SERVICE_NAME: "green"
      SERVICE_TAGS: "traefik.frontend.rule=Host:green.service.consul"

networks:
  discovery:
  internet-gateway:
  proxy:

config.toml
[file]
watch = true

[backends]
  [backends.production]
    [backends.production.servers.server1]
    url = "http://<app-blue_ip>:80"
  [backends.preproduction]
    [backends.preproduction.servers.server1]
    url = "http://<app_green_ip>:80"

[frontends]
  [frontends.production]
  backend = "production"
    [frontends.production.routes.route-host-production]
    rule = "Host:production.myapp.local"
  [frontends.preproduction]
  backend = "preproduction"
    [frontends.preproduction.routes.route-host-preproduction]
    rule = "Host:preproduction.myapp.local"

I've run into the same issue with watch = true not watching the files and not reloading it upon change.  Could be a regression in 1.4 line.  << @ldez @timoreimann

Are we talking about file watches happening inside containers? AFAIK fsnotify does not work with Docker, so file change events won't propagate to processes watching for them.

I've tried that on my Mac (MacOS Sierra 10.12.6), but the prod deployment does run inside the container (Docker) with files embedded inside, not linked from outside host via a mount.

Hey folks,
I implemented Blue/Green deployment in my setup. It’s almost perfect.
BEFORE I had a downtime of 90 seconds. With my Blue/Green deployment setup, I got two little downtime of 5 seconds.
Here is how I do it:

ServiceBlue runs Nginx image 1.13.1
I want to update this service. So I start a new service:
ServiceGreen runs Nginx image 1.13.2
I wait for ServiceGreen to be online
Now Traefik load balance between both.
Life is good and there was no downtime.
Time the update ServiceBlue.
Shutdown ServiceBlue.

Here traefik is NOT aware that ServiceBlue is down. I get a 404. Fortunately, the next request goes to ServiceGreen. I have a 5 second downtime.

Wait for ServiceBlue to be online
Now Traefik load balance between both.
Time the shutdown ServiceGreen as I only want to run ServiceBlue in prod.

Here traefik is NOT aware that ServiceGreen is down. I get a 404. Fortunately, the next request goes to ServiceBlue. I have a 5 second downtime.

Question
How much time does Traefik need to learn that a service has disappeared ?
IMHO, a possible solution is that we need to be able to force Traefik to re-asset available services for —label traefik.backend=nginx.
Many cheers!

I've reviewed all the blue-green implementations in docker swarm. The crucial difference is how the switch between blue and green happens. It all seems to fall into 3 categories:

Load balancer is configured statically. Configuration is stored in a file, points to either blue or green. The switch happens by redeploying load balancer with either blue or green configuration.
Load balancer is configured statically. Configuration is stored in a file, points to both stacks and never changes. The switch happens by stopping/starting either blue or green stack.
Load balancer is configured dynamically. Configuration is stored in memory, points to either blue or green. The switch happens by loading a new configuration into memory (using API, config file + SIGUSR1 or some other mechanism)

Here are my comments:

Good if you're fine with short downtime.
2 I don't think you'd want to remove old stack before you convinced then current stack works. You can't quickly switch back if something goes wrong. So it's not is not suitable for my use case (may be fine for others).
Looks the most suitable.

So let's focus on 3rd approach.
For nginx it's as easy as changing the conf file and running nginx -s reload.
For traefik, it's a bit trickier.
In one implementation, in swarm mode you change which stack is live by attaching service labels with information about its HTTP virtual hostname. Since traefik (to my knowledge) doesn't yet support TCP load balancing, this approach is fine.
The problem is that you have to run service update --label-rm hostname=live --label-add hostname=idle for every exposed service. Would be much nicer to do this:
docker stack deploy -c base.yml -c live.yml blue_stack
docker stack deploy -c base.yml -c idle.yml green_stack

Where live.yml contain all the labels for new (future live) stack and idle.yml have all the labels for current (future idle) stack.
Unfortunately it doesn't work since base.yml will change, so both stacks would be of the same version. I filed a ticket for suporting incremental stack deploys but I don't think it would be implemented.
So here's an idea on improvement: dump all the option into a base.yml.
Alternatively, if we don't want to go to that rabbit hole, we might use traefik API to change configuration instead of changing services and waiting for traefik to pickup those changes.

blue/green is supported by nomad and consul catalog using tags. You define different tags for the blue servers and the green servers. Unfortunately, Traefik does not make this distinction and blue and green are grouped together on a single backend, see https://github.com/containous/traefik/issues/3882

https://github.com/containous/traefik/issues/914#issuecomment-317261456
The Nomad project has support for blue/green + canary deployments. However, it is not stated there how they are going to decide whose traffic will be forwarded to the canary version or maybe I'm not yet aware of it. I hope that in Traefik using Docker swarm mode backend, the source IP address(es), source network and/or source geolocation will be supported to decide whose traffic will be forwarded to the canary version.

@bintut Nomad allows you to define different tags in the Consul Catalog for canary and non canary.

Related: https://github.com/containous/traefik/issues/1164

hello what is the best configuration for blue/green deployment?

Hello,
What is best pratice to achieve blue/green deployment (zero downtime) with traefik ?
Back end applications use tomcat (no docker).

Closed by #5237

sorry, but I don't get it - how exactly does the use of a sticky cookie allows us to do blue/green routing?
Can we inspect requests for stuff like IPs or UserAgents to set the cookie and route to the labeled backend/service?
Does someone has an example including how to set docker service labels?

@port22 you might want to check the community forum at http://community.containo.us to reach some help on this topic.


Generate lint error report and list them on console

Changes:

Generate list error report to show in console
Ignore return type validation for dunder methods
Remove invalid type error for split argument "*"

/check-enforcer success


Integration test suite is broken

The tests aren't running properly because of duplicated container names. Further subsequent invocations create further failures because the tear down step is missing some of the containers.
Despite these failures being noted in the console, the test suite only catches one of the failures on the first run. On the second run there are more errors, but the suite passes.
First Invocation
$ make integ-tests-with-docker
go test ./...
?   	go.amzn.com/cmd/aws-lambda-rie	[no test files]
ok  	go.amzn.com/lambda/agents	(cached)
ok  	go.amzn.com/lambda/appctx	(cached)
ok  	go.amzn.com/lambda/core	(cached)
ok  	go.amzn.com/lambda/core/directinvoke	(cached)
?   	go.amzn.com/lambda/core/statejson	[no test files]
?   	go.amzn.com/lambda/extensions	[no test files]
?   	go.amzn.com/lambda/fatalerror	[no test files]
?   	go.amzn.com/lambda/interop	[no test files]
ok  	go.amzn.com/lambda/logging	(cached)
ok  	go.amzn.com/lambda/metering	(cached)
ok  	go.amzn.com/lambda/rapi	(cached)
ok  	go.amzn.com/lambda/rapi/handler	(cached)
ok  	go.amzn.com/lambda/rapi/middleware	(cached)
ok  	go.amzn.com/lambda/rapi/model	(cached)
?   	go.amzn.com/lambda/rapi/rendering	[no test files]
ok  	go.amzn.com/lambda/rapid	(cached)
ok  	go.amzn.com/lambda/rapidcore	(cached)
ok  	go.amzn.com/lambda/rapidcore/env	(cached)
?   	go.amzn.com/lambda/rapidcore/standalone	[no test files]
?   	go.amzn.com/lambda/rapidcore/telemetry	[no test files]
?   	go.amzn.com/lambda/rapidcore/telemetry/logsapi	[no test files]
ok  	go.amzn.com/lambda/runtimecmd	(cached)
ok  	go.amzn.com/lambda/telemetry	(cached)
docker run --env GOPROXY=direct -v /path/to/aws-lambda-runtime-interface-emulator:/LambdaRuntimeLocal -w /LambdaRuntimeLocal golang:1.14 make compile-lambda-linux
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-s -w" -o bin/aws-lambda-rie ./cmd/aws-lambda-rie
go: downloading github.com/google/uuid v1.1.2
go: downloading github.com/sirupsen/logrus v1.6.0
go: downloading github.com/jessevdk/go-flags v1.4.0
go: downloading github.com/go-chi/chi v4.1.2+incompatible
go: downloading github.com/go-chi/render v1.0.1
go: downloading golang.org/x/sys v0.0.0-20190422165155-953cdadca894
python3 -m venv .venv
.venv/bin/pip install --upgrade pip
Requirement already satisfied: pip in ./.venv/lib/python3.9/site-packages (21.1.3)
Collecting pip
  Using cached pip-21.2.4-py3-none-any.whl (1.6 MB)
Installing collected packages: pip
  Attempting uninstall: pip
    Found existing installation: pip 21.1.3
    Uninstalling pip-21.1.3:
      Successfully uninstalled pip-21.1.3
Successfully installed pip-21.2.4
.venv/bin/pip install requests
Collecting requests
  Using cached requests-2.26.0-py2.py3-none-any.whl (62 kB)
Collecting certifi>=2017.4.17
  Using cached certifi-2021.5.30-py2.py3-none-any.whl (145 kB)
Collecting urllib3<1.27,>=1.21.1
  Using cached urllib3-1.26.6-py2.py3-none-any.whl (138 kB)
Collecting idna<4,>=2.5
  Using cached idna-3.2-py3-none-any.whl (59 kB)
Collecting charset-normalizer~=2.0.0
  Using cached charset_normalizer-2.0.4-py3-none-any.whl (36 kB)
Installing collected packages: urllib3, idna, charset-normalizer, certifi, requests
Successfully installed certifi-2021.5.30 charset-normalizer-2.0.4 idna-3.2 requests-2.26.0 urllib3-1.26.6
.venv/bin/python3 test/integration/local_lambda/end-to-end-test.py
[+] Building 11.1s (8/8) FINISHED
 => [internal] load build definition from Dockerfile-allinone                                                                                0.0s
 => => transferring dockerfile: 217B                                                                                0.0s
 => [internal] load .dockerignore                                                                                0.0s
 => => transferring context: 2B                                                                                0.0s
 => [internal] load metadata for public.ecr.aws/lambda/python:3.8                                                                                11.0s
 => [1/3] FROM public.ecr.aws/lambda/python:3.8@sha256:af98ec7625cc27f3efb189a753f57be48d4bedf4f558770157f3651e8bcb56a6                                                                                0.0s
 => [internal] load build context                                                                                0.0s
 => => transferring context: 1.71kB                                                                                0.0s
 => CACHED [2/3] WORKDIR /var/task                                                                                0.0s
 => CACHED [3/3] COPY ./ ./                                                                                0.0s
 => exporting to image                                                                                0.0s
 => => exporting layers                                                                                0.0s
 => => writing image sha256:e26aedd62dcec294fd7314bed8482bb9073623c1c2ff2a005eb6ac1bb6740d36                                                                                0.0s
 => => naming to docker.io/library/aws-lambda-local:testing                                                                                0.0s
0a1ac6973c0b3af7da123e9b4b83c15a94030dd64b51a224ad38a416bd082443
Ee33c68dd37c9e05bf78dc5a9ac4c717dd4dff152d8253c906c7ad39679796654
.635983bf9fe8d2eaef56cb90ed5a1716992fd883da68d62bacffc42e81f534ca
.707bea10bf31192a7b0e7a98fa07fa983607207a5c47461c11a5c66575b10b85
.61c45528518d5d528b8b49bc548de994c212504850f44ffb920f112ce33d4b19
.d8c0d8aed403fbe34af3199903fcd365a0583a4d84cf7f30e254ca13cedf9b97
.docker: Error response from daemon: Conflict. The container name "/testing" is already in use by container "d8c0d8aed403fbe34af3199903fcd365a0583a4d84cf7f30e254ca13cedf9b97". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.
.b3fc2c0bdd914fc3d29efbc3992c2a213fb5cc08be97d5c5804144b45c4d5fb5
.docker: Error response from daemon: Conflict. The container name "/testing" is already in use by container "d8c0d8aed403fbe34af3199903fcd365a0583a4d84cf7f30e254ca13cedf9b97". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.
.envvarcheck
testing
timeout
exception
Error response from daemon: conflict: unable to remove repository reference "aws-lambda-local:testing" (must force) - container 635983bf9fe8 is using its referenced image e26aedd62dce
[+] Building 0.4s (8/8) FINISHED
 => [internal] load build definition from Dockerfile-python36                                                                                0.0s
 => => transferring dockerfile: 217B                                                                                0.0s
 => [internal] load .dockerignore                                                                                0.0s
 => => transferring context: 2B                                                                                0.0s
 => [internal] load metadata for public.ecr.aws/lambda/python:3.8                                                                                0.3s
 => [internal] load build context                                                                                0.0s
 => => transferring context: 107B                                                                                0.0s
 => [1/3] FROM public.ecr.aws/lambda/python:3.8@sha256:af98ec7625cc27f3efb189a753f57be48d4bedf4f558770157f3651e8bcb56a6                                                                                0.0s
 => CACHED [2/3] WORKDIR /var/task                                                                                0.0s
 => CACHED [3/3] COPY ./ ./                                                                                0.0s
 => exporting to image                                                                                0.0s
 => => exporting layers                                                                                0.0s
 => => writing image sha256:e26aedd62dcec294fd7314bed8482bb9073623c1c2ff2a005eb6ac1bb6740d36                                                                                0.0s
 => => naming to docker.io/library/aws-lambda-local:testing-py36                                                                                0.0s
cb043dfe61f2b6f6292495ec60baf90faeebe0bd55d0c0e7398dd3ceb79dfbfb
.b59248a9811888eec24fa94bf6990cbccddc2d0176337f65b5f591c022e0992a
.testing
assert-overwritten
Untagged: aws-lambda-local:testing-py36

======================================================================
ERROR: test_context_get_remaining_time_in_default_deadline (__main__.TestEndToEnd)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/path/to/aws-lambda-runtime-interface-emulator/.venv/lib/python3.9/site-packages/urllib3/connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "/path/to/aws-lambda-runtime-interface-emulator/.venv/lib/python3.9/site-packages/urllib3/connectionpool.py", line 445, in _make_request
    six.raise_from(e, None)
  File "<string>", line 3, in raise_from
  File "/path/to/aws-lambda-runtime-interface-emulator/.venv/lib/python3.9/site-packages/urllib3/connectionpool.py", line 440, in _make_request
    httplib_response = conn.getresponse()
  File<EMAIL_ADDRESS>line 1349, in getresponse
    response.begin()
  File<EMAIL_ADDRESS>line 316, in begin
    version, status, reason = self._read_status()
  File<EMAIL_ADDRESS>line 285, in _read_status
    raise RemoteDisconnected("Remote end closed connection without"
http.client.RemoteDisconnected: Remote end closed connection without response

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/path/to/aws-lambda-runtime-interface-emulator/.venv/lib/python3.9/site-packages/requests/adapters.py", line 439, in send
    resp = conn.urlopen(
  File "/path/to/aws-lambda-runtime-interface-emulator/.venv/lib/python3.9/site-packages/urllib3/connectionpool.py", line 755, in urlopen
    retries = retries.increment(
  File "/path/to/aws-lambda-runtime-interface-emulator/.venv/lib/python3.9/site-packages/urllib3/util/retry.py", line 532, in increment
    raise six.reraise(type(error), error, _stacktrace)
  File "/path/to/aws-lambda-runtime-interface-emulator/.venv/lib/python3.9/site-packages/urllib3/packages/six.py", line 769, in reraise
    raise value.with_traceback(tb)
  File "/path/to/aws-lambda-runtime-interface-emulator/.venv/lib/python3.9/site-packages/urllib3/connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "/path/to/aws-lambda-runtime-interface-emulator/.venv/lib/python3.9/site-packages/urllib3/connectionpool.py", line 445, in _make_request
    six.raise_from(e, None)
  File "<string>", line 3, in raise_from
  File "/path/to/aws-lambda-runtime-interface-emulator/.venv/lib/python3.9/site-packages/urllib3/connectionpool.py", line 440, in _make_request
    httplib_response = conn.getresponse()
  File<EMAIL_ADDRESS>line 1349, in getresponse
    response.begin()
  File<EMAIL_ADDRESS>line 316, in begin
    version, status, reason = self._read_status()
  File<EMAIL_ADDRESS>line 285, in _read_status
    raise RemoteDisconnected("Remote end closed connection without"
urllib3.exceptions.ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/path/to/aws-lambda-runtime-interface-emulator/test/integration/local_lambda/end-to-end-test.py", line 142, in test_context_get_remaining_time_in_default_deadline
    r = requests.post("http://localhost:9006/2015-03-31/functions/function/invocations", json={})
  File "/path/to/aws-lambda-runtime-interface-emulator/.venv/lib/python3.9/site-packages/requests/api.py", line 117, in post
    return request('post', url, data=data, json=json, **kwargs)
  File "/path/to/aws-lambda-runtime-interface-emulator/.venv/lib/python3.9/site-packages/requests/api.py", line 61, in request
    return session.request(method=method, url=url, **kwargs)
  File "/path/to/aws-lambda-runtime-interface-emulator/.venv/lib/python3.9/site-packages/requests/sessions.py", line 542, in request
    resp = self.send(prep, **send_kwargs)
  File "/path/to/aws-lambda-runtime-interface-emulator/.venv/lib/python3.9/site-packages/requests/sessions.py", line 655, in send
    r = adapter.send(request, **kwargs)
  File "/path/to/aws-lambda-runtime-interface-emulator/.venv/lib/python3.9/site-packages/requests/adapters.py", line 498, in send
    raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))

----------------------------------------------------------------------
Ran 11 tests in 43.669s

FAILED (errors=1)
make: *** [integ-tests-with-docker] Error 1

Second Invocation
$ make integ-tests
python3 -m venv .venv
.venv/bin/pip install --upgrade pip
Requirement already satisfied: pip in ./.venv/lib/python3.9/site-packages (21.2.4)
.venv/bin/pip install requests
Requirement already satisfied: requests in ./.venv/lib/python3.9/site-packages (2.26.0)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in ./.venv/lib/python3.9/site-packages (from requests) (1.26.6)
Requirement already satisfied: charset-normalizer~=2.0.0 in ./.venv/lib/python3.9/site-packages (from requests) (2.0.4)
Requirement already satisfied: certifi>=2017.4.17 in ./.venv/lib/python3.9/site-packages (from requests) (2021.5.30)
Requirement already satisfied: idna<4,>=2.5 in ./.venv/lib/python3.9/site-packages (from requests) (3.2)
.venv/bin/python3 test/integration/local_lambda/end-to-end-test.py
[+] Building 1.1s (8/8) FINISHED
 => [internal] load build definition from Dockerfile-allinone                                                                                0.0s
 => => transferring dockerfile: 217B                                                                                0.0s
 => [internal] load .dockerignore                                                                                0.0s
 => => transferring context: 2B                                                                                0.0s
 => [internal] load metadata for public.ecr.aws/lambda/python:3.8                                                                                1.0s
 => [1/3] FROM public.ecr.aws/lambda/python:3.8@sha256:af98ec7625cc27f3efb189a753f57be48d4bedf4f558770157f3651e8bcb56a6                                                                                0.0s
 => [internal] load build context                                                                                0.0s
 => => transferring context: 107B                                                                                0.0s
 => CACHED [2/3] WORKDIR /var/task                                                                                0.0s
 => CACHED [3/3] COPY ./ ./                                                                                0.0s
 => exporting to image                                                                                0.0s
 => => exporting layers                                                                                0.0s
 => => writing image sha256:e26aedd62dcec294fd7314bed8482bb9073623c1c2ff2a005eb6ac1bb6740d36                                                                                0.0s
 => => naming to docker.io/library/aws-lambda-local:testing                                                                                0.0s
docker: Error response from daemon: Conflict. The container name "/remainingtimedefault" is already in use by container "0a1ac6973c0b3af7da123e9b4b83c15a94030dd64b51a224ad38a416bd082443". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.
.docker: Error response from daemon: Conflict. The container name "/remainingtimeten" is already in use by container "e33c68dd37c9e05bf78dc5a9ac4c717dd4dff152d8253c906c7ad39679796654". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.
.docker: Error response from daemon: Conflict. The container name "/remainingtimethree" is already in use by container "635983bf9fe8d2eaef56cb90ed5a1716992fd883da68d62bacffc42e81f534ca". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.
.6e0a5ba623f331fcd11891836d395c7a899813b45031e3079470c9d8b17236b4
.43040af058d655d5a5953e6c55dedf69f83b2f09ec7e45243757371c377a6779
.b640cd2ee547ab8745cefb0abaad543c58cfd7ee750220207234c08858f5b0ea
.docker: Error response from daemon: Conflict. The container name "/testing" is already in use by container "b640cd2ee547ab8745cefb0abaad543c58cfd7ee750220207234c08858f5b0ea". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.
.fc8077999ffa686ccec9a5f940d1c0ccdb44bab8eb0f43da0db7d030fc3b976e
.docker: Error response from daemon: Conflict. The container name "/testing" is already in use by container "b640cd2ee547ab8745cefb0abaad543c58cfd7ee750220207234c08858f5b0ea". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.
.envvarcheck
testing
timeout
exception
Error response from daemon: conflict: unable to remove repository reference "aws-lambda-local:testing" (must force) - container 635983bf9fe8 is using its referenced image e26aedd62dce
[+] Building 0.4s (8/8) FINISHED
 => [internal] load build definition from Dockerfile-python36                                                                                0.0s
 => => transferring dockerfile: 217B                                                                                0.0s
 => [internal] load .dockerignore                                                                                0.0s
 => => transferring context: 2B                                                                                0.0s
 => [internal] load metadata for public.ecr.aws/lambda/python:3.8                                                                                0.3s
 => [1/3] FROM public.ecr.aws/lambda/python:3.8@sha256:af98ec7625cc27f3efb189a753f57be48d4bedf4f558770157f3651e8bcb56a6                                                                                0.0s
 => [internal] load build context                                                                                0.0s
 => => transferring context: 107B                                                                                0.0s
 => CACHED [2/3] WORKDIR /var/task                                                                                0.0s
 => CACHED [3/3] COPY ./ ./                                                                                0.0s
 => exporting to image                                                                                0.0s
 => => exporting layers                                                                                0.0s
 => => writing image sha256:e26aedd62dcec294fd7314bed8482bb9073623c1c2ff2a005eb6ac1bb6740d36                                                                                0.0s
 => => naming to docker.io/library/aws-lambda-local:testing-py36                                                                                0.0s
45bb379b15c6edec3bfc81336e389c1e5224c5ee221219fcdd6706068c6168dc
.1bf6581903f9aa1a0852c73f5f6788fa5856de21034136fe701cc8ff7521ae3f
.testing
assert-overwritten
Untagged: aws-lambda-local:testing-py36

----------------------------------------------------------------------
Ran 11 tests in 35.430s

OK

Fixed by the linked PR. Let us know if you're still experiencing these issues.


Binding custom action on Enter key

After looking through the docs (and the ProseMirror docs) I can't seem to find a clear answer on how to override the behaviour of the Enter key (or any other specific key for that matter). Is there a simple way to handle this?
Cheers.

I had the same issue and was able to perform a custom action on enter using the following
https://github.com/iliyaZelenko/tiptap-vuetify/issues/100#issuecomment-557947715


install problem on ubuntu

hi,
i use ubuntu with rustc 1.2.0-nightly (764877650 2015-06-12)
and qt: http://download.qt.io/official_releases/qt/5.4/5.4.2/qt-opensource-linux-x64-5.4.2.run
any idea what is missing causing the build to fail?
$ cargo build
...
Compiling qmlrs v0.0.1 (file:///home/arnold/qmlrs)
failed to run custom build command for `qmlrs v0.0.1 (file:///home/arnold/qmlrs)`
Process didn't exit successfully: `/home/arnold/qmlrs/target/debug/build/qmlrs-0a6bb7a1b746b935/build-script-build` (exit code: 101)
--- stdout
cargo:rustc-link-lib=static=qmlrswrapper
cargo:rustc-link-lib=dylib=stdc++
cargo:rustc-link-search=native=/home/arnold/qmlrs/ext/libqmlrswrapper/build

--- stderr
thread '<main>' panicked at 'called `Result::unwrap()` on an `Err` value: "`\"pkg-config\" \"--libs\" \"--cflags\" \"Qt5Core Qt5Gui Qt5Qml Qt5Quick\"` did not exit successfully: exit code: 1\n--- stderr\nPackage Qt5Core was not found in the pkg-config search path.\nPerhaps you should add the directory containing `Qt5Core.pc\'\nto the PKG_CONFIG_PATH environment variable\nNo package \'Qt5Core\' found\nPackage Qt5Gui was not found in the pkg-config search path.\nPerhaps you should add the directory containing `Qt5Gui.pc\'\nto the PKG_CONFIG_PATH environment variable\nNo package \'Qt5Gui\' found\nPackage Qt5Qml was not found in the pkg-config search path.\nPerhaps you should add the directory containing `Qt5Qml.pc\'\nto the PKG_CONFIG_PATH environment variable\nNo package \'Qt5Qml\' found\nPackage Qt5Quick was not found in the pkg-config search path.\nPerhaps you should add the directory containing `Qt5Quick.pc\'\nto the PKG_CONFIG_PATH environment variable\nNo package \'Qt5Quick\' found\n"', /home/rustbuild/src/rust-buildbot/slave/nightly-dist-rustc-linux/build/src/libcore/result.rs:731

you need to set:
export PKG_CONFIG_PATH=/home/arnold/Qt5.4.2/5.4/gcc_64/lib/pkgconfig

after that this error shows up:
src/lib.rs:59:1: 59:10 error: The attribute `packed` is currently unknown to the compiler and may have meaning added to it in the future
src/lib.rs:59 #[packed]
              ^~~~~~~~~
src/lib.rs:59:1: 59:10 help: add #![feature(custom_attribute)] to the crate attributes to enable
error: aborting due to previous error
Could not compile `qmlrs`.

you need to set this env variable:
export PKG_CONFIG_PATH=/home/Arnold/Qt5.4.2/5.4/gcc_64/lib/pkgconfig

after that i get this error:
src/lib.rs:59:1: 59:10 error: The attribute packed is currently unknown to the compiler and may have meaning added to it in the future
src/lib.rs:59 #[packed]
^~~~~~~~~
src/lib.rs:59:1: 59:10 help: add #![feature(custom_attribute)] to the crate attributes to enable
error: aborting due to previous error
Could not compile qmlrs.

after that i added on top of src/lib.rs:
#![feature(custom_attribute)]

results in this error:
Compiling qmlrs v0.0.1 (file:///home/Arnold/qmlrs)
src/lib.rs:61:1: 61:10 warning: unused attribute, #[warn(unused_attributes)] on by default
src/lib.rs:61 #[packed]
              ^~~~~~~~~
error: could not find native static library `qmlrswrapper`, perhaps an -L flag is missing?
Could not compile `qmlrs`.

Make sure you've installed all relevant Qt packages (I do not use ubuntu, but you should be able to compile other Qt/QML projects examples from source).
And if you use Rust stable, you do not neer "#![feature(custom_attribute)]".
Cheers,
Ismail

i installed: http://download.qt.io/official_releases/qt/5.4/5.4.2/qt-opensource-linux-x64-5.4.2.run
this also includes qml... any idea?

Nope no idea. And this problem is not related to this project at all, but on howto install packages on ubuntu. Ask someone on the ubuntu forums etc. They have a wonderful and helpful community.
cc: @cyndis  Please close this issue.
Cheers,
Ismail

what package is missing to be installed?

You are funny, I can only repeat myself: "this problem is not related to this project at all, but on howto install packages on ubuntu. Ask someone on the ubuntu forums etc. "
Obviously, you won't get any help here.
Have a look here for instance https://askubuntu.com/ and consult you favorite search engine before.

i dont talk to you funny monkey!

Are you talking to me? ;-)
Nope, it is not the task of a compiler to tell you which ubuntu packages you need to install.
You could easily search for that yourself. And after that, you could help others and contribute to this project by adding it to the documentation.
Besides that: Your last two error messages aren't even related to missing packages. But as I've already told you they are related to using rust nightly. If you use Rust stable they'll disappear.
Sorry, for the harsh tone and good luck to you (probably on askubuntu.com)

fixed, here the solution:
1.) set CMAKE_PREFIX_PATH to make cmake happy
$ export CMAKE_PREFIX_PATH=/home/Arnold/Qt5.4.2/5.4/gcc_64
2.) install opengl
$ sudo apt-get install libglu1-mesa-dev
3.) set LD_LIBRARY_PATH so that it finds libicui18n.so.53
$ export LD_LIBRARY_PATH=/home/Arnold/Qt5.4.2/5.4/gcc_64/lib/

Had the same issue, same resolution with minor changes for local environment and qt version.
I agree this should be part of the documentation.
This issue is related to this project as it has to do with dependency installation. The associated environment variable changes are not part of standard ubuntu package installation, and the project error message is quasi-tangential to this solution.
Note: If Qt is installed from source rather than using the installer like this the solution is probably different as well.

On Ubuntu 16.04 with stock Qt5 install, you only need to install a few non-default packages:
sudo apt install qt5-qmake qtdeclarative5-dev qtquick1-5-dev qml-module-qtquick-controls

On Ubuntu 16.04 with stock Qt5 install, you only need to install a few non-default packages:
sudo apt install qt5-qmake qtdeclarative5-dev qtquick1-5-dev qml-module-qtquick-controls

It would be nice to add this to the README, so people can get started quickly.


ng serve --aot serves stale app

OS?

Windows 7, 8 or 10. Linux (which distribution). Mac OSX (Yosemite? El Capitan?)

El Capitan
Versions.

Please run ng --version. If there's nothing outputted, please run in a Terminal: node --version and paste the result here:

beta.17 (experimental)
Repro steps.

Was this an app that wasn't created using the CLI? What change did you do on your code? etc.

See this commit: https://github.com/jeffbcross/cli-aot-route-bug/commit/85bd5c6caec557344961a181987c797598d570d2
I just added a route config and a couple of components (though I don't think this is a router-specific issue).

Serve the app using ng serve --aot
App should work as expected
Change a route config in src/app/app.module.ts (i.e. set homeRoute.component to ItemsComponent
When page refreshes automatically, the old config will still be present (also happens after manually refreshing)
Make any change to app.module.ts and save (like add a newline at the end of file)
Page refreshes with configuration changes made in step 3.

Note: I added a commit after the repro commit that would cause AoT to break because I added a then() to console log after bootstrapModule. Just remove that callback to get rid of Tried to find bootstrap code, but could not. message.

Closing this as deprecated. We cannot reproduce this and the webpack plugin has improved a lot in the last 3 months.

I'm still suffering this on beta.30.

Still the same problem:
@angular/cli: 1.1.0
node: 6.11.0
os: win32 x64
@angular/animations: 4.2.5
@angular/common: 4.2.5
@angular/compiler: 4.2.5
@angular/core: 4.2.5
@angular/forms: 4.2.5
@angular/http: 4.2.5
@angular/platform-browser: 4.2.5
@angular/platform-browser-dynamic: 4.2.5
@angular/router: 4.2.5
@angular/cli: 1.1.0
@angular/compiler-cli: 4.2.5
@angular/language-service: 4.2.5


ci: splitted test file

This MR aligns workflows with our other project, now tests are in a single file and are reused

:tada: This PR is included in version 4.0.0-next.1 :tada:
The release is available on:

npm package (@next dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Fix conflict with #288 and #290

Oops, it appears the two pull requests #288 and #290 changed details about the blend mode that weren't compatible with each other.
This is just a quick fix to that. :)

Ta mate


Inaccurate version bounds in  .cabal file (lower-bound on base)

The lower bound ought to be  base >= 4.8
/opt/ghc/7.8.4/bin/ghc --make -fbuilding-cabal-package -O -static -dynamic-too -dynosuf dyn_o -dynhisuf dyn_hi -outputdir dist/dist-sandbox-30297d7d/build -odir dist/dist-sandbox-30297d7d/build -hidir dist/dist-sandbox-30297d7d/build -stubdir dist/dist-sandbox-30297d7d/build -i -idist/dist-sandbox-30297d7d/build -isrc -idist/dist-sandbox-30297d7d/build/autogen -Idist/dist-sandbox-30297d7d/build/autogen -Idist/dist-sandbox-30297d7d/build -optP-include -optPdist/dist-sandbox-30297d7d/build/autogen/cabal_macros.h -package-name ip-0.4 -hide-all-packages -no-user-package-db -package-db /tmp/extra75074445823/.cabal-sandbox/x86_64-linux-ghc-7.8.4-packages.conf.d -package-db dist/dist-sandbox-30297d7d/package.conf.inplace -package-id aeson-<IP_ADDRESS>-55adee13f64d5a121839b92abd9cd782 -package-id attoparsec-<IP_ADDRESS>-dd48735c1671ecd121b11547239c8fb6 -package-id base-<IP_ADDRESS>-bfd89587617e381ae01b8dd7b6c7f1c1 -package-id bytestring-<IP_ADDRESS>-d6f1d17d717e8652498cab8269a0acd5 -package-id hashable-<IP_ADDRESS>-4943941978e508fcb54cc6c596d93643 -package-id text-<IP_ADDRESS>-9dbf46990d4d2cda16d7a4c012142d29 -XHaskell2010 Net.Mac Net.Mac.Text Net.Mac.ByteString.Char8 Net.IPv4 Net.IPv4.Text Net.IPv4.ByteString.Char8 Net.Internal -Wall -O2
[1 of 7] Compiling Net.Internal     ( src/Net/Internal.hs, dist/dist-sandbox-30297d7d/build/Net/Internal.o )
[2 of 7] Compiling Net.IPv4         ( src/Net/IPv4.hs, dist/dist-sandbox-30297d7d/build/Net/IPv4.o )

src/Net/IPv4.hs:73:53:
    Not in scope: ‘<*’
    Perhaps you meant one of these:
      ‘*’ (imported from Prelude), ‘<>’ (imported from Data.Monoid),
      ‘**’ (imported from Prelude)

src/Net/IPv4.hs:90:34:
    Not in scope: ‘<*’
    Perhaps you meant one of these:
      ‘*’ (imported from Prelude), ‘<>’ (imported from Data.Monoid),
      ‘**’ (imported from Prelude)

src/Net/IPv4.hs:97:39:
    Not in scope: ‘<*’
    Perhaps you meant one of these:
      ‘*’ (imported from Prelude), ‘<>’ (imported from Data.Monoid),
      ‘**’ (imported from Prelude)

src/Net/IPv4.hs:104:3:
    Not in scope: ‘<$>’
    Perhaps you meant one of these:
      ‘<>’ (imported from Data.Monoid),
      ‘AT.<?>’ (imported from Data.Attoparsec.Text)

src/Net/IPv4.hs:105:3:
    Not in scope: ‘<*’
    Perhaps you meant one of these:
      ‘*’ (imported from Prelude), ‘<>’ (imported from Data.Monoid),
      ‘**’ (imported from Prelude)

src/Net/IPv4.hs:106:3:
    Not in scope: ‘<*>’
    Perhaps you meant one of these:
      ‘<>’ (imported from Data.Monoid),
      ‘AT.<?>’ (imported from Data.Attoparsec.Text),
      ‘AT.<*.’ (imported from Data.Attoparsec.Text)

src/Net/IPv4.hs:117:3:
    Not in scope: ‘<$>’
    Perhaps you meant one of these:
      ‘<>’ (imported from Data.Monoid),
      ‘AT.<?>’ (imported from Data.Attoparsec.Text)

src/Net/IPv4.hs:118:3:
    Not in scope: ‘<*’
    Perhaps you meant one of these:
      ‘*’ (imported from Prelude), ‘<>’ (imported from Data.Monoid),
      ‘**’ (imported from Prelude)

src/Net/IPv4.hs:119:3:
    Not in scope: ‘<*>’
    Perhaps you meant one of these:
      ‘<>’ (imported from Data.Monoid),
      ‘AT.<?>’ (imported from Data.Attoparsec.Text),
      ‘AT.<*.’ (imported from Data.Attoparsec.Text)

src/Net/IPv4.hs:120:3:
    Not in scope: ‘<*’
    Perhaps you meant one of these:
      ‘*’ (imported from Prelude), ‘<>’ (imported from Data.Monoid),
      ‘**’ (imported from Prelude)

src/Net/IPv4.hs:121:3:
    Not in scope: ‘<*>’
    Perhaps you meant one of these:
      ‘<>’ (imported from Data.Monoid),
      ‘AT.<?>’ (imported from Data.Attoparsec.Text),
      ‘AT.<*.’ (imported from Data.Attoparsec.Text)

src/Net/IPv4.hs:122:3:
    Not in scope: ‘<*’
    Perhaps you meant one of these:
      ‘*’ (imported from Prelude), ‘<>’ (imported from Data.Monoid),
      ‘**’ (imported from Prelude)

src/Net/IPv4.hs:123:3:
    Not in scope: ‘<*>’
    Perhaps you meant one of these:
      ‘<>’ (imported from Data.Monoid),
      ‘AT.<?>’ (imported from Data.Attoparsec.Text),
      ‘AT.<*.’ (imported from Data.Attoparsec.Text)

Thanks for pointing this out. I'll go ahead and fix this, and I'll try to add a few more appropriate bounds while I'm at it.

Fixed by https://github.com/andrewthad/haskell-ip/commit/af7ace239b29ec9e95001c30145ef4cd1b4f8db0


Spectrum cause the crash of iOS App , with Appcelerator platform

Hi, i'm using spectrum in one of my project , an iOS app developed with Appcelerator Platform. The picker is displayed by a simple webview and works perfectly.
My only problem is that when the "dragger" arrives on this sides of the picker the app crash

With no log i understand that it is difficult to understand what can crash the app. But i hope that the fact that the app crashes only on those two sides could be helpful. Thanks
UPDATE 1
The problem seems to occur when the touch is released out of the webview
UPDATE 2
In my case, maybe, it would be useful to be able to lock the drag-helper when it reaches the outer edges.

There is any option already implemented that can help me? Thank you

Without a log from the crash it's hard to figure out how to fix it.  Is this still a problem?  Do you see any errors in a javascript console or from the app?


V3.0.0 + Errors

When trying to update the vhapi version to v3.0.0 or v3.1.0 I get errors when trying to start client / join world.
Both versions seem to give different issues.
Without changing anything from my setup in v2.0.4
updating to v3.0.0 I can start the client but when trying to join world I get the following crash:
[14:16:03] [Server thread/FATAL] [ne.mi.fm.DistExecutor/]: Detected unsafe referent usage, please view the code at TRANSFORMER/vhapi@3.0.0/xyz.iwolfking.vhapi.VHAPI.onLogin(VHAPI.java:97)
[14:16:03] [Server thread/ERROR] [ne.mi.ev.EventBus/EVENTBUS]: Exception caught during firing event: Unsafe Referent usage found in safe referent method
	Index: 27
	Listeners:
		0: HIGH
		1: ASM: class dev.architectury.event.forge.EventHandlerImplCommon event(Lnet/minecraftforge/event/entity/player/PlayerEvent$PlayerLoggedInEvent;)V
		2: NORMAL
		3: net.minecraftforge.eventbus.EventBus$$Lambda$4761/0x0000019437b97070@7406f8eb
		4: ASM: com.mrbysco.chunkymcchunkface.handler.PlayerHandler@4efcd3d1 onPlayerLogin(Lnet/minecraftforge/event/entity/player/PlayerEvent$PlayerLoggedInEvent;)V
		5: net.minecraftforge.eventbus.EventBus$$Lambda$4761/0x0000019437b97070@76d09f64
		6: ASM: class com.github.alexthe666.alexsmobs.event.ServerEvents onPlayerLoggedIn(Lnet/minecraftforge/event/entity/player/PlayerEvent$PlayerLoggedInEvent;)V
		7: ASM: net.minecraftforge.common.ForgeInternalHandler@4ea5627a playerLogin(Lnet/minecraftforge/event/entity/player/PlayerEvent$PlayerLoggedInEvent;)V
		8: ASM: class dev.architectury.networking.forge.NetworkManagerImpl loggedIn(Lnet/minecraftforge/event/entity/player/PlayerEvent$PlayerLoggedInEvent;)V
		9: net.minecraftforge.eventbus.EventBus$$Lambda$4761/0x0000019437b97070@407a705f
		10: ASM: class com.aaronbarnaby.grownupmod.events.DataPullEvents onPlayerJoin(Lnet/minecraftforge/event/entity/player/PlayerEvent$PlayerLoggedInEvent;)V
		11: net.minecraftforge.eventbus.EventBus$$Lambda$4761/0x0000019437b97070@35889055
		12: ASM: class iskallia.vault.event.PlayerEvents onInvalidConfigs(Lnet/minecraftforge/event/entity/player/PlayerEvent$PlayerLoggedInEvent;)V
		13: ASM: class iskallia.vault.event.PlayerEvents onPatreonLoad(Lnet/minecraftforge/event/entity/player/PlayerEvent$PlayerLoggedInEvent;)V
		14: ASM: class iskallia.vault.event.SpecialEvents joiningWorldEvent(Lnet/minecraftforge/event/entity/player/PlayerEvent$PlayerLoggedInEvent;)V
		15: ASM: class iskallia.vault.util.PlayerResearchTransferUtil onPlayerLogin(Lnet/minecraftforge/event/entity/player/PlayerEvent$PlayerLoggedInEvent;)V
		16: ASM: class iskallia.vault.util.damage.PlayerDamageHelper on(Lnet/minecraftforge/event/entity/player/PlayerEvent$PlayerLoggedInEvent;)V
		17: ASM: class iskallia.vault.world.data.AchievementData onPlayerLoggedIn(Lnet/minecraftforge/event/entity/player/PlayerEvent$PlayerLoggedInEvent;)V
		18: ASM: class iskallia.vault.world.data.QuestStatesData onPlayerJoin(Lnet/minecraftforge/event/entity/player/PlayerEvent$PlayerLoggedInEvent;)V
		19: ASM: class iskallia.vault.world.data.GodAltarData onPlayerLoggedIn(Lnet/minecraftforge/event/entity/player/PlayerEvent$PlayerLoggedInEvent;)V
		20: ASM: class iskallia.vault.world.data.BountyData onPlayerJoin(Lnet/minecraftforge/event/entity/player/PlayerEvent$PlayerLoggedInEvent;)V
		21: ASM: class iskallia.vault.world.data.PlayerTitlesData onPlayerLoggedIn(Lnet/minecraftforge/event/entity/player/PlayerEvent$PlayerLoggedInEvent;)V
		22: ASM: class iskallia.vault.world.data.ParadoxCrystalData onPlayerLoggedIn(Lnet/minecraftforge/event/entity/player/PlayerEvent$PlayerLoggedInEvent;)V
		23: ASM: vazkii.quark.content.tweaks.module.AutomaticRecipeUnlockModule@325d2cd0 onPlayerLoggedIn(Lnet/minecraftforge/event/entity/player/PlayerEvent$PlayerLoggedInEvent;)V
		24: ASM: top.theillusivec4.curios.common.event.CuriosEventHandler@2d2949bf playerLoggedIn(Lnet/minecraftforge/event/entity/player/PlayerEvent$PlayerLoggedInEvent;)V
		25: ASM: mekanism.common.CommonPlayerTracker@6a63c475 onPlayerLoginEvent(Lnet/minecraftforge/event/entity/player/PlayerEvent$PlayerLoggedInEvent;)V
		26: LOWEST
		27: net.minecraftforge.eventbus.EventBus$$Lambda$4761/0x0000019437b97070@768ae7af
java.lang.RuntimeException: Unsafe Referent usage found in safe referent method
	at LAYER PLUGIN/fmlcore@1.18.2-40.2.9/net.minecraftforge.fml.DistExecutor.validateSafeReferent(DistExecutor.java:254)
	at LAYER PLUGIN/fmlcore@1.18.2-40.2.9/net.minecraftforge.fml.DistExecutor.safeRunWhenOn(DistExecutor.java:121)
	at TRANSFORMER/vhapi@3.0.0/xyz.iwolfking.vhapi.VHAPI.onLogin(VHAPI.java:97)
	at MC-BOOTSTRAP/eventbus@5.0.7/net.minecraftforge.eventbus.EventBus.doCastFilter(EventBus.java:247)
	at MC-BOOTSTRAP/eventbus@5.0.7/net.minecraftforge.eventbus.EventBus.lambda$addListener$11(EventBus.java:239)
	at MC-BOOTSTRAP/eventbus@5.0.7/net.minecraftforge.eventbus.EventBus.post(EventBus.java:302)
	at MC-BOOTSTRAP/eventbus@5.0.7/net.minecraftforge.eventbus.EventBus.post(EventBus.java:283)
	at TRANSFORMER/forge@40.2.9/net.minecraftforge.event.ForgeEventFactory.firePlayerLoggedIn(ForgeEventFactory.java:833)
	at TRANSFORMER/minecraft@1.18.2/net.minecraft.server.players.PlayerList.placeNewPlayer(PlayerList.java:238)
	at TRANSFORMER/minecraft@1.18.2/net.minecraft.server.network.ServerLoginPacketListenerImpl.placeNewPlayer(ServerLoginPacketListenerImpl.java:138)
	at TRANSFORMER/minecraft@1.18.2/net.minecraft.server.network.ServerLoginPacketListenerImpl.handleAcceptedLogin(ServerLoginPacketListenerImpl.java:125)
	at TRANSFORMER/minecraft@1.18.2/net.minecraft.server.network.ServerLoginPacketListenerImpl.tick(ServerLoginPacketListenerImpl.java:69)
	at TRANSFORMER/minecraft@1.18.2/net.minecraft.network.Connection.tick(Connection.java:241)
	at TRANSFORMER/minecraft@1.18.2/net.minecraft.server.network.ServerConnectionListener.tick(ServerConnectionListener.java:143)
	at TRANSFORMER/minecraft@1.18.2/net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:916)
	at TRANSFORMER/minecraft@1.18.2/net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:842)
	at TRANSFORMER/minecraft@1.18.2/net.minecraft.client.server.IntegratedServer.tickServer(IntegratedServer.java:84)
	at TRANSFORMER/minecraft@1.18.2/net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:685)
	at TRANSFORMER/minecraft@1.18.2/net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:261)
	at java.base/java.lang.Thread.run(Thread.java:840)
[14:16:03] [Server thread/ERROR] [minecraft/ServerLoginPacketListenerImpl]: Couldn't place player in world
java.lang.RuntimeException: Unsafe Referent usage found in safe referent method
	at net.minecraftforge.fml.DistExecutor.validateSafeReferent(DistExecutor.java:254) ~[fmlcore-1.18.2-40.2.9.jar%2384!/:?] {}
	at net.minecraftforge.fml.DistExecutor.safeRunWhenOn(DistExecutor.java:121) ~[fmlcore-1.18.2-40.2.9.jar%2384!/:?] {}
	at xyz.iwolfking.vhapi.VHAPI.onLogin(VHAPI.java:97) ~[vault-hunters-api-1118899-5857191_mapped_official_1.18.2.jar%2391!/:3.0.0] {re:classloading}
	at net.minecraftforge.eventbus.EventBus.doCastFilter(EventBus.java:247) ~[eventbus-5.0.7.jar%2316!/:?] {}
	at net.minecraftforge.eventbus.EventBus.lambda$addListener$11(EventBus.java:239) ~[eventbus-5.0.7.jar%2316!/:?] {}
	at net.minecraftforge.eventbus.EventBus.post(EventBus.java:302) ~[eventbus-5.0.7.jar%2316!/:?] {}
	at net.minecraftforge.eventbus.EventBus.post(EventBus.java:283) ~[eventbus-5.0.7.jar%2316!/:?] {}
	at net.minecraftforge.event.ForgeEventFactory.firePlayerLoggedIn(ForgeEventFactory.java:833) ~[forge-1.18.2-40.2.9_mapped_official_1.18.2.jar%2379%2386!/:?] {re:classloading}
	at net.minecraft.server.players.PlayerList.placeNewPlayer(PlayerList.java:238) ~[forge-1.18.2-40.2.9_mapped_official_1.18.2.jar%2380!/:?] {re:mixin,re:classloading}
	at net.minecraft.server.network.ServerLoginPacketListenerImpl.placeNewPlayer(ServerLoginPacketListenerImpl.java:138) ~[forge-1.18.2-40.2.9_mapped_official_1.18.2.jar%2380!/:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.server.network.ServerLoginPacketListenerImpl.handleAcceptedLogin(ServerLoginPacketListenerImpl.java:125) ~[forge-1.18.2-40.2.9_mapped_official_1.18.2.jar%2380!/:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.server.network.ServerLoginPacketListenerImpl.tick(ServerLoginPacketListenerImpl.java:69) ~[forge-1.18.2-40.2.9_mapped_official_1.18.2.jar%2380!/:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.network.Connection.tick(Connection.java:241) ~[forge-1.18.2-40.2.9_mapped_official_1.18.2.jar%2380!/:?] {re:classloading}
	at net.minecraft.server.network.ServerConnectionListener.tick(ServerConnectionListener.java:143) ~[forge-1.18.2-40.2.9_mapped_official_1.18.2.jar%2380!/:?] {re:classloading}
	at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:916) ~[forge-1.18.2-40.2.9_mapped_official_1.18.2.jar%2380!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:assets/the_vault/the_vault.mixins.json:AccessorMinecraftServer,pl:mixin:APP:assets/the_vault/the_vault.mixins.json:MixinMinecraftServer,pl:mixin:A}
	at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:842) ~[forge-1.18.2-40.2.9_mapped_official_1.18.2.jar%2380!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:assets/the_vault/the_vault.mixins.json:AccessorMinecraftServer,pl:mixin:APP:assets/the_vault/the_vault.mixins.json:MixinMinecraftServer,pl:mixin:A}
	at net.minecraft.client.server.IntegratedServer.tickServer(IntegratedServer.java:84) ~[forge-1.18.2-40.2.9_mapped_official_1.18.2.jar%2380!/:?] {re:classloading,pl:runtimedistcleaner:A}
	at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:685) ~[forge-1.18.2-40.2.9_mapped_official_1.18.2.jar%2380!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:assets/the_vault/the_vault.mixins.json:AccessorMinecraftServer,pl:mixin:APP:assets/the_vault/the_vault.mixins.json:MixinMinecraftServer,pl:mixin:A}
	at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:261) ~[forge-1.18.2-40.2.9_mapped_official_1.18.2.jar%2380!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:assets/the_vault/the_vault.mixins.json:AccessorMinecraftServer,pl:mixin:APP:assets/the_vault/the_vault.mixins.json:MixinMinecraftServer,pl:mixin:A}
	at java.lang.Thread.run(Thread.java:840) [?:?] {}
[14:16:03] [Server thread/INFO] [minecraft/ServerGamePacketListenerImpl]: Dev lost connection: Invalid player data

With version v3.1.0 the crash happens when loading client.
java.lang.Exception: Mod Loading has failed
	at net.minecraftforge.logging.CrashReportExtender.dumpModLoadingCrashReport(CrashReportExtender.java:55) ~[forge-1.18.2-40.2.9_mapped_official_1.18.2.jar%2379%2386!/:?] {re:classloading}
	at net.minecraftforge.client.loading.ClientModLoader.completeModLoading(ClientModLoader.java:170) ~[forge-1.18.2-40.2.9_mapped_official_1.18.2.jar%2379%2386!/:?] {re:classloading,pl:runtimedistcleaner:A}
	at net.minecraft.client.Minecraft.lambda$new$1(Minecraft.java:557) ~[forge-1.18.2-40.2.9_mapped_official_1.18.2.jar%2380!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:ae2.mixins.json:PickColorMixin,pl:mixin:APP:ispawner-common.mixins.json:MixinMinecraftClient,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:assets/the_vault/the_vault.mixins.json:MixinMinecraft,pl:mixin:A,pl:runtimedistcleaner:A}
	at net.minecraft.Util.ifElse(Util.java:397) ~[forge-1.18.2-40.2.9_mapped_official_1.18.2.jar%2380!/:?] {re:classloading,re:mixin}
	at net.minecraft.client.Minecraft.lambda$new$2(Minecraft.java:551) ~[forge-1.18.2-40.2.9_mapped_official_1.18.2.jar%2380!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:ae2.mixins.json:PickColorMixin,pl:mixin:APP:ispawner-common.mixins.json:MixinMinecraftClient,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:assets/the_vault/the_vault.mixins.json:MixinMinecraft,pl:mixin:A,pl:runtimedistcleaner:A}
	at net.minecraft.client.gui.screens.LoadingOverlay.render(LoadingOverlay.java:135) ~[forge-1.18.2-40.2.9_mapped_official_1.18.2.jar%2380!/:?] {re:classloading,pl:runtimedistcleaner:A}
	at net.minecraft.client.renderer.GameRenderer.render(GameRenderer.java:879) ~[forge-1.18.2-40.2.9_mapped_official_1.18.2.jar%2380!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:assets/the_vault/the_vault.mixins.json:MixinGameRenderer,pl:mixin:A,pl:runtimedistcleaner:A}
	at net.minecraft.client.Minecraft.runTick(Minecraft.java:1046) ~[forge-1.18.2-40.2.9_mapped_official_1.18.2.jar%2380!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:ae2.mixins.json:PickColorMixin,pl:mixin:APP:ispawner-common.mixins.json:MixinMinecraftClient,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:assets/the_vault/the_vault.mixins.json:MixinMinecraft,pl:mixin:A,pl:runtimedistcleaner:A}
	at net.minecraft.client.Minecraft.run(Minecraft.java:665) ~[forge-1.18.2-40.2.9_mapped_official_1.18.2.jar%2380!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:ae2.mixins.json:PickColorMixin,pl:mixin:APP:ispawner-common.mixins.json:MixinMinecraftClient,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:assets/the_vault/the_vault.mixins.json:MixinMinecraft,pl:mixin:A,pl:runtimedistcleaner:A}
	at net.minecraft.client.main.Main.main(Main.java:205) ~[forge-1.18.2-40.2.9_mapped_official_1.18.2.jar%2380!/:?] {re:classloading,pl:runtimedistcleaner:A}
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] {}
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] {}
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] {}
	at java.lang.reflect.Method.invoke(Method.java:569) ~[?:?] {}
	at net.minecraftforge.fml.loading.targets.ForgeClientUserdevLaunchHandler.lambda$launchService$0(ForgeClientUserdevLaunchHandler.java:24) ~[fmlloader-1.18.2-40.2.9.jar%230!/:?] {}
	at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-9.1.3.jar%2317!/:?] {}
	at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) [modlauncher-9.1.3.jar%2317!/:?] {}
	at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) [modlauncher-9.1.3.jar%2317!/:?] {}
	at cpw.mods.modlauncher.Launcher.run(Launcher.java:106) [modlauncher-9.1.3.jar%2317!/:?] {}
	at cpw.mods.modlauncher.Launcher.main(Launcher.java:77) [modlauncher-9.1.3.jar%2317!/:?] {}
	at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) [modlauncher-9.1.3.jar%2317!/:?] {}
	at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) [modlauncher-9.1.3.jar%2317!/:?] {}
	at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:149) [bootstraplauncher-1.0.0.jar:?] {}

A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Thread: Render thread
Stacktrace:
	at net.minecraftforge.fml.DistExecutor.validateSafeReferent(DistExecutor.java:254) ~[fmlcore-1.18.2-40.2.9.jar%2384!/:?] {}
-- MOD vhapi --
Details:
	Caused by 0: java.lang.reflect.InvocationTargetException
		at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?] {}
		at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) ~[?:?] {}
		at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?] {}
		at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500) ~[?:?] {}
		at java.lang.reflect.Constructor.newInstance(Constructor.java:481) ~[?:?] {}
		at net.minecraftforge.fml.javafmlmod.FMLModContainer.constructMod(FMLModContainer.java:67) ~[javafmllanguage-1.18.2-40.2.9.jar%2381!/:?] {}
		at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$4(ModContainer.java:106) ~[fmlcore-1.18.2-40.2.9.jar%2384!/:?] {}
		at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804) ~[?:?] {}
		at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796) ~[?:?] {}
		at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?] {}
		at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) ~[?:?] {}
		at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) ~[?:?] {}
		at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[?:?] {}
		at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[?:?] {}

	Mod File: /C:/Users/Shadow/.gradle/caches/forge_gradle/deobf_dependencies/curse/maven/vault-hunters-api-1118899/5865552_mapped_official_1.18.2/vault-hunters-api-1118899-5865552_mapped_official_1.18.2.jar
	Failure message: VHAPI (vhapi) has failed to load correctly
		java.lang.reflect.InvocationTargetException: null
	Mod Version: 3.1.0
	Mod Issue URL: NOT PROVIDED
	Exception message: java.lang.RuntimeException: Unsafe Referent usage found in safe referent method
Stacktrace:
	at net.minecraftforge.fml.DistExecutor.validateSafeReferent(DistExecutor.java:254) ~[fmlcore-1.18.2-40.2.9.jar%2384!/:?] {}
	at net.minecraftforge.fml.DistExecutor.safeRunWhenOn(DistExecutor.java:121) ~[fmlcore-1.18.2-40.2.9.jar%2384!/:?] {}
	at xyz.iwolfking.vhapi.VHAPI.<init>(VHAPI.java:72) ~[vault-hunters-api-1118899-5865552_mapped_official_1.18.2.jar%2391!/:3.1.0] {re:classloading}
	at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?] {}
	at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) ~[?:?] {}
	at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?] {}
	at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500) ~[?:?] {}
	at java.lang.reflect.Constructor.newInstance(Constructor.java:481) ~[?:?] {}
	at net.minecraftforge.fml.javafmlmod.FMLModContainer.constructMod(FMLModContainer.java:67) ~[javafmllanguage-1.18.2-40.2.9.jar%2381!/:?] {}
	at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$4(ModContainer.java:106) ~[fmlcore-1.18.2-40.2.9.jar%2384!/:?] {}
	at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804) ~[?:?] {}
	at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796) ~[?:?] {}
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?] {}
	at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) ~[?:?] {}
	at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) ~[?:?] {}
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[?:?] {}
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[?:?] {}

What am I doing wrong that's causing this or is there a issue making these versions not usable?

Update:
May of actually fixed my own issue.  Typical that posting about it helps you identify where the issue might be.
I was running on Forge 40.2.9. (as per Vault Hunters modpack version)
however updating to Forget 40.2.21 seems to let v3.1.0 now run and connect to game.
Might be worth a breaking change notice on the version about that?

I tried updating forge version to 40.2.21 (previously was on VH version of 40.2.9)
Same error when I update to v3.0.0 and v3.1.0

First I have seen of this so far.
This has to do with some functionality to have certain code only run on client/server, but Forge is having an issue with it for some reason.
You shouldn't really be getting this error as I and many others don't have this issue but I will see if there is anything I can do here. Do you have any other additional mods?

I found the issue was down to:
DistExecutor.safeRunWhenOn(Dist.CLIENT, () -> () -> {
   MinecraftForge.EVENT_BUS.addListener(Client::onClientLogin);
});

I've replaced with
if (FMLEnvironment.dist == Dist.CLIENT) {
  MinecraftForge.EVENT_BUS.addListener(Client::onVHAPIProcessorEnd);
  MinecraftForge.EVENT_BUS.addListener(Client::onClientLogin);
}

this seems to fix the issue for me, also adding the onVHAPIProcessorEnd here to handle manual registering the config files when joining server, shame to have to manually register but it's a solution for now :).
I can only assume i'm having more issue as I'm adding into a mod and not as a simple datapack.
Either way I found a solution so all good :)

Thanks, glad you found a solution for now. I did originally have this more like that, but had ran into issues when actually going to use it on a server.
Not sure why you had this issue still though, this method has never been an issue for me.
If you are wanting to register some config files via mod, I may recommend looking at VHAPIProcessorUtils, you can register a file to be loaded, would just need the resource location to match the right path for the config you are loading
Wold's Standalone is a good example of this:
https://onedev.iwolfking.xyz/WoldsVaultsStandalone/~files/master/src/main/java/xyz/iwolfking/woldsvaults/events/SetupEvents.java
Or Scaling Bingo Seals:
https://github.com/iwolfking/ScalingBingoSeals/blob/master/src/main/java/xyz/iwolfking/scalingbingoseals/init/VHAPIIntegration.java


Added Departed Faker

@bodiam merging this pr.

awesome, thanks for letting me know!

awesome, thanks for letting me know!


Type Error in API Microsoft.Insights diagnosticSettings ( contrary to the documentation )

Hello,
As per the document here,
the property properties.eventHubAuthorizationRuleId in  Microsoft.Insights/diagnosticSettings API is "The resource Id for the event hub authorization rule." But this is not true. it is expecting authorization rule of  an eventhub namespace.
The description in the table needs to be corrected to match this which is a quick fix.  I would also suggest renaming the property from eventHubAuthorizationRuleId to eventHubNameSpaceAuthorizationRuleId if it possible so that the propert name itself is self explanatory.
The bug is found out as below when using bicep deployment :

resource diagnosticLogEventhub 'Microsoft.EventHub/namespaces/eventhubs@2021-06-01-preview' existing = {
  name: 'eventhubName'
}

resource diagnosticLogAuthRule 'Microsoft.EventHub/namespaces/eventhubs/authorizationRules@2021-06-01-preview' existing = {
  parent: diagnosticLogEventhub
  name: 'RootManageSharedAccessKey'
}

resource diagnosticSettings 'Microsoft.Insights/diagnosticSettings@2017-05-01-preview' = {
  name: 'apimDiagnosticSettings'
  scope: apim
  properties:{
    logs:[
      {
        enabled: true
        category: 'GatewayLogs'
      }
    ]
    eventHubName: diagnosticLogEventhub.name
    eventHubAuthorizationRuleId: diagnosticLogAuthRule.id
  }
}

The following BICEP snippet results in TYPE error when deploying.
 Please see https://aka.ms/DeployOperations for usage details.\\\",\\r\\n        \\\"details\\\": [\\r\\n          {\\r\\n            \\\"code\\\": \\\"BadRequest\\\",\\r\\n            \\\"message\\\": \\\"{\\\\r\\\\n  \\\\\\\"code\\\\\\\": \\\\\\\"BadRequest\\\\\\\",\\\\r\\\\n  \\\\\\\"message\\\\\\\": \\\\\\\"\\\\\\\\\\\\\\\"Resource type 'microsoft.eventhub/namespaces/eventhubs/authorizationrules' is invalid for property 'properties.eventHubAuthorizationRuleId'. Expected types are 'microsoft.servicebus/namespaces/authorizationrules', 'microsoft.eventhub/namespaces/authorizationrules'\\\\\\\\\\\\\\\"\\\\\\\"\\\\r\\\\n}\\\"\\r\\n          }\\r\\n        ]\\r\\n      }\\r\\n    ]\\r\\n  }\\r\\n}\"\r\n          }\r\n        ]\r\n      }\r\n    ]\r\n  }\r\n}"}]}}

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

ID: 07fc8414-3bff-03f8-fdca-f040eed71389
Version Independent ID: 8196bd5d-b265-fd62-59c4-2a97b34ebf69
Content: Resource Manager template samples for diagnostic settings - Azure Monitor
Content Source: articles/azure-monitor/essentials/resource-manager-diagnostic-settings.md
Service: azure-monitor
Sub-service: essentials
GitHub Login: @bwren
Microsoft Alias: bwren

@midhun-mohan Thanks for your feedback. I have raised issue with the respective team to update the diagnostic api. For your reference, here is the link.
For the property name change, I would recommend you to navigate here and share your feedback or suggestions directly with the responsible Azure feature team and clicking the vote button of your suggestion to raise visibility and priority on it.
As there are no further documentation changes, we will close the issue for now. If there are further questions , please revert and we will be glad to assist you.


Add support for SSH Tunnels to connect to MySQL

This allows users to connect to servers behind SSH tunnels since MySQL servers are sometimes behind firewalls for security reasons.

This PR hasn't been tested sufficiently, and might not be the best candidate for long-term inclusion, since it might introduce other issues. So I'm closing it.
Please feel free to merge/cherry pick on a later date if you have the opportunity to test it out in detail!


vi display is garbled

From @raymod2 on April 12, 2017 16:32

A brief description

When editing a file in bash using vi the screen becomes garbled.  This appears to happen when you first open a bash window.  If you change the window height vi starts working correctly until you open a new bash window.

Expected results

The screen displays the file correctly.

Actual results (with terminal output if applicable)

The screen is garbled.

Your Windows build number

Version 1703 (OS Build 15063.0)

Steps / All commands required to reproduce the error from a brand new installation

Open a bash window.  Right-click the title bar and select properties.  Click the "Layout" tab and set "Height" to 40 in the "Window Size" size section.  Click OK.  Close the bash window.  Open a new bash window (it should have a height of 40).  Now open a vi instance.  For example, type 'sudo visudo'.  The first thing you will notice is that line 1 is not visible.  Only lines 2 through 30 are displayed.  If you press the up arrow key to scroll to line 1 nothing will happen.  As you try to edit the file things get worse.  Press 'o' to insert a new line.  Now line 1 appears but it is labeled line 3.  The new line you have created is labeled line 4 (but it should be line 2).  The rest of the lines also have incorrect line numbers.  Start entering text (type "foo").  The 'f' appears in the top line (now labeled line 4) and the "oo" appears in the second line (now labeled line 5) but interspersed with text from another line.  As you can see everything is hopelessly garbled.

Strace of the failing command

Required packages and commands to install

See our contributing instructions for assistance.
Copied from original issue: Microsoft/WSL#1895

From @danieltanfh95 on April 13, 2017 3:49
I tested this. I do not have this problem.

From @zadjii-msft on April 13, 2017 16:29
@raymod2 Is this consistently repro'ing for you? I can't seem to replicate that behavior.
Is it possible that you made any changes to something like your .inputrc, infocmp or your TERM?

From @zadjii-msft on April 17, 2017 16:33
@raymod2 I tried installing vim-gtk3 and i still couldn't get this behavior to repro. Do you have any vim plugins installed that might be causing this?
What does your .vimrc look like?

From @raymod2 on April 14, 2017 14:14
Yes, I can reproduce it consistently.  I didn't touch any of those files or environment variables you mentioned.  I did install a few packages including gvim-gtk3 that might have changed something.

From @raymod2 on April 20, 2017 15:54
set lines=40
set columns=108
set nobackup
set nowritebackup
set whichwrap=      " do not wrap to next/previous line when using arrow keys
set nu              " show line numbers in the left column
set autoindent      " autoindent to the same level as the previous line
set copyindent      " autoindent copies structure of previous indent (prevents TABS)
set guioptions+=a   " selecting text automatically places it in the clipboard
set incsearch       " incremental search (find nearest match as you type search term)
set hlsearch        " highlight search terms
filetype plugin indent off  " suppress cindent and comments settings
set tags=./tags;    " search for 'tags' in parent directories of current file
" If only one tag matches jump directly to it, otherwise present a list of tags
map <C-]> g<C-]>
" Suppress pop-up dialog when file changes outside of VIM (print to status bar instead)
autocmd FileChangedShell * echohl WarningMsg | echo "File changed shell." | echohl None
" jump to the last position when reopening a file
autocmd BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif

From @raymod2 on April 20, 2017 16:3
The .vimrc does seem to be related to this issue.  I started with a fresh Windows installation and ran 'sudo vi /etc/sudoers' and there were no issues.  Then I created the .vimrc as above and ran the same command.  Now I am seeing issues similar, but not identical, to the above description.

From @raymod2 on May 22, 2017 20:53
@zadjii-msft - Were you able to reproduce this?

From @raymod2 on April 20, 2017 16:20
On another note, it seems bizarre that a command named 'visudo' would use 'nano' as the default editor instead of 'vi'!  I noticed that installing vim-gtk3 changes the default editor in 'visudo' from 'nano' to 'vim'.  But vim-gtk3 is not necessary to reproduce this issue if you use 'sudo vi /etc/sudoers' instead.

I was able to reproduce this issue by setting my console width to 100 and using the .vimrc settings given above. But I'm assuming this isn't actually a bug - it's just a matter of the columns property (set to 108) not actually matching the width of the display (set to 100 in my case). If I remove the columns setting from the .vimrc, or change my display width to match, then everything looks fine.
@raymod2: Could that have been your problem?

@j4james - It sounds like you might be on the right track.  I didn't mention it in the problem description but I do set my console window width to 100 columns.  I still think this is a bug.  The columns setting in .vimrc is used to set the default size of new gvim windows.  It should never conflict with the actual window size.  If you resize a window or the .vimrc is applied to a vim instance running in an existing window then the columns setting should adjust to the actual size.

@raymod2 - I did a bit more testing on a Linux box, and I think I see now what's happening. Some of the GUI terminal emulators automatically resize their window to match the number of columns specified in the .vimrc file. The Linux virtual console obviously can't do that, so it has the same kind of issues that you see in Windows.
In order for this to work as expected (assuming you're expecting the window to automatically resize), Windows would need to support a certain private escape sequence that vi is relying on to resize the screen.
ESC [ 8 ; <h> ; <w> t

Where <h> is the height of the screen (the number of rows), and <w> is the width (the number of columns). The only documentation I could find for this sequence was on the invisible-island website (search for "Window manipulation"). This is just one of a number of window manipulation sequences listed there.
I'm somewhat surprised vi isn't smart enough to detect that this sequence isn't supported, and if so reset the columns to the actual screen width rather than the requested size. But maybe it's more complicated than that.

It looks like \e[8;<h>;<w>t actually works now, so I'm gonna close this. Sorry for the delay, and thanks for the report!


Cannot write 2 events from same pubkey at the same time

ERROR:  duplicate key value violates unique constraint "pubkeytimeidx"
DETAIL:  Key (pubkey, created_at)=(, 10) already exists.

Is this really a bug? Why do you want to write two events at the same time?

Set metadata plus set contacts upon registration. What does it prevent?
Since I can set any time anyway, it's a rather useless "protection". Right
now I just add a second manually to the second event.
On Thu, Jun 9, 2022, 09:31 fiatjaf @.***> wrote:

Is this really a bug? Why do you want to write two events at the same time?
—
Reply to this email directly, view it on GitHub
https://github.com/fiatjaf/relayer/issues/2#issuecomment-1151123970, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AADAJPH45WI5B7L3PBA26ILVOHW3NANCNFSM5YIWHHLQ
.
You are receiving this because you authored the thread.Message ID:
@.***>

Yeah, you're right. I'll fix it.

Just tested this. Seems to be fine to publish multiple events from same pubkey with same created_at. Moving to close.


[BugFix] fix NPE if hostname can't be resolved

don't panic if hostname can't be resolved to ip address

Signed-off-by: Kevin Xiaohua Cai<EMAIL_ADDRESS>What type of PR is this：

[X] BugFix
[ ] Feature
[ ] Enhancement
[ ] Refactor
[ ] UT
[ ] Doc
[ ] Tool

Which issues of this PR fixes ：

Fixes #
Problem Summary(Required) ：

Checklist:

[ ] I have added test cases for my bug fix or my new feature
[ ] I have added user document for my new feature or new function

[FE PR Coverage Check]
:heart_eyes: pass : 4 / 4 (100.00%)
file detail

path
covered_line
new_line
coverage
not_covered_line_detail

:large_blue_circle:
com/starrocks/common/proc/FrontendsProcNode.java
4
4
100.00%
[]

starrocks_be_unittest succeeded.

starrocks_be_unittest succeeded.

need backport to branch-2.4 due to FQDN feature released since v2.4

[FE PR Coverage Check]
:heart_eyes: pass : 4 / 4 (100.00%)
file detail

path
covered_line
new_line
coverage
not_covered_line_detail

:large_blue_circle:
com/starrocks/common/proc/FrontendsProcNode.java
4
4
100.00%
[]

run starrocks_admit_test


Adding/removing a member does not trigger real-time update for user GUI

The user does not see the new organisation in his panel when added or still see it when removed with unauthorized errors appear.

In the latest version organizations are listed in an activity relying on a standard grid so that real-time updates are correctly performed.


DNSBL - Fix regex for domains starting with number

Fix for these cases: https://regex101.com/r/bvFdTx/1
Old regex: https://regex101.com/r/26kAMb/1

Merged, thanks!


Inpainting

https://www.reddit.com/r/StableDiffusion/comments/ww7qdl/applying_masks_to_the_img2img_generation_to/?utm_medium=android_app&utm_source=share
Author and other user(Doggettx) of this reddit thread came up with 2 lines code modification that adds a feature very similar to inpainting.
Author's code:

Doggettx code:

I think that GUI is also required for this feature since user will need to draw masks. This GUI can be a starting point of new GUI for this whole repo (if author agrees) and console terminal could be implemented inside separate panel in GUI.
On these two images dogs are different but woman's face is the same. On top image red mask is less transparent.
There are differences in parameters values in GUI: Left panel (Overlay alpha),  Right panel (Prompt)
Personally I think that results are fantastic - with this feature you can select parts of the image that you want to change and only them will be changed. It seems like inpainting feature from DALLE 2 to me.
There is another repo https://github.com/andreas128/RePaint with inpainting technique but it looks more complicated than 2 lines approach (plus time to create GUI) proposed here.
Preview images of inpainting GUI:

I agree that inpainting is a really fun feature. Because it works best when integrated into a GUI drawing application, I haven't written in support for it in dream.py. Will keep this issue open, and if there's lots of enthusiasm, I can add the feature in.

I agree with this feature, and i'm not strictly opposed to the GUI feature, but I think this feature should just start with image mask input (with color ID) so we can batch process more easily without gui requirements.
Also, It would be nice to invoke dream.py from another easily readable and modifiable batch.py that add many prompts, or iterate many images for the image2image.

Looking into this since inpaint.py and sample masks are included in the original repo.
It would be also neat if it's a png to detect transparent pixels and use those as a mask for one-stop-shopping
thus, use photopea, import image, erase some things, save it, then dream>funny hat -m /path/to/my/image.png

I'm doing a little code refactoring, and after that it will be quite easy to script multiple variations, prompts, etc. Appreciate any contributions to the inpainting, since I"m not all that familiar with what goes into an image mask. I thought it was just a black and white bitmap?

If building a GUI w/ Gradio, seems like they have a pretty easy interface to inpainting now: https://twitter.com/Gradio/status/1544780590846644224

I"m not all that familiar with what goes into an image mask. I thought it was just a black and white bitmap?
I think Mask is a float value from 0 to 1.

Looking more closely at two images of the GUI I can see that image mask consists of these parameters:
Right panel

Parameter: Mask. Type: Float. Range: 0.0 - 1.0

Left panel

Parameter: Brush strength. Type: ? (possibly float 0-1). Purpose: ? (possibly final "Mask" value is calculated as this formula:
MaskValue = MaskValue * BrushStrength * MaskAlpha )
Parameter: Draw on (Mask | Overlay). Purpose: inverts mask area applied to the whole image.
Parameter: Mask Alpha. Type: ? (possibly float 0-1). Purpose: ? (possibly final Mask value is calculated as Mask value multiplied by Mask Alpha
Parameter: Overlay alpha. Type: ?(possibly float 0-1). Purpose: ? (possibly it's the same as "Mask Alpha" parameter just inverted to the areas of the image NOT painted over by brush and this parameter is active only when "Draw on" mode is set to "Overlay")

As you can see, there are lots of "possibly". It is recommended to contact the author on Reddit to understand how these parameters really work together and their connection to Mask value.

Not the owner, but I would recommend keeping the headless approach and not having a tie in. The only required item is as what @lstein mentions, a black and white overlay that indicates the mask.
If we have a PNG, we could compute the mask from the transparent pixels in the image, thus allowing any image editor to be used, be it something like photopea, or photoshop
Alternatively, as with the images in the /data/inpainting_examples, there's a parallel, bitmap mask that indicates the parts of the image to occlude
The process would be to load the image in your favorite image editor of choice. Use the eraser tool to cut away areas of the image you don't like, save the image and then use a dream command like dream>my prompt --mask /path/to/the/image.png. It does the rest and would do the inpainting
Gradio support would be an option, but that could work something like dream>"my prompt" --maskhelper

this would be a great feature. it would be possible to edit parts of the image that were poorly drawn by the neural network or made with an error, as well as extend images that were unsuccessfully cropped

Vouch for wanting this as well, inpainting would make things so much easier.

would also love this feature

@Oceanswave

a black and white overlay that indicates the mask
If we have a PNG, we could compute the mask from the transparent pixels in the image...
... The process would be ... Use the eraser tool to cut away areas of the image you don't like...

A transparency in PNG files changes from 0 to 100% in graphical editors. Image can be partially transparent like so:

To make inpainting tool more powerful it could be useful to not simply use "eraser" tool that completely erases parts of the image (applies 100% transparency to areas) or applies black and white overlays (representing only two values of transparency: 0% and 100%) but to process all pixels that are even partially transparent. That could result in interesting effects during inpainting.

Ok. So we find all pixels that have an alpha<1 (transparent to any extent), convert these into a bitmask (value 0,0,0) and use this as the inpainting mask. Do I have that right?

Looks like the underlying decoder expects a black and white png mask judging from the examples in SD repo and stuff on reddit.
And it what gradio interfaces produces too, so it seems like a generally good idea to keep things compatible. I'd second @Oceanswave idea. Take a png mask. If it has transparent pixels convert it first to black/white png then feed to the decoder.

Would be good overall to add a UI to your botstyle code as well so it can run in browser like others with gradio

linking brush strength with init_image strength could be a cool feature

soo how do we apply a mask? is there a usable implementation?

If it's a 2value straight alpha, maybe a dithering filter could make gradient still doable.
If it's premultiplied 256value, then black and white bitmap from alpha channel of .png should make gradient possible.
If the model accept weights per pixel, then RGB image (or cryptomate exr) could be doable for ID masks with one color per weight prompt.
But I don't know exactly what stable diffusion allow or not and what could be integrated.

It would have to be a dither gradient. I don't see any reason that the pixels in the mask need to be contiguous. I also don't know how to do a dither gradient to test this out :-(

as i can see there are inpainting already:
https://github.com/pesser/stable-diffusion#inpainting

as i can see there are inpainting already: https://github.com/pesser/stable-diffusion#inpainting

this is for latent diffusion, not stable diffusion :)

I'll add my vote, inpainting was my favorite feature of dalle-2 (before I ran out of credits)..
I could take a photo of someone, mask out their clothes and generate infinite outfit styles, or I could take one of my real world landscape photos, mask out an area and introduce fictional elements.. Also worked on Unreal Engine screenshots where I had an area that was populated with foliage and masked out a barren empty area and got cool results.

I'll also raise my hand for inpainting; I think the idea of 'weighted img2img' is really interesting especially if it could be combined with RePaint's (https://github.com/andreas128/RePaint) method of continuously inserting the unmasked parts of the original image with each step and adding noise to ensure consistency. If it was possible to add non-binary masks on top of that, I think this feature would be extremely powerful.

It would have to be a dither gradient. I don't see any reason that the pixels in the mask need to be contiguous. I also don't know how to do a dither gradient to test this out :-(

Hi, there is a library for image processing, PIL (or pillow) that allow to extract alpha channel, do processing, etc...
Example of use : https://stackoverflow.com/questions/18777873/convert-rgb-to-black-or-white/18778280#18778280
Input image could be .png only and script interpret like that :
If RGBA, use Alpha with dither filter,
If RGB, use only luminance and clip to half (128),
if B&W premultiplied, use dither filter,
if B&W straight, use as it is.

Would also love inpainting support, specifically via the API. I feel like inpainting has so many uses that we haven't even thought about yet

Gradio has implemented and open sourced their initial version of inpainting:
https://twitter.com/Gradio/status/1562827932871303170

I would love to have it added to this repo too

Giving it a shot... have the mask and the changes in.. but unclear of what x0 needs to be and OP mentioned something about downsampling the mask..
What goes here?? @morganavr
https://github.com/BaristaLabs/stable-diffusion-dream/blob/3e207eac19b3e24691cd3abc89f761427f1687db/ldm/simplet2i.py#L417
samples = sampler.decode(z_enc, c, t_enc, unconditional_guidance_scale=cfg_scale,
                                                    unconditional_conditioning=uc, x0=init_latent, mask=mask[::4, ::4]) # Uh.. what goes here?

For x0 you can just use z_enc that's passed originally to the function, that already has noise added to it though, so it's probably better to create it like z_enc but with the parameter noise=0 added to the function call.
To create the mask you can look at the original inpaint.py, there's already code there that does the same.
This is what I use now, my masks are inverted though:
def load_mask(file, maxw, maxh, downsample=None, mask_strength=1.):
    image = Image.open(file).convert("L")
    w, h = image.size
    print(f"loaded input mask of size ({w}, {h})")

    if w > maxw:
        fac = maxw / w
        h = int(fac * h)
        w = maxw

    if h > maxh:
        fac = maxh / h
        w = int(fac * w)
        h = maxh

    w, h = map(lambda x: x - x % 64, (w, h))

    if downsample is not None:
        w //= downsample
        h //= downsample

    image = image.resize((w, h), resample=Image.Resampling.LANCZOS)
    print(f"resized to ({w}, {h})")
    image = 1 - (1 - (np.array(image).astype(np.float32) / 255.0)) * mask_strength
    image = image[None, None]
    image = torch.from_numpy(image)

    return image

Yuk sorry for my thick skull - still working on this
I have the mask - in my case getting the alpha channel from a png - that's the easy part, I pass the mask and x0, but I just get the x0 image back
https://github.com/BaristaLabs/stable-diffusion-dream/blob/f25a085a555b8db32a154256d7ee6538b71d0172/ldm/simplet2i.py#L448
 def _load_img(self, path):

        image = Image.open(path)
        mask = None
        masked_image = None

        # Determining if the image has an alpha channel tells us if we want to extract a mask
        if has_transparency(image):
            # Obtain the mask from the transparency channel before we get rid of it
            mask = Image.new(mode="L", size=image.size, color=255)

            mask.putdata(image.getdata(band=3))
            # Invert so white is transparent
            mask = ImageOps.invert(mask)

        image = image.convert('RGB')

        w, h = image.size
        print(f'loaded input image of size ({w}, {h}) from {path}')
        w, h = map(
            lambda x: x - x % 32, (w, h)
        )  # resize to integer multiple of 32
        image = image.resize((w, h), resample=Image.Resampling.LANCZOS)
        masked_image = image.copy()
        image = np.array(image).astype(np.float32) / 255.0
        image = image[None].transpose(0, 3, 1, 2)
        image = torch.from_numpy(image)

        if mask is not None:
            # we need to resize the mask too
            mask = mask.resize((w, h), resample=Image.Resampling.LANCZOS)
            mask.save("outputs/test_mask.png")
            mask = np.array(mask).astype(np.float32) / 255.0
            mask = mask.astype(np.float32)/255.0
            mask[mask < 0.5] = 0
            mask[mask >= 0.5] = 1
            mask = torch.from_numpy(mask)

            masked_image = (1-mask)*image

        return {
            "img": 2.0 * image - 1.0,
            "mask": mask,
            "masked_img": masked_image
        }

My attempts to make guy with a pineapple hat into a lovely badger always go the wrong way - which means my maths is inverted.. but ..

.

Yuk sorry for my thick skull - still working on this
I have the mask - in my case getting the alpha channel from a png - that's the easy part, I pass the mask and x0, but I just get the x0 image back

You seem to be only using the top left small corner of the mask? You need to downsize it to 1/8th the size, I think you're using the top left 1/8th of the array instead.

@Oceanswave

My attempts to make guy with a pineapple hat into a lovely badge

I think this exactly image is bad for testing purposes because it's background has solid color and it's difficult to quickly analyze what parts of the image were affected by inpainting.

@Oceanswave; Maybe "my masks are inverted though" (from @Doggettx)? Seems like that's exactly what's happening in your example - affected vs. unaffected areas are swapped.

It seems that this fork has inpainting, I have not tested it yet.
https://github.com/hlky/stable-diffusion

Mask painting (NEW) 🖌: Powerful tool for re-generating only specific parts of an image you want to change

It seems that this fork has inpainting, I have not tested it yet.
https://github.com/hlky/stable-diffusion

Mask painting (NEW) 🖌: Powerful tool for re-generating only specific parts of an image you want to change

It's masking. There is no specialized model involved in the "inpainting" process there.
See this discussion


fix(news): remove warning about changelog defaults

As some time has already passed since we changed the defaults and there don't seem to be any affected users, revert this change as it is no longer relevant.

pre-commit CI passed… pre-commit in Zuul failed… :sigh:

looks like a flake of pre-commit in Zuul


Notebooks don't show as dirty

Notebooks are not show as dirty when modified, probably caused by the vscode merge.

I'm having difficulty reproing. I'll close and reopen if i get a better repro.


Zip archive are not working on mac OS X

Invistigating this problem, zip archive files do not start with 'PK...' but '\nPK...'


Collect mature content flag data from providers

I think this is only for Behance but if other providers offer it, please collect it from them as well.

Also related to 425

Blocked by https://github.com/creativecommons/cccatalog/issues/163


support SPMD operations like psum, axis_index in jax.vmap (feature request)

Feature request for jax.vmap to support SPMD operations like those supported by jax.pmap, namely jax.lax.psum, jax.lax.axis_index, etc.
A few use-cases:

Use the same API as pmap without jit.
Implementing batch-norm within an un-batched network layer.

Potentially others!

@apaszke squashed this in #4005 and follow-ups! Until #4038 lands you've got to enable omnistaging (#3370) to use axis names with vmap:
from jax.config import config
config.enable_omnistaging()


Focusing on a table cell will insert the last value

Hi. Thanks for this great LAF.
Assume that I have a table and I insert "a sample value" in a cell. When I double click on another cell (even if it's been filled already), the last value that I inserted ("a sample value") will be inserted in this cell.

Hi @MJ-DEV91

Hi. Thanks for this great LAF.

Thanks :)

Assume that I have a table and I insert "a sample value" in a cell. When I double click on another cell (even if it's been filled already), the last value that I inserted ("a sample value") will be inserted in this cell.

Can you give me a minimal example of reproducible, please?
This seems a particular mistake, if you give an example we will be able to debug and focus directly on the problem.
Thanks

Just in your demo application:
https://pasteboard.co/IE3vnv5.jpg
There is a table with four cells: "a", "b", "c", "d"
I filled the "a" cell with "11111" and when I double clicked on "b" cell, it was filled automatically with "11111".

@MJ-DEV91 Thanks, give me time to verifying and reproduce it. I will return

@MJ-DEV91 I have reproduced the but, I will try to fix it in the developer for this project.
Thanks for your help.

The bug is fixed in this minor version.
For the moment I don't create the pull request in the official version because I have a new feature to add at the theme.
If you want you can use version 1.0.6.

Thanks a lot


Corrected AppConfig.get_models() signature in docs.

Hi there,
Just a little PR to clarify the AppConfig.get_models() signature, here's a link to the method for reference: https://github.com/django/django/blob/6ffe48b8e43140e79180ec6dc02577437e761819/django/apps/config.py#L241

@shangxiao Thanks :+1: