Update comsol.profile

This update is now complete but the template above does not include some of the "Other" features that I can see on the Wikipedia page. Some of them apply to COMSOL. How can I add those ("Multiphysics" and "Optimization Solvers", for example.

You can add them as new keys with ":" in the end, e.g.
multiphysics:
Note that Comsol has matrix-free option, it is available since 5.1 https://www.comsol.com/release/5.1/studies-and-solvers

There are two types of mesh adaptivity, when you fully rebuild mesh or when you just refine (few) needed mesh elements. When you write "full adaptive" does it mean that they have implemented the second option too?

Hi,
Thanks! How can I edit the version I submitted earlier today so that I
don't have to reenter everything.
Best regards,
Magnus Ringh
On Fri, May 8, 2020 at 1:55 PM Konstantin Ladutenko <
<EMAIL_ADDRESS>wrote:

You can add them as new keys with ":" in the end, e.g.
multiphysics:
Note that Comsol has matrix-free option, it is available since 5.1
https://www.comsol.com/release/5.1/studies-and-solvers
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/kostyfisik/FEA-compare/pull/18#issuecomment-625780024,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/APPTWCCVHKKGIUME4ATGXELRQPXLNANCNFSM4M4A7T6A
.

You can just continue with edits in your copy of this project at https://github.com/magnusringh/FEA-compare/tree/patch-3 I will see the changes here automaticaly.

Hi,
Yes, the mesh adaptivity is COMSOL is fully flexible, available for
stationary, eigenvalue, and time-dependent simulations, for the entire
geometry or parts, by recreating the full mesh or by refining chosen mesh
elements.
Best regards,
Magnus Ringh
On Fri, May 8, 2020 at 1:58 PM Konstantin Ladutenko <
<EMAIL_ADDRESS>wrote:

There are two types of mesh adaptivity, when you fully rebuild mesh or
when you just refine (few) needed mesh elements. When you write "full
adaptive" does it mean that they have implemented the second option too?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/kostyfisik/FEA-compare/pull/18#issuecomment-625780953,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/APPTWCAZIPUJQ575LASGDILRQPXV5ANCNFSM4M4A7T6A
.

Hi,
Should be complete now.
Best regards,
Magnus Ringh
On Fri, May 8, 2020 at 4:15 PM magnus ringh<EMAIL_ADDRESS>wrote:

Hi,
Yes, the mesh adaptivity is COMSOL is fully flexible, available for
stationary, eigenvalue, and time-dependent simulations, for the entire
geometry or parts, by recreating the full mesh or by refining chosen mesh
elements.
Best regards,
Magnus Ringh
On Fri, May 8, 2020 at 1:58 PM Konstantin Ladutenko <
<EMAIL_ADDRESS>wrote:

There are two types of mesh adaptivity, when you fully rebuild mesh or
when you just refine (few) needed mesh elements. When you write "full
adaptive" does it mean that they have implemented the second option too?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/kostyfisik/FEA-compare/pull/18#issuecomment-625780953,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/APPTWCAZIPUJQ575LASGDILRQPXV5ANCNFSM4M4A7T6A
.

Great! Thank you a lot!


feat: Make Prisma Studio work with directUrl

Closes https://github.com/prisma/prisma/issues/17358
Depends on https://github.com/prisma/studio-code/pull/483
Related docs change: https://github.com/prisma/docs/pull/4953
Internal discussion: prisma-company.slack.com/archives/CC8F34ALF/p1685742636214419?thread_ts=1685736658.218249&cid=CC8F34ALF
TODO: Could potentially use some more tests.

This can manually be tested via<EMAIL_ADDRESS>


Add Sidebar/Back Button to template

Currently, you have to use the browser back button to navigate the site, which isn't amazing if you want to go directly to the sidebar.
From the Discord:

theres some stuff i wanna improve w the site
id like a sidebar of sorts and a back button integrated into the site
think its just as easy as modifying the template
and like it kinda annoys me that the sitemap isn't alphabetically ordered
idk how to do the sidebar w/o an iframe tho w/o overcomplicating the existing setup

i say we make the sitemap an iframe on the side :D

i say we make the sitemap an iframe on the side :D

For the meme, here's a professor's site for inspiration: https://www.cs.uic.edu/~i440/


nixos-23.11 aarch64 kexec kernel panics on switch_root

This is on an ARM instance on Oracle Cloud. The 23.05 aarch64 kexec works but 23.11 kernel panics. I obtained this output from the serial console after changing the kernel command line to include loglevel=7 debug, but don't see a useful error message:
[    8.810943] stage-1-init: [Sun Jan 21 04:46:19 UTC 2024] starting device mapper and LVM...
[    8.883307] stage-1-init: [Sun Jan 21 04:46:19 UTC 2024] mounting tmpfs on /...
[    8.892663] stage-1-init: [Sun Jan 21 04:46:19 UTC 2024] mounting ../nix-store.squashfs on /nix/.ro-store...
[    8.893960] loop0: detected capacity change from 0 to 234904
[    8.922896] stage-1-init: [Sun Jan 21 04:46:19 UTC 2024] mounting tmpfs on /nix/.rw-store...
[    8.954467] stage-1-init: [Sun Jan 21 04:46:19 UTC 2024] mounting overlay on /nix/store...
[    9.092900] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000100
[    9.096122] CPU: 2 PID: 1 Comm: switch_root Not tainted 6.6.12 #1-NixOS
[    9.097322] Hardware name: QEMU KVM Virtual Machine, BIOS 1.5.1 06/16/2021
[    9.098486] Call trace:
[    9.098778]  dump_backtrace+0xa0/0x128
[    9.099105]  show_stack+0x20/0x38
[    9.099356]  dump_stack_lvl+0x48/0x60
[    9.099673]  dump_stack+0x18/0x28
[    9.099981]  panic+0x318/0x390
[    9.100299]  do_exit+0x8c4/0x9f0
[    9.100603]  do_group_exit+0x3c/0xa0
[    9.101084]  __arm64_sys_exit_group+0x20/0x28
[    9.101438]  invoke_syscall+0x50/0x128
[    9.101734]  el0_svc_common.constprop.0+0x48/0xf0
[    9.102215]  do_el0_svc+0x24/0x38
[    9.102621]  el0_svc+0x48/0x138
[    9.102914]  el0t_64_sync_handler+0x100/0x130
[    9.103352]  el0t_64_sync+0x190/0x198
[    9.103631] SMP: stopping secondary CPUs
[    9.104402] Kernel Offset: 0x5ef40cc00000 from 0xffff800080000000
[    9.105550] PHYS_OFFSET: 0x40000000
[    9.105970] CPU features: 0x0,00000021,70020143,1000720b
[    9.106403] Memory Limit: none
[   15.439267] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000100 ]---

I believe I am experiencing the same issue with an aarch64 server hosted on Hetzner.

Does downgrading the linux kernel help?


Implement a JS Template Engine

Please select if your request is either something new or an enhancement

[ ] Enhancement of an existing Feature.
[x] Request of a new feature.

Please select the area your request applies to. (Multiple selections are possible)

[ ] Onboard. Initial vault setup and import/export pods
[x] Create. Note creation, lookup, snippets and templates
[ ] Retrieve. Backlinks, references, graph view
[ ] Structure. Refactoring, multi-vault and schemas
[ ] Publish. Sharing your repo with the world
[ ] Misc (Choose this if your not sure)

Is your feature request related to a problem? Please describe
No
Describe the solution you'd like
Migrating from a 'competitor' which has support for dynamic templating.  While there are many uses for this, my main one is as simple as creating a pretty created | edited time marker at the top of my note page. I do this using moment.js by passing the file creation and modified dates into moment's calendar function with appropriate config to show either a date, or something ore friendly like yesterday or today at 10:05 AM
Without naming names, the 'other' application uses the eta JS Template Engine
Describe alternatives you've considered
N/A
Additional context
Screenshot showing this particular usage and sample code used:
<small>	<%+ moment(tp.file.creation_date("ddd D MMM YYYY h:mm A")).calendar(null, {sameDay: '', nextDay: '', nextWeek: 'dddd', lastDay: '',    lastWeek: '[Last] dddd',    sameElse: 'ddd D MMM YYYY'}) %>   |	<%+ moment(tp.file.last_modified_date("ddd D MMM YYYY h:mm A")).calendar(null, {sameDay: '', nextDay: '', nextWeek: 'dddd', lastDay: '',    lastWeek: '[Last] dddd',    sameElse: 'ddd D MMM YYYY'}) %></small>

Per your linked issue, with only fname and f.title offered, its not much use that I can see. Maybe if there was a way to expose all of the meta data for the page, the hierarchy, and the full set of notes?

Maybe if there was a way to expose all of the meta data for the page, the hierarchy, and the full set of notes?

You should probably open another issue about exposing more data to the templating engine since the one I linked is about bringing parity with V1 Preview and it's technically completed.

Here are my thoughts on nunjucks:

I like nunjucks personally - its a powerful templating engine with lots of features
What makes it challenging to integrate is that nunjucks has no integrations with unified which is the framework we use to parse and render markdown/html
The workaround is to make nunjucks something we run before/after the parsing pipeline

while this kind of works, it makes a whole family of optimizations and functionality much more complicated to implement:

rendering only the current visible part of markdown (with nunjucks, we'd need to parse the whole note)
implementing scroll sync (we would be doing this off the AST which now we can't accurately map because of nunjucks)
statically parsing a note for metadata (with just the AST, we can parse a note once and calculate offsets for anchors and other elements, with nunjucks, this becomes more difficult)

Given the above points, we don't have any current plans of integrating nunjucks with note rendering. That being said, if you want to customize how notes are rendered, we do offer other entry points:

lifecycle hooks
custom note types

@jonathanyeung is currently doing the initial implementation of custom note types. will leave it to him to elaborate on any potential custom template engine with note types


Username not found

Move the username not found check to after the user inputs their username to make the process more streamlined

I decided not to as preferred the user entering the username and password before it gets validated and instead added the message for no username and password inputted to all sudo scripts


KeyError exception raised during training

"Download the sample script files mnist-keras.py and utils.py" is linked to https://github.com/Azure/MachineLearningNotebooks/tree/master/how-to-use-azureml/training-with-deep-learning/train-hyperparameter-tune-deploy-with-keras and referenced file named mnist-keras.py is located at https://github.com/Azure/MachineLearningNotebooks/blob/master/how-to-use-azureml/training-with-deep-learning/train-hyperparameter-tune-deploy-with-keras/keras_mnist.py
When utilizing that file during the remote training it fails at the end of the first epoch with the following exception:
Train on 60000 samples, validate on 10000 samples
Epoch 1/20
2019-11-15 22:04:28.660426: I tensorflow/stream_executor/dso_loader.cc:152] successfully opened CUDA library libcublas.so.10.0 locally

4s - loss: 0.2122 - accuracy: 0.9355 - val_loss: 0.1112 - val_accuracy: 0.9680

The experiment failed. Finalizing run...
Cleaning up all outstanding Run operations, waiting 300.0 seconds
2 items cleaning up...
Cleanup took 0.2579689025878906 seconds
Enter exit of DatasetContextManager
Unmounting /Dataset/mnist_dataset_from_lecun.
Finishing unmounting /Dataset/mnist_dataset_from_lecun.
Exit exit of DatasetContextManager
Traceback (most recent call last):
File "training.py", line 96, in <module>
callbacks=[LogRunMetrics()])
File "/azureml-envs/azureml_e53b6470ca7a4e062fed95e2a95fd85d/lib/python3.6/site-packages/keras/engine/training.py", line 1239, in fit
validation_freq=validation_freq)
File "/azureml-envs/azureml_e53b6470ca7a4e062fed95e2a95fd85d/lib/python3.6/site-packages/keras/engine/training_arrays.py", line 216, in fit_loop
callbacks.on_epoch_end(epoch, epoch_logs)
File "/azureml-envs/azureml_e53b6470ca7a4e062fed95e2a95fd85d/lib/python3.6/site-packages/keras/callbacks/callbacks.py", line 152, in on_epoch_end
callback.on_epoch_end(epoch, logs)
File "training.py", line 88, in on_epoch_end
run.log('Accuracy', log['acc'])
KeyError: 'acc'
After commenting out the code:
run.log('Accuracy', log['acc'])
it was able to complete all 20 epochs, but there was related exception raised:
Epoch 20/20

3s - loss: 0.0054 - accuracy: 0.9986 - val_loss: 0.1624 - val_accuracy: 0.9808
Test loss: 0.16237778106614775
Test accuracy: 0.9807999730110168

The experiment failed. Finalizing run...
Cleaning up all outstanding Run operations, waiting 300.0 seconds
2 items cleaning up...
Cleanup took 0.26714205741882324 seconds
Enter exit of DatasetContextManager
Unmounting /Dataset/mnist_dataset_from_lecun.
Finishing unmounting /Dataset/mnist_dataset_from_lecun.
Exit exit of DatasetContextManager
Traceback (most recent call last):
File "training.py", line 109, in <module>
plt.plot(history.history['acc'], 'b-', label='Accuracy', lw=4, alpha=0.5)
KeyError: 'acc'
After commenting out the line:
plt.plot(history.history['acc'], 'b-', label='Accuracy', lw=4, alpha=0.5)
Training was able to complete successfully.

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

ID: abbb23fb-d48c-d9cb-e62a-f9d5ed371bec
Version Independent ID: fb575a01-69a3-f79b-e7d0-b991bc8a379d
Content: Train deep learning Keras models - Azure Machine Learning
Content Source: articles/machine-learning/service/how-to-train-keras.md
Service: machine-learning
Sub-service: core
GitHub Login: @maxluk
Microsoft Alias: maxluk

@joshheitzman-redcley-v-joheit-msft
Thanks for the feedback! We are currently investigating and will update you shortly.

@maxluk Hi, could you please this issue and update the sample repo? Thanks a lot.

Changing 'acc' to 'accuracy' on both of the referenced lines fixes the issue properly.

@joshheitzman-redcley-v-joheit-msft  Thanks for your report. The article fix will be live in a few days, we shall proceed to close this issue, #please-close.  If you feel that your issue has not been resolved, please reopen the documentation issue and provide additional context. For product issues, contact technical support.

@joshheitzman-redcley-v-joheit-msft , upon further investigation. The current files seems to run. This may be a versioning issue. Can you verify your python and sdk versions? In general, 3.6.5 works best and then make sure you have the newest sdk version.


"Enter the URI of the running Jupyter server" enter key not working

I want to connect my VSCode to existing jupyter server, So I clicked on existing to enter my existing jupyter server url. I entered the url in there but after that Enter key is not working. Escape to cancel is working but enter is not.

/extPython


Rainloop licence change

The Github version of Rainloop is Licenced as AGPL so this part isn't correct anymore.

Just realised that the Dockerfile is pulling an old Version of Rainloop. Maybe it would be desirable to update to a new Version because of the Licence change

If you have successfully tested a newer version of rainloop and verified that everything works fine, feel free to open a pull request with the version (+license) change.
However, it's not a good idea to just use the latest commit from master, since this will potentially (a) randomly break the container's build from time to time, and (b) make it impossible to rebuild the same container from scratch.


Check that Merkle proofs have the proper length and leaf size

In our Merkle tree, there's no special field to distinguish leaves from branch nodes, so collisions between them may be possible. In particular, a prover could take the digest of a branch node, and prove inclusion a leaf with the same location and digest.[^1] A fixed-depth Merkle tree avoids such attacks, but we forgot to actually validate depth when verifying a Merkle proof.
Relatedly, we weren't checking that a leaf has the proper size. I'm not sure if an attacker can do anything useful with a wrongly sized leaf, particularly if the above issue is fixed, but it seems safest to just enforce that the entire hash tree structure is proper.
These changes are for the native verifier. Our recursive circuit already has the proper hash structure baked into it.
[^1]: This is only possible if a Merkle tree has a leaf size of 4, which I don't think occurs in our standard config.

Good idea, I added a check for the cap height. I think one could argue it's not needed, but agree it's simpler to just check it.

Is this check implemented in this PR? If so, I don't see where.

I thought ensure!(evals.len() == arity); would do that, but looks like that may not cover all code paths. Will think about how best to address this.

Here's an alternate approach: #723
It's more code but it's checking more things, like the number of points in each set of openings. This is doesn't seem necessary for soundness, but it addresses a couple minor issues

Previously if there were too few openings, I think the verifier would panic (out-of-bounds) instead of returning an error.
Proofs are malleable -- one can just add extra openings.
One could create huge proofs with many extra openings, which could enable some DOS attacks.

Closing in favor of #723


Fixing node parameters for ROS2 compatibility

ROS2 parameters must be explicitly declared to work. With this fix, bridge launch files should work on ROS2


Small updates to lab 8a

Changes proposed in this pull request:
-updates to python code
-some markdown formmating

Thanks Mihai! I partially committed this PR. Thanks for taking the time to review this lab.


Add offers_attach to V10 credential schema

We found out that the offers_attach attribute is not present in the credential offer schema. It is possible to send it to the api but its not present in the openapi spec. This is a problem is you generate yourself a client with the openapi spec because offers_attach is not defined.
This pr adds the attribute to the credential offer schemas.
It seems that there were also some other changes that are not reflected in the openapi.json. Therefore the changes in the openapi spec are bigger than the real changes in this pr.

Can you please leave out the changes to openapi.json? Updating that likely deserves another PR.

I don't understand how this is needed.  This API and protocol has had extensive testing for years and works.  Why would this be needed now? I also notice that you have offers_attach, but the correct item, per RFC 0036 is offers~attach. Is it possible that this is a misunderstanding and not needed?

Sorry, i guess it was a little bit of a misunderstanding from my side. I went a step back and created an issue about the use case.
Issue


Add Contributor profile for rannnayy

Hi @rannnayy -- Please also add a blog post introducing your project proposal for this summer.


the desktop application install path contaions the baisc jre, some computer haven't instlalled any jdk, and the application run failed with "Failed to launch jvm" exception. It run successful after install a jdk, such as jdk1.8.

Please check the following ticket on YouTrack for follow-ups to this issue. GitHub issues will be closed in the coming weeks.


Replace tab with spaces and align indent

[X] Have you followed the guidelines in our Contributing document?
[X] Have you checked to ensure there aren't other open Pull Requests for the same change?
[X] Have you added an explanation of what your changes do and why you'd like us to include them?
[ ] Have you written new tests for your changes? Here's an example.

Fixes style errors that I introduced in https://github.com/Homebrew/brew/pull/10844.

thanks for cleanup @dkav


Remove Unused heat-cfn Enable

This will have no impact on release or CI.

Yeah I just wanted to make the PR so y'all could decide whether you wanted to simplify ursula a touch or not. It can go in a future release no problem, I just had someone ask me about this the other day and it made me curious to see why it's here (no reason apparently).

retest

retest

retest

what is the context behind this PR? Seems like heat software deployment still needed this.

The variable itself isn't used anywhere.

LGTM

Thanks y'all, I just updated the branch so it should pass the test and get merged soon.

retest


cannot start container through docker remote API

Hi guys, I CANNOT start container through docker remote API but I CAN run the same image from commandline.  The error message from start container API call is Cannot start container bc88d3e257252f7fcaf69c0ddc008d7b8d8eee2ba3bcb422112ea873d18f23a1: [8] System error: exec: "": executable file not found in $PATH. I used image rastasheep/ubuntu-sshd for tests.
Results of docker ps -a:
CONTAINER ID        IMAGE                    COMMAND                CREATED              STATUS              PORTS                  NAMES
bc88d3e25725        rastasheep/ubuntu-sshd   ""                     About a minute ago   Created                                    38-ubuntu-sshd-3sju8tek
8b33e6649fb8        rastasheep/ubuntu-sshd   "/usr/sbin/sshd -D"    50 minutes ago       Up 50 minutes       <IP_ADDRESS>:2222->22/tcp   reverent_lumiere
d7f0fea869e6        rastasheep/ubuntu-sshd   " /usr/sbin/sshd -D"   About an hour ago    Created                                    34-ubuntu-sshd-ljoy27ht

bc88d3e25725 created through API, cannot start. CMD was set to [] while creating
8b33e6649fb8 created in command line docker run -d -it -p 2222:22 rastasheep/ubuntu-sshd, work well
d7f0fea869e6 also created via API, cannot start. CMD was set to ["/usr/sbin/sshd", "-D"] while creating

As you can see, COMMAND are different. Only the second row runs well which was created from command line docker run -d -it -p 2222:22 rastasheep/ubuntu-sshd. While the other two are created through remote API.  The COMMAND of first row is empty. The third row has a extra leading space. Both two fails because of  [8] System error: exec: "": executable file not found in $PATH.  Neigher API nor comandline works for the same error.
I used python requests to send requests(debug in PyCharm). There are two steps. First a request to create a new container, get the id from the response. And second send a request to start the container:
The first step to create container:
req = requests.post(containers_url, data=json.dumps(container_config), headers={'content-type': 'application/json'})

The containers_url is u'http://localhost:4243/containers/create?name=41-ubuntu-sshd-gzu684uj'
And container_config= {'Hostname': u'', 'SecurityOpts': [u''], 'Entrypoint': u'', 'Env': [], 'MacAddress': u'', 'User': u'', u'provider': u'0', 'OpenStdin': True, 'AttachStderr': True, 'AttachStdout': True, 'NetworkDisabled': False, 'WorkingDir': u'', 'StdinOnce': True, 'AttachStdin': False, 'Volumes': {}, 'Tty': True, 'Domainname': u'', 'Image': u'rastasheep/ubuntu-sshd', 'Labels': {}, 'HostConfig': {u'Dns': [], u'Memory': 0, u'DnsSearch': [], u'Privileged': False, u'CpusetCpus': u'', u'CgroupParent': u'', u'RestartPolicy': {u'MaximumRetryCount': 0, u'Name': u''}, u'PublishAllPorts': False, u'ReadonlyRootfs': False, u'CpuShares': 0, u'NetworkMode': u'', u'LxcConf': {}, u'Devices': [], u'VolumesFrom': [], u'Binds': [], u'MemorySwap': 0, u'ExtraHosts': [], u'Ulimits': [], u'CapDrop': [], u'Links': [], u'PortBindings': {u'22/tcp': [{'HostPort': '10022', 'HostIp': ''}]}, u'CapAdd': [], u'LogConfig': {u'Type': u'json-file', u'Config': {}}}, 'ExposedPorts': {u'22/tcp': {}}}
A better formatted version of json.dumps(container_config):
{
  "Hostname":"",
  "SecurityOpts":[
    ""
  ],
  "Entrypoint":"",
  "Env":[
  ],
  "MacAddress":"",
  "User":"",
  "provider":"0",
  "OpenStdin":true,
  "AttachStderr":true,
  "AttachStdout":true,
  "NetworkDisabled":false,
  "WorkingDir":"",
  "StdinOnce":true,
  "AttachStdin":false,
  "Volumes":{
  },
  "Tty":true,
  "Domainname":"",
  "Image":"rastasheep/ubuntu-sshd",
  "Labels":{
  },
  "HostConfig":{
    "Dns":[
    ],
    "Memory":0,
    "DnsSearch":[
    ],
    "Privileged":false,
    "CpusetCpus":"",
    "CgroupParent":"",
    "RestartPolicy":{
      "MaximumRetryCount":0,
      "Name":""
    },
    "PublishAllPorts":false,
    "ReadonlyRootfs":false,
    "CpuShares":0,
    "NetworkMode":"",
    "LxcConf":{
    },
    "Devices":[
    ],
    "VolumesFrom":[
    ],
    "Binds":[
    ],
    "MemorySwap":0,
    "ExtraHosts":[
    ],
    "Ulimits":[
    ],
    "CapDrop":[
    ],
    "Links":[
    ],
    "PortBindings":{
      "22/tcp":[
        {
          "HostPort":"10022",
          "HostIp":""
        }
      ]
    },
    "CapAdd":[
    ],
    "LogConfig":{
      "Type":"json-file",
      "Config":{
      }
    }
  },
  "ExposedPorts":{
    "22/tcp":{
    }
  }
}

The request succeeds with code [201] and content '{"Id":"8e075f05c8b549c67ec891855d0d4061aa819e4d76b40e8fa85969e064f0e2ce","Warnings":null} '
Code and parameters for the second step to start the container.
req = requests.post(url, headers={'content-type': 'application/json'})

the url is u'http://localhost:4243/containers/8e075f05c8b549c67ec891855d0d4061aa819e4d76b40e8fa85969e064f0e2ce/start' where the id got from response of the first step varies every time. This time, the response is <Response [404]> and content 'Cannot start container 8e075f05c8b549c67ec891855d0d4061aa819e4d76b40e8fa85969e064f0e2ce: [8] System error: exec: "": executable file not found in $PATH '
My docker version:
Client:
 Version:      1.8.1
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   d12ea79
 Built:        Thu Aug 13 02:40:42 UTC 2015
 OS/Arch:      linux/amd64

Server:
 Version:      1.8.1
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   d12ea79
 Built:        Thu Aug 13 02:40:42 UTC 2015
 OS/Arch:      linux/amd64

docker info:
Containers: 2
Images: 13
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 17
 Dirperm1 Supported: true
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.19.0-26-generic
Operating System: Ubuntu 15.04
CPUs: 1
Total Memory: 4.812 GiB
Name: junbo
ID: TBBN:ZGN4:LAJW:3ZSJ:K5AM:3ARP:KFBE:QCCO:RC2S:5HZT:DDRH:HRKH
WARNING: No swap limit support

uname -a:
Linux junbo 3.19.0-26-generic #28-Ubuntu SMP Tue Aug 11 14:16:32 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

Hi!
Please read this important information about creating issues.
If you are reporting a new issue, make sure that we do not have any duplicates already open. You can ensure this by searching the issue list for this repository. If there is a duplicate, please close your issue and add a comment to the existing issue instead.
If you suspect your issue is a bug, please edit your issue description to include the BUG REPORT INFORMATION shown below. If you fail to provide this information within 7 days, we cannot debug your issue and will close it. We will, however, reopen it if you later provide the information.
This is an automated, informational response.
Thank you.
For more information about reporting issues, see https://github.com/docker/docker/blob/master/CONTRIBUTING.md#reporting-other-issues

BUG REPORT INFORMATION
Use the commands below to provide key information from your environment:
docker version:
docker info:
uname -a:
Provide additional environment details (AWS, VirtualBox, physical, etc.):
List the steps to reproduce the issue:
1.
2.
3.
Describe the results you received:
Describe the results you expected:
Provide additional info you think is important:
----------END REPORT ---------
#ENEEDMOREINFO

Can you please provide your actual API call (like via curl).
The docker client uses the remote API too, so there must be something that's not quite right with the API call you are making.

@cpuguy83 updated my comment

@juniwang This looks like it's because you are setting Entrypoint to an empty string.
When Entrypoint is changed at all, it overrides any value of Cmd from the image.
Can you confirm by removing Entrypoint?

ping @juniwang have you been able to test @cpuguy83's suggestion?

@thaJeztah @cpuguy83  Yes, it succeeds when EntryPoint was removed.
Also I tested using an older version of docker:
Client version: 1.5.0
Client API version: 1.17
Go version (client): go1.3.3
Git commit (client): a8a31ef
OS/Arch (client): linux/amd64
Server version: 1.5.0
Server API version: 1.17
Go version (server): go1.3.3
Git commit (server): a8a31ef

I can run the same image successfully with docker 1.5.0 in both cases: with or without EntryPoint who's value is an empty string.   So it the change a reggresion or desired?  We set may default values, in many cases None or empty string, for docker options in our programs. Is it better I remove them all?

@juniwang yes, I'd suggest to only provide what you actually need. w.r.t changes since 1.5, I don't remember exactly, but I think we did indeed change behavior because otherwise there was no way to distinguish "I want this property to be empty" vs "I didn't specify this property, use the default or don't modify"

@juniwang I'm going to close this issue, because I think your question is answered, but feel free to continue the discussion here. :+1:

Yes, behavior was changed such that if Entrypoint is changed, CMD is cleared.


Add my first file

I have created a new branch, created a file, and made a commit
Thanks

profile.md file is added


Fixed iOS Push Notfication Service

When the apple push notification service is tested, the push notification successfully received when the app is running in the background but when the app is in the foreground the push notification event cannot be triggered, This issue has been fixed and tested.

currentState is an undeclared variable ..where u mentioned currenState variable


neovim: terminal command not working

Issue description
The terminal feature of Neovim is broken.
Steps to reproduce
Open neovim. Run :terminal.
E903: Process for command "/run/current-system/sw/bin/zsh" could not be spawned.

Technical details
$ nvim --version
NVIM 0.1.7
Build type: Release
Compilation: /nix/store/j1yn1np5g2vgm5yp8qmqg67x8riwy2kr-gcc-wrapper-5.4.0/bin/gcc -Wconversion -O2 -DNDEBUG -DDISABLE_LOG -Wall -Wextra -pedantic -Wno-unused-parameter -Wstrict-prototypes -std=gnu99 -Wvla -fstack-protector-strong -fdiagnostics-color=auto -DINCLUDE_GENERATED_DECLARATIONS -DHAVE_CONFIG_H -D_GNU_SOURCE -I/build/neovim-v0.1.7-src/build/config -I/build/neovim-v0.1.7-src/src -I/nix/store/prdp3mdlxbvh02bfbmrdri3jbih9ij33-libuv-1.11.0/include -I/nix/store/qac35ps3qi2f8akv8id7dlixj974yrd3-libmsgpack-2.0.0/include -I/nix/store/3srljj2vdfs745r15cfzfdcrfq5zsmch-unibilium-1.2.0/include -I/nix/store/z0fzk5bibksvdwy7bdzy3chgiwlbnsbk-libtermkey-0.19/include -I/nix/store/v6yw3qs4dx7qx0p1bc3awnaf1fxpz4rb-neovim-libvterm-2016-10-07/include -I/nix/store/qwhcz7k4is9b66vahjihzxhbh92l5i8f-jemalloc-4.3.1/include -I/nix/store/97mn9nbanzl8dm4gqza2d0jnzgi4zxj4-glibc-2.25-dev/include -I/build/neovim-v0.1.7-src/build/src/nvim/auto -I/build/neovim-v0.1.7-src/build/include
Compiled by nixbld

Optional features included (+) or not (-): +acl   +iconv    +jemalloc +tui
For differences from Vim, see :help vim-differences

   system vimrc file: "$VIM/sysinit.vim"
  fall-back for $VIM: "
/nix/store/dgw1anawj5hma1sab1bp5v7h7rvan4kd-neovim-0.1.7/share/nvim"

System: 17.03.1463.81fceb2554 (Gorilla)
Nix version: nix-env (Nix) 1.11.11
Nixpkgs version: 17.03.1584.48ecdcf598
Sandboxing enabled: false

I tried both the unstable(01c3847b9c) channel and 17.03 (94941cb) and I can't reproduce it.
Even after setting the shell to zsh.

the following trace /tmp/trace would be interesting:
strace -e execve -o /tmp/trace neovim

I ran strace -e execve -o /tmp/trace nvim and it opened neovim, then I ran :terminal and quit.
execve("/home/jake/.nix-profile/bin/nvim", ["nvim"], [/* 76 vars */]) = 0
execve("/nix/store/dgw1anawj5hma1sab1bp5v7h7rvan4kd-neovim-0.1.7/bin/.nvim-wrapped", ["/home/jake/.nix-profile/bin/nvim", "--cmd", "let g:python_host_prog='/nix/sto"..., "--cmd", "let g:python3_host_prog='/nix/st"...], [/* 75 vars */]) = 0
+++ exited with 0 +++

I have no problem with term,  have you solved your pb @jbaum98 ?

@jbaum98 I forgot to add the -f back then: strace -f -e execve -o /tmp/trace nvim

It seems to be all good now, no idea why!


[CLOSED] Edit manuals

 Issue by christophwong
Tuesday 22 March 2016 at 16:13 GMT
Originally opened as https://github.com/alphagov/specialist-publisher/pull/682

First pass at editing a manual.
It changes the body, summary, title of the manual.
We have some questions on the field update_type and how that should behave in an update.
Also, we had rebased #681 on to this PR as this shares some code with it.
Trello card

christophwong included the following code: https://github.com/alphagov/specialist-publisher/pull/682/commits

 Comment by christophwong
Tuesday 29 March 2016 at 10:55 GMT

@gpeng PR 681 has been merged and rebased
so this is now updated

 Comment by gpeng
Wednesday 23 March 2016 at 12:03 GMT

Might be better to review this after https://github.com/alphagov/specialist-publisher/pull/681 has been merged


Error with notifications: asynchronous calls

Describe the problem
With the recent update, I now have an error when receiving notification
Desktop (please complete the following information):

OS: Fedora 37
Version 2023.3.1

Additional context
Using MQTT to send a notification to my laptop, I never receive it. Instead, some errors appear in the logs.
I believe it was not the case with the previous release.
Configuration
Provide the configuration file, remove any sensitive info that might exist:
mqtt:
  prefix: lnxlink
  clientId: bflap
  statsPrefix: monitor/stats
  server: xxx
  port: xxx
  auth:
    user: xxx
    pass: xxx
  discovery:
    enabled: true
  lwt:
    enabled: true
    qos: 1
    retain: true
    connectMsg: 'ON'
    disconnectMsg: 'OFF'
update_interval: 5
modules:
#- bash
#- bluetooth_battery
- camera_used
- cpu
#- disk_usage
- idle
- keep_alive
#- media
- memory
- microphone_used
- network_download
- network_upload
- notify
#- nvidia_gpu
- required_restart
#- restart
#- screen_onoff
#- send_keys
#- shutdown
#- suspend
- update
#- xdg_open

Logs
Mar 30 00:00:00 bflap lnxlink[718304]: Traceback (most recent call last):
Mar 30 00:00:00 bflap lnxlink[718304]:   File "/home/guik/.local/lib/python3.11/site-packages/lnxlink/__main__.py", line 163, in on_message
Mar 30 00:00:00 bflap lnxlink[718304]:     addon.startControl(select_service, message)
Mar 30 00:00:00 bflap lnxlink[718304]:   File "/home/guik/.local/lib/python3.11/site-packages/lnxlink/modules/notify.py", line 23, in startControl
Mar 30 00:00:00 bflap lnxlink[718304]:     notify2.init("Test")
Mar 30 00:00:00 bflap lnxlink[718304]:   File "/home/guik/.local/lib/python3.11/site-packages/notify2.py", line 111, in init
Mar 30 00:00:00 bflap lnxlink[718304]:     dbus_iface.connect_to_signal('ActionInvoked', _action_callback)
Mar 30 00:00:00 bflap lnxlink[718304]:   File "/usr/lib64/python3.11/site-packages/dbus/proxies.py", line 543, in connect_to_signal
Mar 30 00:00:00 bflap lnxlink[718304]:     return self._obj.connect_to_signal(signal_name, handler_function,
Mar 30 00:00:00 bflap lnxlink[718304]:            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Mar 30 00:00:00 bflap lnxlink[718304]:   File "/usr/lib64/python3.11/site-packages/dbus/proxies.py", line 366, in connect_to_signal
Mar 30 00:00:00 bflap lnxlink[718304]:     self._bus.add_signal_receiver(handler_function,
Mar 30 00:00:00 bflap lnxlink[718304]:   File "/usr/lib64/python3.11/site-packages/dbus/bus.py", line 144, in add_signal_receiver
Mar 30 00:00:00 bflap lnxlink[718304]:     match = super(BusConnection, self).add_signal_receiver(
Mar 30 00:00:00 bflap lnxlink[718304]:             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Mar 30 00:00:00 bflap lnxlink[718304]:   File "/usr/lib64/python3.11/site-packages/dbus/connection.py", line 388, in add_signal_receiver
Mar 30 00:00:00 bflap lnxlink[718304]:     self._require_main_loop()
Mar 30 00:00:00 bflap lnxlink[718304]: RuntimeError: To make asynchronous calls, receive signals or export objects, D-Bus connections must be attached to a main loop by passing mainloop=... to the constructor or calling dbus.set_default_main_loop(...)
Mar 30 17:40:00 bflap lnxlink[718304]: Traceback (most recent call last):
Mar 30 17:40:00 bflap lnxlink[718304]:   File "/home/guik/.local/lib/python3.11/site-packages/lnxlink/__main__.py", line 163, in on_message
Mar 30 17:40:00 bflap lnxlink[718304]:     addon.startControl(select_service, message)
Mar 30 17:40:00 bflap lnxlink[718304]:   File "/home/guik/.local/lib/python3.11/site-packages/lnxlink/modules/notify.py", line 23, in startControl
Mar 30 17:40:00 bflap lnxlink[718304]:     notify2.init("Test")
Mar 30 17:40:00 bflap lnxlink[718304]:   File "/home/guik/.local/lib/python3.11/site-packages/notify2.py", line 111, in init
Mar 30 17:40:00 bflap lnxlink[718304]:     dbus_iface.connect_to_signal('ActionInvoked', _action_callback)
Mar 30 17:40:00 bflap lnxlink[718304]:   File "/usr/lib64/python3.11/site-packages/dbus/proxies.py", line 543, in connect_to_signal
Mar 30 17:40:00 bflap lnxlink[718304]:     return self._obj.connect_to_signal(signal_name, handler_function,
Mar 30 17:40:00 bflap lnxlink[718304]:            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Mar 30 17:40:00 bflap lnxlink[718304]:   File "/usr/lib64/python3.11/site-packages/dbus/proxies.py", line 366, in connect_to_signal
Mar 30 17:40:00 bflap lnxlink[718304]:     self._bus.add_signal_receiver(handler_function,
Mar 30 17:40:00 bflap lnxlink[718304]:   File "/usr/lib64/python3.11/site-packages/dbus/bus.py", line 144, in add_signal_receiver
Mar 30 17:40:00 bflap lnxlink[718304]:     match = super(BusConnection, self).add_signal_receiver(
Mar 30 17:40:00 bflap lnxlink[718304]:             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Mar 30 17:40:00 bflap lnxlink[718304]:   File "/usr/lib64/python3.11/site-packages/dbus/connection.py", line 388, in add_signal_receiver
Mar 30 17:40:00 bflap lnxlink[718304]:     self._require_main_loop()
Mar 30 17:40:00 bflap lnxlink[718304]: RuntimeError: To make asynchronous calls, receive signals or export objects, D-Bus connections must be attached to a main loop by passing mainloop=... to the constructor or calling dbus.set_default_main_loop(.

The notification module uses an external package called notify2 so the 1st step is to test if it works on it's own.
Create a python script called run_notify.py containing this:
import notify2

notify2.init("Test")
notify2.Notification(
    'Test notification',
    'Notification Message',
    'notification-message-im'
).show()

Run it with this command:
python3 run_notify.py

If it doesn't work you can change the notify2 package version:
pip3 install -U notify2==0.3.1

and then retry running the above script.
Let me know if it works.

Thanks for your prompt response @bkbilly!
I confirm that it's working with your test script and my package is up-to-date:
pip freeze | grep -i notify
notify2==0.3.1
pyinotify==0.9.6

I've had the same issue, but I never noticed it.
I'll try to fix it and I'll let you know.

I've pushed an update with the fix. You can try it by updating lnxlink to the latest version (2023.4.0) using this command:
pip3 install -U lnxlink

Let me know if you still have issues.

@bkbilly  I confirm this is working for me. Thanks for the quick fix!


examples/trivial.nix: fix for b054dbd7

namespace.name has been renamed to defaultNamespace, it seems.

I haven't tested this properly, but now it builds at least.


The keep-exp flag is not compatible with PerWorldInventory

Server Implementation
Paper
Server Version
1.17.1
Describe the bug
The keep-exp flag doesn't work together with the PerWorldInventory plugin.  But if the flag keep-inventory is active at the same time, the EXP will also be restored.
To Reproduce

Install Worldguard + WorldguardExtraFlags + PerWorldInventory
Create a region.
Set the the flag keep-exp to true for the region.
Die inside the region -> you will lose your EXP
Try it without PWI -> you will keep your EXP

Expected behaviour
In a region with kee-exp flag enabled, exp should be preserved on death even if perworldinventory is enabled.
Screenshots / Videos
No response
Error log (if applicable)
There are no errors in the log.
WGEF-Reborn version
WGEF-Reborn version 2.1.6
Checklist

[X] I'm using java 16+ and running my server in 1.17.1+
[X] I am using the newest build from https://github.com/Invvk/WorldGuardExtraFlagsPlugin/releases and the issue still persists.

Anything else?
PerWorldInventory 2.3.2 (https://github.com/EbonJaeger/perworldinventory-kt)
PWI config: https://pastebin.com/yfpPm43N
PWI world settings: https://pastebin.com/hMeGkixm
Since PerWorldInventory is a widely used inventory management plugin,  it would be great if it would be compatible. Is this a bug that you can fix or does this issue need to be resolved on PerworldInventory's end?

The thing is, I'm not really sure that I can do anything because I'm already querying the flags according to the world that the player is currently in, not just the coordinates. The issue could be due to event execution priority. I've looked into the api that PWI is providing and I can't find anything that could help with this matter. I will investigate the issue further to see if I can do anything, but I can't really promise that I will be able to fix it.

unable to replicate the issue, it seems that it is working fine with PWI 2.3.2

I was able to replicate the issue. However, all of my attempts to fix the issue, including setting the exp and levels manually failed so far. I tried to change event priority but without any success. I'm sorry but I don't think I will be able to fix this issue

Thanks for your quick reply and commitment! Have a nice day 👍

I've looked inside the src of PWI in this line where he modifies the exp, if he checks for keepLevels is true like he is checking if keepInventory, in theory that would resolve the issue.

can you try this version for me ?

Awesome, it works! How did you do it?

Ahh I read your comment, thank you very much! 💯

Awesome, it works! How did you do it?

apparently, because the event priority in PWI is MONITOR meaning it will run last, and I noticed that in the source code it seemed that PWI developer was setting the exp and levels to newExp and newLevel. I moved my event priority back a bit making it run before PWI's event and I attempt to set newExp and newLevel with the player exp and level before death. it seems that it fixed the issue


Add system runtime static linking

Re: Issue #1692
This adds a NINJA_STATIC_SYSTEM_LIBS CMake option that can be used to add the flags needed for static linking with the system runtime libraries with VC++ on Windows and gcc/clang (using libstdc++) on other platforms. It should handle adding flags for multi-configuration and single build type CMake generators correctly.
By default the static linking option is off so users building and installing a copy of ninja from source on their systems will link with the shared system libraries and (in theory) be able to get whatever benefits come from updating the system libraries.
The builds on GitHub Actions enable the static linking option for Windows and Linux builds (checking the new Windows binary with dumpbin /dependents shows none of the VC++ runtime libraries, the Linux binaries have a significantly smaller number of system library dependencies).
There's also a minor switch from matrix.os to runner.os which should be more reliable for checking the OS type than using image names.
Some future areas for improving the compatibility of released binaries:

This brings the Linux binaries close to working on more systems, the next step will be switching over to a CentOS 6 Docker image for building the Linux release binary.
Apple doesn't support static linking with system libraries, so the option is not enabled for macOS builds (I have some other ideas to try). Gatekeeper on 10.15 is a challenge.

for cmake >= 3.15, check this


Exception has occurred: CLR/System.InvalidOperationException

Hi guys! I am having a problem with my code and unsure of the root cause to the issue. The error I keep getting is: Exception has occurred: CLR/System.InvalidOperationException
I have taken a look at the SampleProgram for writing the ImGuiController, and the error is occurring on Line 319 in ImGuiController.cs (the foreach (MouseEvent mEvent in snapshot.MouseEvents)).
The full error:
An exception of type 'System.InvalidOperationException' occurred in System.Private.CoreLib.dll but was not handled in user code: 'Collection was modified; enumeration operation may not execute.'
   at System.ThrowHelper.ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()
   at System.Collections.Generic.List`1.Enumerator.MoveNextRare()
   at System.Collections.Generic.List`1.Enumerator.MoveNext()
   at FrostEngine.IMGUI.ImGuiController.UpdateImGuiInput(InputSnapshot snapshot) in C:\development\FrostEngine\FEngine\Engine\ImGui\ImGuiController.cs:line 319
   at FrostEngine.IMGUI.ImGuiController.Update(Single deltaSeconds, InputSnapshot snapshot) in C:\development\FrostEngine\FEngine\Engine\ImGui\ImGuiController.cs:line 291
   at Sandbox.Program.<>c.<Main>b__4_0() in C:\development\FrostEngine\Sandbox\Program.cs:line 35
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)

Program.cs:
using System;
using System.Threading;
using System.Linq;
using System.Numerics;
using Veldrid;
using ImGuiNET;
using FrostEngine;
using FrostEngine.IMGUI;

namespace Sandbox
{
    class Program
    {
        static Application m_Application;

        static CommandList m_CommandList;
        static ImGuiController m_ImGuiController;

        static Vector3 clearColor = new Vector3(0.45f, 0.55f, 0.6f);

        static void Main(string[] args)
        {
            m_Application = new Application(new WindowProps("Sandbox", 1280, 720));
            m_Application.Run();

            m_CommandList = m_Application.GetWindow().GetGraphicsDevice().ResourceFactory.CreateCommandList();
            m_ImGuiController = new ImGuiController(m_Application.GetWindow().GetGraphicsDevice(), m_Application.GetWindow().GetGraphicsDevice().MainSwapchain.Framebuffer.OutputDescription, m_Application.GetWindow().GetWidth(), m_Application.GetWindow().GetHeight());

            new Thread(() =>
            {
                while (m_Application.IsRunning())
                {
                    if (!m_Application.IsRunning()) break;

                    m_ImGuiController.Update(1f / 60f, m_Application.GetWindow().GetSnapshot());

                    RenderImGui();

                    m_CommandList.Begin();
                    m_CommandList.SetFramebuffer(m_Application.GetWindow().GetGraphicsDevice().MainSwapchain.Framebuffer);
                    m_CommandList.ClearColorTarget(0, new RgbaFloat(clearColor.X, clearColor.Y, clearColor.Z, 1f));
                    m_ImGuiController.Render(m_Application.GetWindow().GetGraphicsDevice(), m_CommandList);
                    m_CommandList.End();
                    m_Application.GetWindow().GetGraphicsDevice().SubmitCommands(m_CommandList);
                    m_Application.GetWindow().GetGraphicsDevice().SwapBuffers();
                }

                m_Application.GetWindow().GetGraphicsDevice().WaitForIdle();
                m_ImGuiController.Dispose();
                m_CommandList.Dispose();
                m_Application.GetWindow().GetGraphicsDevice().Dispose();
            }).Start();

            void RenderImGui()
            {
                ImGui.ShowDemoWindow();
            }

            new Game();
        }

        public class Game : Window
        {
            public override void OnWindowResize()
            {
                Debug.Log("Running OnWindowResize()", LogEnvironment.Client);

                GraphicsDevice m_GraphicsDevice = m_Application.GetWindow().GetGraphicsDevice();

                int windowWidth = m_Application.GetWindow().GetWidth();
                int windowHeight = m_Application.GetWindow().GetHeight();

                m_ImGuiController.WindowResize(windowWidth, windowHeight);

                base.OnWindowResize();
            }
        }
    }
}

ImGuiController.cs:
using System;
using System.Collections.Generic;
using System.Numerics;
using System.Reflection;
using System.IO;
using System.Runtime.CompilerServices;
using Veldrid;
using ImGuiNET;

namespace FrostEngine.IMGUI
{
    public class ImGuiController : IDisposable
    {
        GraphicsDevice m_GraphicsDevice;
        bool frameBegun;

        // Veldrid objects
        DeviceBuffer m_VertexBuffer;
        DeviceBuffer m_IndexBuffer;
        DeviceBuffer m_ProjMatrixBuffer;
        Texture m_FontTexture;
        TextureView m_FontTextureView;
        Shader m_VertexShader;
        Shader m_FragmentShader;
        ResourceLayout m_Layout;
        ResourceLayout m_TextureLayout;
        Pipeline m_Pipeline;
        ResourceSet m_MainResourceSet;
        ResourceSet m_FontTextureResourceSet;

        IntPtr fontAtlasID = (IntPtr)1;
        bool controlDown;
        bool shiftDown;
        bool altDown;
        bool winKeyDown;

        int windowWidth;
        int windowHeight;
        Vector2 scaleFactor = Vector2.One;

        // Image trackers
        readonly Dictionary<TextureView, ResourceSetInfo> setsByView = new Dictionary<TextureView, ResourceSetInfo>();
        readonly Dictionary<Texture, TextureView> autoViewsByTexture = new Dictionary<Texture, TextureView>();
        readonly Dictionary<IntPtr, ResourceSetInfo> viewsByID = new Dictionary<IntPtr, ResourceSetInfo>();
        readonly List<IDisposable> ownedResources = new List<IDisposable>();

        int lastAssignedID = 100;

        public ImGuiController(GraphicsDevice graphicsDevice, OutputDescription outputDescription, int width, int height)
        {
            m_GraphicsDevice = graphicsDevice;
            windowWidth = width;
            windowHeight = height;

            IntPtr context = ImGui.CreateContext();
            ImGui.SetCurrentContext(context);
            var fonts = ImGui.GetIO().Fonts;
            fonts.AddFontDefault();

            CreateDeviceResources(graphicsDevice, outputDescription);
            SetKeyMappings();

            SetPerFrameImGuiData(1f / 60f);

            ImGui.NewFrame();
            frameBegun = true;
        }

        public void WindowResize(int width, int height)
        {
            windowWidth = width;
            windowHeight = height;
        }

        public void DestroyDeviceObjects()
        {
            Dispose();
        }

        public void CreateDeviceResources(GraphicsDevice graphicsDevice, OutputDescription outputDescription)
        {
            m_GraphicsDevice = graphicsDevice;

            ResourceFactory factory = graphicsDevice.ResourceFactory;

            m_VertexBuffer = factory.CreateBuffer(new BufferDescription(10000, BufferUsage.VertexBuffer | BufferUsage.Dynamic));
            m_VertexBuffer.Name = "FrostEngine.IMGUI Vertex Buffer";

            m_IndexBuffer = factory.CreateBuffer(new BufferDescription(2000, BufferUsage.IndexBuffer | BufferUsage.Dynamic));
            m_IndexBuffer.Name = "FrostEngine.IMGUI Index Buffer";

            RecreateFontDeviceTexture(graphicsDevice);

            m_ProjMatrixBuffer = factory.CreateBuffer(new BufferDescription(64, BufferUsage.UniformBuffer | BufferUsage.Dynamic));
            m_ProjMatrixBuffer.Name = "FrostEngine.IMGUI Projection Buffer";

            byte[] vertexShaderBytes = LoadEmbeddedShaderCode(graphicsDevice.ResourceFactory, "imgui-vertex", ShaderStages.Vertex);
            byte[] fragmentShaderBytes = LoadEmbeddedShaderCode(graphicsDevice.ResourceFactory, "imgui-frag", ShaderStages.Fragment);

            m_VertexShader = factory.CreateShader(new ShaderDescription(ShaderStages.Vertex, vertexShaderBytes, graphicsDevice.BackendType == GraphicsBackend.Metal ? "VS" : "main"));
            m_FragmentShader = factory.CreateShader(new ShaderDescription(ShaderStages.Fragment, fragmentShaderBytes, graphicsDevice.BackendType == GraphicsBackend.Metal ? "FS" : "main"));

            VertexLayoutDescription[] vertexLayouts = new VertexLayoutDescription[]
            {
                new VertexLayoutDescription(
                    new VertexElementDescription("in_position", VertexElementSemantic.Position, VertexElementFormat.Float2),
                    new VertexElementDescription("in_texCoord", VertexElementSemantic.TextureCoordinate, VertexElementFormat.Float2),
                    new VertexElementDescription("in_color", VertexElementSemantic.Color, VertexElementFormat.Byte4_Norm))
            };

            m_Layout = factory.CreateResourceLayout(new ResourceLayoutDescription(
                new ResourceLayoutElementDescription("ProjectionMatrixBuffer", ResourceKind.UniformBuffer, ShaderStages.Vertex),
                new ResourceLayoutElementDescription("MainSampler", ResourceKind.Sampler, ShaderStages.Fragment)
            ));

            m_TextureLayout = factory.CreateResourceLayout(new ResourceLayoutDescription(
                new ResourceLayoutElementDescription("MainTexture", ResourceKind.TextureReadOnly, ShaderStages.Fragment)
            ));

            GraphicsPipelineDescription pipelineDescription = new GraphicsPipelineDescription(
                BlendStateDescription.SingleAlphaBlend,
                new DepthStencilStateDescription(false, false, ComparisonKind.Always),
                new RasterizerStateDescription(FaceCullMode.None, PolygonFillMode.Solid, FrontFace.Clockwise, false, true),
                PrimitiveTopology.TriangleList,
                new ShaderSetDescription(vertexLayouts, new[] { m_VertexShader, m_FragmentShader }),
                new ResourceLayout[] { m_Layout, m_TextureLayout },
                outputDescription,
                ResourceBindingModel.Default
            );

            m_Pipeline = factory.CreateGraphicsPipeline(ref pipelineDescription);

            m_MainResourceSet = factory.CreateResourceSet(new ResourceSetDescription(m_Layout, m_ProjMatrixBuffer, graphicsDevice.PointSampler));

            m_FontTextureResourceSet = factory.CreateResourceSet(new ResourceSetDescription(m_TextureLayout, m_FontTextureView));
        }

        public IntPtr GetOrCreateImGuiBinding(ResourceFactory factory, TextureView textureView)
        {
            if (!setsByView.TryGetValue(textureView, out ResourceSetInfo resSetInfo))
            {
                ResourceSet resSet = factory.CreateResourceSet(new ResourceSetDescription(m_TextureLayout, textureView));
                resSetInfo = new ResourceSetInfo(GetNextImGuiBindingID(), resSet);

                setsByView.Add(textureView, resSetInfo);
                viewsByID.Add(resSetInfo.ImGuiBinding, resSetInfo);
                ownedResources.Add(resSet);
            }

            return resSetInfo.ImGuiBinding;
        }

        IntPtr GetNextImGuiBindingID()
        {
            int newID = lastAssignedID++;
            return (IntPtr)newID;
        }

        public IntPtr GetOrCreateImGuiBinding(ResourceFactory factory, Texture texture)
        {
            if (!autoViewsByTexture.TryGetValue(texture, out TextureView textureView))
            {
                textureView = factory.CreateTextureView(texture);
                autoViewsByTexture.Add(texture, textureView);
                ownedResources.Add(textureView);
            }

            return GetOrCreateImGuiBinding(factory, textureView);
        }

        public ResourceSet GetImageResourceSet(IntPtr imGuiBinding)
        {
            if (!viewsByID.TryGetValue(imGuiBinding, out ResourceSetInfo resSetInfo))
            {
                throw new InvalidOperationException("No registered ImGui binding with ID " + imGuiBinding.ToString());
            }

            return resSetInfo.ResourceSet;
        }

        public void ClearCachedImageResources()
        {
            foreach (IDisposable resource in ownedResources)
            {
                resource.Dispose();
            }

            ownedResources.Clear();
            setsByView.Clear();
            viewsByID.Clear();
            autoViewsByTexture.Clear();
            lastAssignedID = 100;
        }

        byte[] LoadEmbeddedShaderCode(ResourceFactory factory, string name, ShaderStages stage)
        {
            switch (factory.BackendType)
            {
                case GraphicsBackend.Direct3D11:
                {
                    string resourceName = name + ".hlsl.bytes";
                    return GetEmbeddedResourceBytes(resourceName);
                }
                case GraphicsBackend.OpenGL:
                {
                    string resourceName = name + ".glsl";
                    return GetEmbeddedResourceBytes(resourceName);
                }
                case GraphicsBackend.Vulkan:
                {
                    string resourceName = name + ".spv";
                    return GetEmbeddedResourceBytes(resourceName);
                }
                case GraphicsBackend.Metal:
                {
                    string resourceName = name + ".metallib";
                    return GetEmbeddedResourceBytes(resourceName);
                }
                default:
                    throw new NotImplementedException();
            }
        }

        byte[] GetEmbeddedResourceBytes(string resourceName)
        {
            Assembly assembly = typeof(ImGuiController).Assembly;
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                byte[] ret = new byte[stream.Length];
                stream.Read(ret, 0, (int)stream.Length);
                return ret;
            }
        }

        public void RecreateFontDeviceTexture(GraphicsDevice graphicsDevice)
        {
            ImGuiIOPtr io = ImGui.GetIO();

            IntPtr pixels;
            int width, height, bytesPerPixel;

            io.Fonts.GetTexDataAsRGBA32(out pixels, out width, out height, out bytesPerPixel);
            io.Fonts.SetTexID(fontAtlasID);

            m_FontTexture = graphicsDevice.ResourceFactory.CreateTexture(TextureDescription.Texture2D(
                (uint)width,
                (uint)height,
                1,
                1,
                PixelFormat.R8_G8_B8_A8_UNorm,
                TextureUsage.Sampled
            ));

            m_FontTexture.Name = "FrostEngine.IMGUI Font Texture";

            graphicsDevice.UpdateTexture(
                m_FontTexture,
                pixels,
                (uint)(bytesPerPixel * width * height),
                0,
                0,
                0,
                (uint)width,
                (uint)height,
                1,
                0,
                0
            );

            m_FontTextureView = graphicsDevice.ResourceFactory.CreateTextureView(m_FontTexture);

            io.Fonts.ClearTexData();
        }

        public void Render(GraphicsDevice graphicsDevice, CommandList cmdList)
        {
            if (frameBegun)
            {
                frameBegun = false;
                ImGui.Render();
                RenderImDrawData(ImGui.GetDrawData(), graphicsDevice, cmdList);
            }
        }

        public void Update(float deltaSeconds, InputSnapshot snapshot)
        {
            if (frameBegun)
                ImGui.Render();

            SetPerFrameImGuiData(deltaSeconds);
            UpdateImGuiInput(snapshot);

            frameBegun = true;
            ImGui.NewFrame();
        }

        void SetPerFrameImGuiData(float deltaSeconds)
        {
            ImGuiIOPtr io = ImGui.GetIO();
            io.DisplaySize = new Vector2(
                windowWidth / scaleFactor.X,
                windowHeight / scaleFactor.Y
            );

            io.DisplayFramebufferScale = scaleFactor;
            io.DeltaTime = deltaSeconds;
        }

        void UpdateImGuiInput(InputSnapshot snapshot)
        {
            ImGuiIOPtr io = ImGui.GetIO();

            Vector2 mousePos = snapshot.MousePosition;

            bool leftPressed = false;
            bool middlePressed = false;
            bool rightPressed = false;

            foreach (MouseEvent mEvent in snapshot.MouseEvents)
            {
                if (mEvent.Down)
                {
                    switch (mEvent.MouseButton)
                    {
                        case MouseButton.Left:
                            leftPressed = true;
                            break;
                        case MouseButton.Middle:
                            middlePressed = true;
                            break;
                        case MouseButton.Right:
                            rightPressed = true;
                            break;
                    }
                }
            }

            io.MouseDown[0] = leftPressed || snapshot.IsMouseDown(MouseButton.Left);
            io.MouseDown[1] = rightPressed || snapshot.IsMouseDown(MouseButton.Right);
            io.MouseDown[2] = middlePressed || snapshot.IsMouseDown(MouseButton.Middle);

            io.MousePos = mousePos;
            io.MouseWheel = snapshot.WheelDelta;

            IReadOnlyList<char> keyCharPresses = snapshot.KeyCharPresses;
            for (int i = 0; i < keyCharPresses.Count; i++)
            {
                char c = keyCharPresses[i];
                io.AddInputCharacter(c);
            }

            IReadOnlyList<KeyEvent> keyEvents = snapshot.KeyEvents;
            for (int i = 1; i < keyEvents.Count; i++)
            {
                KeyEvent keyEvent = keyEvents[i];
                io.KeysDown[(int)keyEvent.Key] = keyEvent.Down;

                if (keyEvent.Key == Key.ControlLeft)
                {
                    controlDown = keyEvent.Down;
                }
                if (keyEvent.Key == Key.ShiftLeft)
                {
                    shiftDown = keyEvent.Down;
                }
                if (keyEvent.Key == Key.AltLeft)
                {
                    altDown = keyEvent.Down;
                }
                if (keyEvent.Key == Key.WinLeft)
                {
                    winKeyDown = keyEvent.Down;
                }
            }

            io.KeyCtrl = controlDown;
            io.KeyAlt = altDown;
            io.KeyShift = shiftDown;
            io.KeySuper = winKeyDown;
        }

        private static void SetKeyMappings()
        {
            ImGuiIOPtr io = ImGui.GetIO();

            io.KeyMap[(int)ImGuiKey.Tab] = (int)Key.Tab;
            io.KeyMap[(int)ImGuiKey.LeftArrow] = (int)Key.Left;
            io.KeyMap[(int)ImGuiKey.RightArrow] = (int)Key.Right;
            io.KeyMap[(int)ImGuiKey.UpArrow] = (int)Key.Up;
            io.KeyMap[(int)ImGuiKey.DownArrow] = (int)Key.Down;
            io.KeyMap[(int)ImGuiKey.PageUp] = (int)Key.PageUp;
            io.KeyMap[(int)ImGuiKey.PageDown] = (int)Key.PageDown;
            io.KeyMap[(int)ImGuiKey.Home] = (int)Key.Home;
            io.KeyMap[(int)ImGuiKey.End] = (int)Key.End;
            io.KeyMap[(int)ImGuiKey.Delete] = (int)Key.Delete;
            io.KeyMap[(int)ImGuiKey.Backspace] = (int)Key.BackSpace;
            io.KeyMap[(int)ImGuiKey.Enter] = (int)Key.Enter;
            io.KeyMap[(int)ImGuiKey.Escape] = (int)Key.Escape;
            io.KeyMap[(int)ImGuiKey.Space] = (int)Key.Space;
            io.KeyMap[(int)ImGuiKey.A] = (int)Key.A;
            io.KeyMap[(int)ImGuiKey.C] = (int)Key.C;
            io.KeyMap[(int)ImGuiKey.V] = (int)Key.V;
            io.KeyMap[(int)ImGuiKey.X] = (int)Key.X;
            io.KeyMap[(int)ImGuiKey.Y] = (int)Key.Y;
            io.KeyMap[(int)ImGuiKey.Z] = (int)Key.Z;
        }

        void RenderImDrawData(ImDrawDataPtr drawDataPtr, GraphicsDevice graphicsDevice, CommandList cmdList)
        {
            uint vertexOffsetInVertices = 0;
            uint indexOffsetInElements = 0;

            if (drawDataPtr.CmdListsCount == 0)
            {
                return;
            }

            uint totalVBSize = (uint)(drawDataPtr.TotalVtxCount * Unsafe.SizeOf<ImDrawVert>());
            if (totalVBSize > m_VertexBuffer.SizeInBytes)
            {
                graphicsDevice.DisposeWhenIdle(m_VertexBuffer);
                m_VertexBuffer = graphicsDevice.ResourceFactory.CreateBuffer(new BufferDescription((uint)(totalVBSize * 1.5f), BufferUsage.VertexBuffer | BufferUsage.Dynamic));
            }

            uint totalIBSize = (uint)(drawDataPtr.TotalIdxCount * sizeof(ushort));
            if (totalIBSize > m_IndexBuffer.SizeInBytes)
            {
                graphicsDevice.DisposeWhenIdle(m_IndexBuffer);
                m_IndexBuffer = graphicsDevice.ResourceFactory.CreateBuffer(new BufferDescription((uint)(totalIBSize * 1.5f), BufferUsage.IndexBuffer | BufferUsage.Dynamic));
            }

            for (int i = 0; i < drawDataPtr.CmdListsCount; i++)
            {
                ImDrawListPtr cList = drawDataPtr.CmdListsRange[i];

                cmdList.UpdateBuffer(
                    m_VertexBuffer,
                    vertexOffsetInVertices * (uint)Unsafe.SizeOf<ImDrawVert>(),
                    cList.VtxBuffer.Data,
                    (uint)(cList.VtxBuffer.Size * Unsafe.SizeOf<ImDrawVert>())
                );

                cmdList.UpdateBuffer(
                    m_IndexBuffer,
                    indexOffsetInElements * sizeof(ushort),
                    cList.IdxBuffer.Data,
                    (uint)(cList.IdxBuffer.Size * sizeof(ushort))
                );

                vertexOffsetInVertices += (uint)cList.VtxBuffer.Size;
                indexOffsetInElements += (uint)cList.IdxBuffer.Size;
            }

            ImGuiIOPtr io = ImGui.GetIO();
            Matrix4x4 mvp = Matrix4x4.CreateOrthographicOffCenter(
                0f,
                io.DisplaySize.X,
                io.DisplaySize.Y,
                0.0f,
                -1.0f,
                1.0f
            );

            graphicsDevice.UpdateBuffer(m_ProjMatrixBuffer, 0, ref mvp);

            cmdList.SetVertexBuffer(0, m_VertexBuffer);
            cmdList.SetIndexBuffer(m_IndexBuffer, IndexFormat.UInt16);
            cmdList.SetPipeline(m_Pipeline);
            cmdList.SetGraphicsResourceSet(0, m_MainResourceSet);

            drawDataPtr.ScaleClipRects(io.DisplayFramebufferScale);

            int vtxOffset = 0;
            int idxOffset = 0;
            for (int n = 0; n < drawDataPtr.CmdListsCount; n++)
            {
                ImDrawListPtr cList = drawDataPtr.CmdListsRange[n];
                for (int cmdI = 0; cmdI < cList.CmdBuffer.Size; cmdI++)
                {
                    ImDrawCmdPtr pCmd = cList.CmdBuffer[cmdI];
                    if (pCmd.UserCallback != IntPtr.Zero)
                    {
                        throw new NotImplementedException();
                    }
                    else
                    {
                        if (pCmd.TextureId != IntPtr.Zero)
                        {
                            if (pCmd.TextureId == fontAtlasID)
                            {
                                cmdList.SetGraphicsResourceSet(1, m_FontTextureResourceSet);
                            }
                            else
                            {
                                cmdList.SetGraphicsResourceSet(1, GetImageResourceSet(pCmd.TextureId));
                            }
                        }

                        cmdList.SetScissorRect(
                            0,
                            (uint)pCmd.ClipRect.X,
                            (uint)pCmd.ClipRect.Y,
                            (uint)(pCmd.ClipRect.Z - pCmd.ClipRect.X),
                            (uint)(pCmd.ClipRect.W - pCmd.ClipRect.Y)
                        );

                        cmdList.DrawIndexed(pCmd.ElemCount, 1, (uint)idxOffset, vtxOffset, 0);
                    }

                    idxOffset += (int)pCmd.ElemCount;
                }

                vtxOffset += cList.VtxBuffer.Size;
            }
        }

        public void Dispose()
        {
            m_VertexBuffer.Dispose();
            m_IndexBuffer.Dispose();
            m_ProjMatrixBuffer.Dispose();
            m_FontTexture.Dispose();
            m_FontTextureView.Dispose();
            m_VertexShader.Dispose();
            m_FragmentShader.Dispose();
            m_Layout.Dispose();
            m_TextureLayout.Dispose();
            m_Pipeline.Dispose();
            m_MainResourceSet.Dispose();

            foreach (IDisposable resource in ownedResources)
            {
                resource.Dispose();
            }
        }

        struct ResourceSetInfo
        {
            public readonly IntPtr ImGuiBinding;
            public readonly ResourceSet ResourceSet;

            public ResourceSetInfo(IntPtr imGuiBinding, ResourceSet resourceSet)
            {
                ImGuiBinding = imGuiBinding;
                ResourceSet = resourceSet;
            }
        }
    }
}

Window.cs:
using System;
using System.Threading;
using Veldrid;
using Veldrid.Sdl2;
using Veldrid.StartupUtilities;

namespace FrostEngine
{
    public class WindowProps
    {
        public string Title;
        public int Width;
        public int Height;

        public WindowProps(string windowTitle = "Frost App", int windowWidth = 1280, int windowHeight = 720)
        {
            Title = windowTitle;
            Width = windowWidth;
            Height = windowHeight;
        }
    };

    // TODO: Call GraphicsDevice.SwapBuffers() somewhere
    // TODO: Call GraphicsDevice.WaitForIdle(), GraphicsDevice.Dispose() somewhere
    public class Window
    {
        Sdl2Window window;
        static GraphicsDevice m_GraphicsDevice;

        InputSnapshot snapshot;

        public Window() {}

        public Window(WindowProps props)
        {
            Debug.Info($"Creating window: {props.Title} ({props.Width}, {props.Height})", LogEnvironment.Engine);

            WindowCreateInfo m_WindowCreateInfo = new WindowCreateInfo();

            m_WindowCreateInfo.X = 100;
            m_WindowCreateInfo.Y = 100;
            m_WindowCreateInfo.WindowWidth = props.Width;
            m_WindowCreateInfo.WindowHeight = props.Height;
            m_WindowCreateInfo.WindowTitle = props.Title;

            window = VeldridStartup.CreateWindow(ref m_WindowCreateInfo);

            GraphicsDeviceOptions m_GraphicsDeviceOptions = new GraphicsDeviceOptions();
            m_GraphicsDeviceOptions.PreferStandardClipSpaceYDirection = true;
            m_GraphicsDeviceOptions.PreferDepthRangeZeroToOne = true;

            m_GraphicsDevice = VeldridStartup.CreateGraphicsDevice(window, m_GraphicsDeviceOptions);

            if (window == null)
                Debug.Error($"Failed to create {props.Title}", LogEnvironment.Engine);

            window.Resized += () => OnWindowResize();

            window.Closing += () => Environment.Exit(0);
            window.Closed += () => Environment.Exit(0);
        }

        public void KeepAlive()
        {
            new Thread(() =>
            {
                while (window.Exists)
                {
                    snapshot = window.PumpEvents();
                }
            }).Start();
        }

        public void Close()
        {
            if (window.Exists)
                window.Close();
        }

        public void SetVisible(bool visible) { window.Visible = visible; }
        public bool GetVisible() { return window.Visible; }

        public void SetBorderVisible(bool visible) { window.BorderVisible = visible; }
        public bool GetBorderVisible() { return window.BorderVisible; }

        public int GetWidth() { return window.Width; }
        public int GetHeight() { return window.Height; }

        public InputSnapshot GetSnapshot() { return snapshot; }

        public GraphicsDevice GetGraphicsDevice() { return m_GraphicsDevice; }

        public virtual void OnWindowResize() {}
    }
}

Application.cs:
using System;

namespace FrostEngine
{
    public class Application
    {
        Window m_Window;

        bool m_Running = false;

        public Application(WindowProps props)
        {
            m_Window = new Window(new WindowProps(props.Title, props.Width, props.Height));
        }

        public void Run()
        {
            m_Window.KeepAlive();
            m_Running = true;
        }

        public bool IsRunning() { return m_Running; }

        public Window GetWindow() { return m_Window; }
    }
}

Based on some of the first sections in that code, it seems like you have a multi-threaded setup going on. The exception in question is complaining that the input snapshot was modified while you were running a foreach on it. Accessing that data isn't thread-safe, so if you want to have a second threat continuously pumping the window's message loop and producing new input snapshots, you'll have to use some kind of synchronization mechanism here.

Based on some of the first sections in that code, it seems like you have a multi-threaded setup going on. The exception in question is complaining that the input snapshot was modified while you were running a foreach on it. Accessing that data isn't thread-safe, so if you want to have a second threat continuously pumping the window's message loop and producing new input snapshots, you'll have to use some kind of synchronization mechanism here.

Thanks for the response, I actually managed to figure this out already but thank you! I took the while loop out of a new thread which fixed my problem.

Based on some of the first sections in that code, it seems like you have a multi-threaded setup going on. The exception in question is complaining that the input snapshot was modified while you were running a foreach on it. Accessing that data isn't thread-safe, so if you want to have a second threat continuously pumping the window's message loop and producing new input snapshots, you'll have to use some kind of synchronization mechanism here.

Can I please just quickly raise another issue I am having with ImGuiController.cs from the docking branch? When I run my application, I get an error: System.EntryPointNotFoundException: Unable to find an entry point named 'igGetPlatformIO' in DLL 'cimgui' - I currently have ImGuiNET.Docking from NuGet packages.

I currently have ImGuiNET.Docking from NuGet packages

I'm not really sure what that means. The regular NuGet package is built from the docking branch these days, though. The docking branch here is now fully up-to-date with the master branch, and has updated cimgui binaries. If you're trying to mix-and-match versions of the NuGet packages with the code in the GitHub repo you will might hit some compatibility issues, so it's probably best to stick to a version of the ImGuiController that matches the release you are using (or just use something like Veldrid.ImGui which also has regular stable NuGet releases).

I currently have ImGuiNET.Docking from NuGet packages

I'm not really sure what that means. The regular NuGet package is built from the docking branch these days, though. The docking branch here is now fully up-to-date with the master branch, and has updated cimgui binaries. If you're trying to mix-and-match versions of the NuGet packages with the code in the GitHub repo you will might hit some compatibility issues, so it's probably best to stick to a version of the ImGuiController that matches the release you are using (or just use something like Veldrid.ImGui which also has regular stable NuGet releases).

Okay, thank you! I will stick to using only the things on the latest version.