User Experience and Performance

@cwilhit I am not sure if this is the right place to report user experience and performance issues. I thought you might want some feed back:
My Host Machine:
Surface Book 2 16GB RAM, Core I7, 512GB HD running Windows 10 Build 1803
My Virtual Machine:
4 CPUs, 8GB RAM, 256 HD running Ubuntu 18.04 (final release) in enhanced session full screen.
My experience:
The user experience is poor. Sluggish UI as if the screen is being redrawn frame by frame when minimising/maximising/switching between apps. Scrolling moves the page too far up or down with no options to adjust mouse settings through XRDP. Typing experience feels odd with a slight delay.
As a web developer this is unusable. VMWARE does a better job at virtualising Ubuntu (with minor issues).
This is a shame, it would have made the perfect development environments for my projects.
Iam now contemplating dual boot however due to some hardware compatibility issues, listed here: https://github.com/jakeday/linux-surface/issues I will have some limitations...
@cwilhit It will be interesting to know if Microsoft would ever release a Linux kernel for the Surface line?

Is this for 16.04 or 18.04? What you are describing is abnormal and not an expected experience--something must not be working somewhere along the line. To be sure, can you verify for me that when you connect to the VM, you are greeted with the XRDP login screen with the blue background and you successfully connect via that?
We will have the pre-configured ubuntu image in our quick create gallery shortly. It may be best for you to wait until then and use that instead.

@cwilhit Thanks for your reply. I am definitely using XRDP with Ubuntu 18.04. Its good to know that what I am experiencing is abnormal.
I am looking forward to the pre-configured Ubuntu image. Is there a web site I should monitor to find out when its released?

We'll make a blog post at https://blogs.technet.microsoft.com/virtualization/.
Or if you're on twitter and that's easier, you can follow me and I'll tweet out when it gets updated.

Hi guys, I can confirm the same experience that @Fabyao is reporting.
I'm running a T460p with Quad-Core core i7 with 32GB and pretty much the same VM as @Fabyao.
Will try again when pre-configured image is released.

My Host Machine:
Surface Book 2 16GB RAM, Core I7, 512GB HD running Windows 10 Build 1803
Same perf issues as above.
Also when running ubuntu 16.04 in full screen everything is super tiny.
Actually it does not matter which resolution I choose, it is still super tiny. Can hardly read any text unless I get superclose to the screen.

@grbinho - Do you happen to have the WQHD IPS monitor on that laptop? If so my guess is this is a high DPI bug in common between all three cases.

@jterry75 Yes. It's a WQHD display.

Thanks for the response. I will track down a High DPI display and try this out. Its almost certainly the reason for the low performance you all are seeing.

I do experience the same sluggishness and slow redraw issues described as well. Looking at my system spec it seems to be related to HiDPI indeed, here's what I'm running:
Dell XPS 15 9560 (3840x2160 builtin display, i7-7700HQ, 32GB Ram)
Windows 10 Build 1803
Fresh Ubuntu 18.04 on Hyper-V, treated with the scripts from this repo
Install went smooth and I'm greeted with the separate RDP login screen as expected, so I would think it's installed properly.

i am having a similar issue.
I have a 4k display with nvidia 1080 card.
I even enabled the remote fx 3d driver, but the ui seems to be painting frame by frame.
very poor experience

Same issue here.
Host machine:
i7-5820k
16GB ram
Geforce 980
Virtual machine:
Ubuntu 18.04
8Gb ram
RemoteFX with 1GB and max resolution of 4k (3820x2160)
Pretty smooth ride up to this point I got to say, its the sluggish UI performance that keeps me away for now.
@cwilhit Gonna keep an eye out for that image for sure!

Same here:
Host Windows 10 on latest non-insider, 16GB RAM, 1440p screen, i7 7700k
VM Ubuntu 18.04, 8GB RAM, RemoteFX with 1GB and max res of 2560x1600.
I had the usual resolution prompts and blue screen etc. All worked well but the end result is laggy :)

I have the same issues and want to share my observations here too. My setup:

Ubuntu 18.04 on Hyper-V, executed the 18.04 install.sh script from this repo
Windows 10 1804, powershell script to enable HvSocket executed

It seems everything works fine, I get the XRDP login screen, can use the VM in full screen, use copy & paste and so on. The process was very straightforward, I tried it couple of weeks ago and it was much less refined then. That's aweseome!
But I suffer the same performance problems others have pointed out here:

Overall very sluggish, laggy UI/UX ... any effects in Ubuntu seem to run with 5 fps
I also suffer from the mentioned keyboard input lag, making it very hard to to anything productive in the VM
CPU utilization is very high as soon as i start doing anything, if only moving my mouse pointer around (for examle hovering over icons on the dock).

The high CPU utilization is mostly consumed by the gnome-shell process and it's anywhere between 70 and 90 % on 4 cores while moving the mouse - until i stop moving the pointer.
I added the RemoteFX virtual graphics adapter to the Hyper-V VM, but I don't know if this can even be utilized over XRDP as I suspected that UI rendering seems to be the bottleneck here. But it didn't help and I think Ubuntu simply cannot make use of it.
As there was a discussion about High DPI displays causing this issue - I only have a 1920x1200 screen here on my PC. And I have a 1080p screen on my Dell XPS 15 - on both the performance is not good enough so it can be used. Just fyi, the XPS 15 does have i7 Quad Core CPU, 16 GB of RAM, NVidia GTX 1050 GPU, SSD ... so it's pretty capable.
If I can provide any more details to help analyzing, I'd be glad to help. Thing is, in this state it can only be used to do some quick things/tests inside the VM but it is not good enough to do anything productive. But for that, the not-enhanced mode is also good enough - so it would be important to have a decent performing UI/UX to really make use of this feature.
As others have noted, VMWare or VirtualBox offers much better performance, but I want to use Hyper-V as I'd have to disable it to use VMWare/VirtualBox, but that means issues with other things where I need Hyper-V (Android Emulators, Docker, ...) - so Hyper-V would be the most convenient and preferred option.

What does this have to do with HiDPI? I also have 4k screen, but even if I start with low resolution, the performance is poor.
Has anyone managed to configure Ubuntu 18.04 with acceptable video performance?

Bought a new regular low res 25 inch monitor. Ubuntu works fine with enhanced session.
On my hidpi, not so great. Hope to see this fixed in the next summer/ fall windows update.
Also, still looking forward to the ubuntu latest version in the quick create wizard!

Experiencing the same performance issues. My setup is basically identical to @codekoenig's. The VM really is literally unusable in this state and as others have said, I'd happily use VirtualBox instead but Hyper-V is required for Docker - a common scenario.

I tried with RemoteFX (by disabling a enhanced mode, since those two does not work together).
I was able to watch YouTube video (albeit the display resolution was low). The best would be for Microsoft to implement some other way for enhanced mode, which does not require xrdp, so we could use RemoteFX instead.
Yard stick for good performance is, that can you watch a video through a Hyper-V? If not, then back to drawing board, the current setup is not good enough.

Why not just write an Open Source video driver for Linux that is supported by Hyper-V?  Fix it natively...

@code4clouds "why not just"?? You say that like it's a Friday afternoon task. It's not a trivial thing to do.

until the desktop experience leverages hardware acceleration this project is sadly DOA.  I would like nothing more for this project to succeed

I just noticed that after upgrading my VM Configuration Version from 8.2 to 8.3, I started experiencing the same slowness where each frame is drawn painfully slow, so it appears to be some regression. With 8.3 I was able to enable RemoteFX though, and (without using xrdp) it's performance was fine but the resolution was stuck. Hopefully I can get xrdp to work and everything will be fine again.

If you are like me and just want to get back to where you were before the 8.3 upgrade, there is hope! Using Powershell create a new VM with an 8.2 configuration:  New-VM -Version 8.2 -Name Ubuntu2 -Generation 2 Then set it up to use the hard drive from your previous VM and all the other relevant settings. Now my graphics performance is acceptable.

I suppose that depends on what you define as "acceptable" This should have feature parity with virtualbox IMHO and it doesn't. I appreciate the work that went into this but, there was a lot of marketing hype around this feature and it is a ways off from quality of which virtualbox delivers. If it weren't for having to use hyper-v with docker I would go back to virtualbox. Aside from performance, I still can't resize dynamically on the fly.

I think everyone who is stuck with Hyper-V should say something here: https://github.com/docker/for-win/issues/2127
The reason we are stuck with Hyper-V is because of Docker, but if they just added VirtualBox support back we could switch back to that.

Hey all, I appreciate the feedback we're getting on this thread. This has really helped me get a sense of what the gaps are in the experience offered today through Hyper-V.
The feedback we're getting really stems back to the lack of vGPU acceleration. Because we don't offer a vGPU, when you throw a high DPI monitor or display into the mix, it means we have to push all those pixels around entirely on the CPU. For standard res displays, there's less pixels to push and the performance bottleneck is unnoticeable. As soon as you jump up to a high res display (like the one on my surface book)...well, that's a lot of pixels to push and performance starts to degrade.
Of course, we acknowledge that high DPI displays are commonplace in most user's setups, so this is a completely valid pain point to experience.

Hey @cwilhit - thanks for your feedback. I just want to stress again that this is not a problem just on high DPI monitors as myself and multiple others have expressed above. It's better on regular DPI screens but far from unnoticeable. I can utilize 4 cores to nearly 80 % just by moving my mouse pointer around on the Ubuntu Desktop (1080p screen). Besides UI performance, there are also issues with keyboard input lag as was also reported by multiple people in this issue.
Are there any plans for vGPU support in Hyper-V in the future?

@robcresswell I am sharing my experience in dealing with both HyperV and WSL. For those who do not have the luxury to wait "on this niche issue" to be resolved, my comments might be give them an alternative. Indeed an option. I personally wouldn't mind somebody coming here and say:  hey! I have this option, it might work for you. It is a proactive way of dealing with things. In my view this is better than somebody hoping that for the best. Hoping for a "Any rough roadmap" that might or might not come.

@Fabyao My point is that anyone who has been able to find this report by learning about virtualisation will be well aware of the alternatives, and an issue tracker for a specific bug is not the place for discussing pro's and con's of a particular system. Just general OSS etiquette to allow maintainers to work easily without distractions.

@robcresswell My point is that I welcome any alternatives and suggestions not just by the maintainers but also by the community. Many users in the thread have done so and I am glad. You are making assumptions about anyone who finds this issue will be well-versed about alternatives. I created this issue and was not aware of how well Ubuntu would fit my requirements. If you think we are distracting the Hyper-V team by having a community driven conversation, I would suggest you create yourself a thread where you can set you own rules and stop people from expressing their alternate views.

@robcresswell As you'd probably expect with any software team, Hyper-V has finite resources to go around to solve a wide range of interesting virtualization problems. At this time, we do not have an ETA for bringing vGPU support to Linux.
Also as a general FYI: We do have a perf fix rolling out in the latest Windows insider build released today (17738) to address a bug we found. To level-set expectations regarding the fix:  the fix is not promising native performance, but it does bring performance parity to be close to on par with what you'd get via Enhanced mode Windows VMs. If you compare the enhanced mode Linux VM to an ehnanced mode Windows VM (no vGPU), you'll notice similar quality in terms of Youtube video playback stuttering or fishgl framerate test conducted from a browser.
There's no change necessary to your VM to take advantage of this, but your host will need to be the latest insider build.

@cwilhit Of course, appreciate the candid feedback; helps us evaluate options etc. Thanks for the information about the incoming perfect update too.
@Fabyao Your call. I'm just pointing out that in general, off-topic discussions are discouraged in issue trackers. If you want to do it anyway, go for it.

Thanks @cwilhit - to give a bit of context, many enterprises/corporates now implement DeviceGuard and CredentialGuard on Windows 10.  In turn, these features require HyperV, and that in turn means a Type2 hypervisor (VirtualBox) is no longer an option.
Our teams need a Linux development environment in a VM, and the performance as noted above is sluggish.  For reference - 2 monitors 2560x1440, a variety of CPUs from i7 3rd gen to 7th gen, 32GB RAM, 2 TB SSDs.
One other option we've found for now is NoMachine Workstation for Linux, however that limits us to a single monitor and its performance is decent but not great.   The HyperV Enhanced Session with these Linux VM Tools would be the most ideal setup.  Of course we do understand your constraints and priorities will not always match up with user expectations. But hope that gives some extra info or a bit of ammunition if ever needed.

@cwilhit  1280x1024 resolution is not considered "hi-res" by today's standards, yet the lack of hardware acceleration in graphics makes the experience horrible (due to software rendering) even on a decent modern CPU (which is expected since CPU's are not optimized for graphics manipulation, even if the resolution in low).
Anyway, the bottom line is: lack of vGPU = frustrating experience; and, as it seems, many people would agree.

It just might be that helping to run linux on your workstation is not really a priority for MS...

@Zaris001 but...

I can confirm @cwilhit that video playback is indeed much better. The UI is still sluggish, but without vGPU that is kind of what to expect from it. At least you are going the right direction, but more frequent updates would definitely be appropriated.

An earlier response indicated latest insider build improved performance by
fixing a bug in hyperv. I tried and it seems much better now. I'd say it's
at least useable now but still not on par with windows RDP sessions.
On Thu, Aug 23, 2018, 4:32 PM Loyen<EMAIL_ADDRESS>wrote:

I can confirm @cwilhit https://github.com/cwilhit that video playback
is indeed much better. The UI is still sluggish, but without vGPU that is
kind of what to expect from it. At least you are going the right direction,
but more frequent updates would definitely be appropriated.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Microsoft/linux-vm-tools/issues/28#issuecomment-415561690,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AhLHSeKUtBN6RU1yk-JfIWYymiMNhudxks5uTxF1gaJpZM4Tr2I5
.

Will this fix bei included also in Windows 10 1803? Or do we need to wait for 1809?

@bueeler The fix is available in insider builds right now or you can wait and get it with the next release of Windows in the fall.

@cwilhit If implementing vGPU support for Linux guests isn't a priority, could you at least make it possible to change the zoom level for enhanced sessions so as to improve performance on HiDPI screens by reducing presented pixel density? Right now it's grayed out for "enhanced" session.
Actually this would improve Hyper-V usability for Windows guests as well since RemoteFX isn't really powerful enough for HiDPI...

Insiders preview is not useful for people on LTSB 1607.
Is there a way to run Ubuntu 18.04 at 4k res (3840x2160) full screen as a Hyper-V guest?
Enhanced mode is off the table, does RemoteFX work?

Yeah it's a little sluggish without hardware gpu.  Virtualbox wasn't any better for me though. Ok for terminal work anyway.  Finally got rid of that fugly orange-purp with X-arc plus papirus.
i5-4200u, 1080

Is there a way to run Ubuntu in Enhanced Mode at a low resolution and then zoom the hyper v windows to full screen on my 4K monitor?
I am asking because even throwing all my PC resources at the VM (created with the quick create wizard) the interface incredibly laggy with any resolution >= full HD.

First off, I want to confirm that I am having this issue with quite the build.
Setup
AMD Ryzen 1700x 8c16t (3.2ghz I think?)
AMD RX 480 8GB
Samsung 960 Evo M.2 SSD
2 x 8GB DDR4-3200 (16GB)
Triple 1080P monitors
I managed to get this working on Debian with various desktop environments as well and do some testing. Same results.
I configured each VM with 16 v-cores and 4GB of RAM. The video performance is still quite stuttery when I go full screen on all of my monitors. This is despite throwing all of the CPU horsepower I got at it. Having a lighter Desktop Environment such as XFCE and LXDE does help a little but YouTube Videos is still a no possibility.
With that said, I have 2 questions I have that may lead us to a solution:

Is there a video driver for Hyper-V vGPU acceleration for Linux? If not can we make one?
Does xRDP support hardware acceleration? If so  can we make Hyper-V vGPU play nice with it?

I am going to look more into this and maybe post some results in the next 2 weeks or so. If anyone wants to chip in and give some input, I would greatly appreciate it.

It could also be that xRDP may not be the best solution for Enhanced Mode UX wise. Is there any chance Enhanced mode can work with the Xserver or Wayland directly instead of going through xRDP? That would probably be the ideal solution but it would take a lot of work.

@Brekmister That's definitely an exciting thought. I keep reading articles alluding to Weston having an RDP back-end (e.g.: https://wiki.tizen.org/Weston_RDP_access), but I've never found anything "official". I'm certain I'm glossing over some very important items, but at a high level it seems like if we could get some kind of basic pass-through access to the GPU (perhaps the RemoteFX 3d adapter could help here?) and hardware acceleration written for Weston-RDP we'd be in business.
@cwilhit I sincerely empathize with having too many tasks and not enough time to get to them all. Farming some of this work out to the community by keeping the necessary development tasks in the open source realm may be a way around the bottleneck. Do you have any idea on what would need to be exposed as virtual hardware and the level of effort to do so?

@Brekmister @bgshacklett first off, love the enthusiasm regarding this feature.
We've covered this a bit earlier in the thread, but I don't mind reiterating here: Enhanced Mode works by transporting your VM display over RDP. It's much like installing xrdp and remoting over the network to a machine, but instead we bypass going over the network and use an optimized transport that goes over hv_sock (think: conventional IPC sockets, but securely provided by the virtualization platform--in this case, Hyper-V). This way, we avoid going over the network and get a safe, efficient solution. RDP over hv_sock is not the issue, nor is xrdp the bottleneck.
What this also means is the vCPUs of your VM will be used to render/encode all the pixels on your VM display before sending them over the vsock. When you scale this up to what is effectively a 4k display....well, that's a lot of pixels for the CPU to push over vsock. In our enhanced Linux VM case, really any resolution above 1080p starts to really influence what the user perceives to be a lag. The solution, as has been discussed earlier in the thread, is to instead do the render/encode of all these pixels on the GPU, which is well-suited for these sorts of things. In this case, you have a few options (all of which are non-starters today):

Passthrough GPU device - give an entire GPU to the VM. You would need pro-grade GPU cards, we do not support this for non-Windows Server hosts in Hyper-V, and a few other reasons. You can read more on our docs here

vGPU - this is where the VM is given a virtualized GPU device. Think of it as the host knowing how to share the GPU with the VM (I believe VirtualBox has an implementation). There is a non-insignificant amount of work to light up such a feature. It's very apparent from this thread there's group of users for which the experience is sub-optimal without vGPU.
RemoteFX - this is a type of vGPU implementation. However, we've deprecated this technology and are moving away from it.

@cwilhit I feel like this xrdp was supposed to solve a lot of issues it didn't like dynamic scaling on the fly, performance etc... if it doesn't aren't we barking up the wrong tree? Are we looking for a solution in the wrong place? Why doesn't hyper-v without xrdp support this the same as something like VBOX does. Why doesn't the standard connection using hyper-v not work. Isn't the client built into hyper-v the problem here? Why doesn't microsoft have feature parity with VBOX instead of adding all these extra layers?

@cwilhit Care to explain more about the deprecation of RemoteFX?

Ok, so I did some experimentation and research into xRDP. I am still working on investigating this but, I do I bring some bad, not-too-bad and good news.
bad news:
RemoteFX GPU has zero support for Linux guests. Which really sucks because as of right now, there really isn't a good and cheap vGPU option that would otherwise work with Hyper-V. Although, that may change, I honestly have no idea what plans Microsoft has in regards to this.
People who don't have a dedicated GPU assigned to the vm or a vGPU solution from AMD or Nvidia is going to be out of luck for now in regards to this. The best solution I can provide for these people is to get them setup with XFCE which is really light and would be much less taxing on the CPU than just plain Ubuntu but, that is another conversation for another issue.
not-so-bad news:

I confirmed what we have already discussing in this thread, the poor performance of the Enhanced Session Mode is a result of xrdp using software rendering. I confirmed this by testing it bare metal and running glxinfo | grep llvmpipe through the terminal directly on the computer and through xrdp.
Probably the most important point here, even with a GPU dedicated to the VM, you are still not going to get Hardware Acceleration on Enhanced Session Mode because of how xserver and xrdp works by default. Which is why we are saying that this integration isn't necessarily complete. However...

good news:
We can do something about that.
@worthwhileindustries has brought up an interesting point, xrdp does solve a whole lot of issues apart from just simply being an RDP server. Which is why there are a ton of different ways we can make this work. Since there is so many options and ways we can play with, I am currently doing research and exploration to see what would work best for this purpose. From what I found thus far, there are 2 possible routes we can take here:

Ride off the success of other companies and use VNC. xrdp can act as a adapter to VNC and I believe we can make it work for our purposes but, there may be some drawbacks which is what I am exploring now.
We can do some fun exploring with xrdp and xserver and see if we can get what we want out of that. We can start emailing the devs over at xrdp to get their assistance on this.

I would also like to point out that since we are taking the approach of using RDP, a potential side effect of getting this issue resolved is that RDP into Linux machines may just become so much easier and less complicated. This is because we are essentially using remote desktop to work on the Linux Machine. So not just users of Hyper-V but Linux System Admins may benefit too. This goes the other way around too, anything xrdp that works can be translated to work for us. This includes any linux distro running in bare-metal or dual-boot configuration.
Lots of options out there. I will throw out a solution when I find a good one. If anyone has input in regards to this I would love to hear it.

The latest version of Hyper-V no longer supports adding RemoteFX adapters, so it's safe to say there's not gonna be Linux support for it. Perhaps you guys could work with Intel to implement GVT-g on Hyper-V so that it can measure up to Linux-based hypervisors in graphical performance.

I was hoping that 1809 would be an improvement on an i7 SP2 at native resolution but the Ubuntu desktop definitely doesn't work at a reasonably usable speed even on 1809.  Bummer.

If MS has no interest in getting this done, the least they could do is enable a quick on/off toggle for hyper-v that doesn't require a restart.

@cwilhit I posted earlier that I get usable graphical performance (without Enhanced Mode) if the Configuration Version is 8.2, but 8.3 caused the unusable graphics that are like 1fps if that. I don't need Enhanced Mode, so I assumed this was just the bug you mentioned that should be fixed in 1809, but I just tried upgrading the configuration version to 9.0 and it's still the same <1fps graphics as 8.3.

If MS has no interest in getting this done, the least they could do is enable a quick on/off toggle for hyper-v that doesn't require a restart.

Hyper-V is a level 1 hypervisor. The reason you have to reboot is becuase you're rebooting out of Windows 10 and into a Hyper-V-wrapped Windows 10 with all of your hardware essentially passed-through so that you don't even realize you're running your "host" OS inside Hyper-V. It's nuts, but it's also why Hyper-V offers more performance (except obviously in terms of linux displays) than VMware Workstation or VirtualBox (which are level 2, meaning then run on top of Windows).

I'm on a maxed out SB2 running Ubuntu from the gallery with an xRDP session. The frame loss is quite high. Sad to hear this is a common problem. I think I will go back to VMWare and WSL for now.

@cwilhit any updates on a ETA for a fix? The insiders build isn’t working and still having issues. This is a pretty big issue. Should folks running Linux in hyper-v just move to another platform?

No new development to share on this feature request. My post on this thread from Sept 21st is still the latest. I'd recommend either running your enhanced mode connection at a lower resolution or using another virtualization platform that can meet your needs in the iterim.

No new development to share on this feature request. My post on this thread from Sept 21st is still the latest. I'd recommend either running your enhanced mode connection at a lower resolution or using another virtualization platform that can meet your needs in the interim.

@cwilhit thanks for the update, and for keeping the community in the loop!
I'm not sure if this is the right place for actual feedback, or if this is better directed in other venues.
re: Surface Book 2 15" (i7)
The combination of flipping to a base windows resolution of 1920x1200, then running "full screen" xrdp does move this from non-starter --> workable, but I do find myself a tiny bit frustrated that this lovely SB2 doesn't live up to it's potential for all of the dev tasks I want to throw at it at it's native/pretty resolution + other wonderfulness.
That said, I find myself really wanting a vGPU option to make GNOME shine.  In practice I end up:

reverting to using ubuntu as a headless VM (ssh, mapping drives, etc)
dropping the resolution (and silently wondering why I'm using a SB2 instead something much cheaper)
considering maintaining ~pets~images using other distro's or spins, and not (too time consuming)
Taking a deep breath and go back to using a Macbook Pro

I'm curious if there's any way to share roadmap / thoughts around any of the following options:

adding additional distros OOTB (e.g. Mint, Fedora Spins, or other things that require less of a GPU)

perhaps even better: packaging as .deb + .rpm (with CI for various distros) the mods needed to enable customizing images.

actual vGPU support for hyper-v (I know...not likely anytime soon)
Supporting something like VMW's "Unity Mode"
a working OOTB / supported X client/server running over hv-sock - I've not tried this, has anyone else?

I managed to drop latency from VSCode that I was getting going via x11/ssh to local vm by running i3-wm and vnc. it is annoying that I can't resize the window on the fly or start multiple windows simply like I can on windows. However, I now have native access to the files in the Linux world so now that docker works well and everything else works with less "yeah, windows doesn't work great for that".
on my 4k screen, i run it as 3400x1700 window, large enough to fit a lot in the view and small enough to see the other windows. windows 10 host runs at 100%
So arch/hyper-v/i3-wm/tigervnc to run a few gui apps works a treat.
I keep this gist up to date when i figure out new things to make setting up next time easier: https://gist.github.com/SoreGums/28f21f5ad724b4e8658c07f1999f5af1
VSCode might look into speeding up X11 - thread here https://github.com/Microsoft/vscode/issues/5243

I am having the same issue by setup with very slow graphics in the GUI.
Windows Server 2019 (host), Ubuntu 18.04 (vm) running on Dell OptiPlex 7050, i7-7700, 32G memory, 512G SSD.
The graphics works well with Ubuntu VMs on VMware Workstation.
It would be nice the graphics could be accelerated using the Intel GPU I have.

I had the same issue before, and eventually switched back to VirtualBox. The slow GUI is unbearable for any normal users.

I switched away as well. Even using Proxmox or ESXi over the internet is a better experience :(

I'd recommend either running your enhanced mode connection at a lower resolution or using another virtualization platform that can meet your needs in the interim.

Using another virtualization system is becoming an impossibility for me. So many virtualization use cases on Windows require Hyper-V that using another solution is just not reasonable anymore if the machine is used for any significant amount of modern development work. For example, I was recently forced to enable Hyper-V to enable the use of Docker on my laptop. Similarly, the new sandbox feature requires Hyper-V as well. The push towards Hyper-V makes perfect sense. It's a fantastic virtualization platform and the level of integration afforded by using it makes it perfect for these use cases, so I really can't complain on that front.
Running at a lower resolution (enough to make a difference) means that either the viewport of the VM is reduced significantly because zoom is not available in this mode:
@cwilhit How difficult would it be to enable scaling for enhanced-mode Linux VMs? While not a perfect solution (I'm still holding out for a vGPU some day), it would go a long way towards improving things.

Everyone, please try my suggestion of creating a VM with Configuration
version 8.2 (And without Enhanced mode) before you completely write off
Hyper-V. As long as I stay on version 8.2 the graphical performance is
fine. I'm sure it's not the best, but it's certainly usable with an IDE. As
soon as I upgrade to anything higher it becomes completely unusable. There
was a serious regression starting at 8.3 (probably when they added
"Enhanced" support), and based on the posts on this thread,
On Sat, Apr 27, 2019 at 10:02 AM Brian G. Shacklett <
<EMAIL_ADDRESS>wrote:

I'd recommend either running your enhanced mode connection at a lower
resolution or using another virtualization platform that can meet your
needs in the interim.
Using another virtualization system is becoming an impossibility for me.
So many virtualization use cases on Windows require Hyper-V that using
another solution is just not reasonable anymore if the machine is used for
any significant amount of modern development work. For example, I was
recently forced to enable Hyper-V to enable the use of Docker on my laptop.
Similarly, the new sandbox feature requires Hyper-V as well. The push
towards Hyper-V makes perfect sense. It's a fantastic virtualization
platform and the level of integration afforded by using it makes it perfect
for these use cases, so I really can't complain on that front.
Running at a lower resolution (enough to make a difference) means that
either the viewport of the VM is reduced significantly because zoom is not
available in this mode: [image: image]
https://user-images.githubusercontent.com/583359/56850395-fa65b800-68cf-11e9-8dae-4823bb893044.png
@cwilhit https://github.com/cwilhit How difficult would it be to enable
scaling for enhanced-mode Linux VMs? While not a perfect solution (I'm
still holding out for a vGPU some day), it would go a long way towards
improving things.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/Microsoft/linux-vm-tools/issues/28#issuecomment-487288500,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAMUMHPPMOPSOJAVXCWYFBLPSRMGZANCNFSM4E5PMI4Q
.

I meant to finish with: And based on the posts on this thread, I can tell
people are using > 8.2 with Enhanced mode, which is unusable.
On Mon, Apr 29, 2019 at 12:45 PM Charles Ritchea<EMAIL_ADDRESS>wrote:

Everyone, please try my suggestion of creating a VM with Configuration
version 8.2 (And without Enhanced mode) before you completely write off
Hyper-V. As long as I stay on version 8.2 the graphical performance is
fine. I'm sure it's not the best, but it's certainly usable with an IDE. As
soon as I upgrade to anything higher it becomes completely unusable. There
was a serious regression starting at 8.3 (probably when they added
"Enhanced" support), and based on the posts on this thread,
On Sat, Apr 27, 2019 at 10:02 AM Brian G. Shacklett <
<EMAIL_ADDRESS>wrote:

I'd recommend either running your enhanced mode connection at a lower
resolution or using another virtualization platform that can meet your
needs in the interim.
Using another virtualization system is becoming an impossibility for me.
So many virtualization use cases on Windows require Hyper-V that using
another solution is just not reasonable anymore if the machine is used for
any significant amount of modern development work. For example, I was
recently forced to enable Hyper-V to enable the use of Docker on my laptop.
Similarly, the new sandbox feature requires Hyper-V as well. The push
towards Hyper-V makes perfect sense. It's a fantastic virtualization
platform and the level of integration afforded by using it makes it perfect
for these use cases, so I really can't complain on that front.
Running at a lower resolution (enough to make a difference) means that
either the viewport of the VM is reduced significantly because zoom is not
available in this mode: [image: image]
https://user-images.githubusercontent.com/583359/56850395-fa65b800-68cf-11e9-8dae-4823bb893044.png
@cwilhit https://github.com/cwilhit How difficult would it be to
enable scaling for enhanced-mode Linux VMs? While not a perfect solution
(I'm still holding out for a vGPU some day), it would go a long way towards
improving things.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/Microsoft/linux-vm-tools/issues/28#issuecomment-487288500,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAMUMHPPMOPSOJAVXCWYFBLPSRMGZANCNFSM4E5PMI4Q
.

@cwilhit any update from the MS side, and/or updated guidance re: roadmap or futures?

@novaterata I didn't see an option for 8.2, are you suggesting we downgrade the version of windows to get to an earlier state of Hyper-v?

No, if you see my earlier post, you have to create the VM using CLI and
choose 8.2 that way. It's very much worth the trouble.
On Sun, May 5, 2019, 12:25 AM Petabyte2020<EMAIL_ADDRESS>wrote:

@novaterata https://github.com/novaterata I didn't see an option for
8.2, are you suggesting we downgrade the version of windows to get to an
earlier state of Hyper-v?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Microsoft/linux-vm-tools/issues/28#issuecomment-489388772,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAMUMHP2QINFZD6MTB7GLMDPTZOS3ANCNFSM4E5PMI4Q
.

Ok, just tested it out, its better. Thanks for sharing @novaterata . It's still not what it used to be though. Microsoft needs to fix this or at the very least give some kind of a time table guys... (@cwilhit )

We're investigating the performance difference between 8.2 and newer VM configuration versions. I was able to repro; there's a perceivable difference, for sure. Enhanced mode performance seems the same between the two, but basic mode definitely is not.

The system I've always wanted to set up is having two virtual desktops and just swipe right and left to switch between the Windows machine and the Linux machine.
If there were a vGPU for the Linux guest, that dream would finally come true.
There's actually another solution that might make sense these days, because many computers have two GPUs (dedicated and integrated). There's this project called Looking Glass, which 1:1 streams the framebuffer from one GPU to the other. If something similar could be done here, with a thin client on the Windows host that handles display, sound, mouse and keyboard, I feel like that would be the ultimate high performance solution.
I also think that such a solution is by far not as complicated as a vGPU approach and that a talented programmer could probably do it within a few weeks.
Please Microsoft, hear my plea!

I switched to VMWare workstation which provides adaquate rendering speeds.
Then I stumbled onto NoMachine, it's a remote access system, works pretty
well. I can't be bothered going back to Hyper-V so anyone having issues and
stalled out on setting up any of the other remote options check out
NoMachine (needs to be installed on the Windows host & Linux guest - the
Windows setup includes everything, so turn off the server parts if you
don't want that)
Then turn off the gui stuff in the guest and away you go. I run the remote
session at 2816x1584 and have it stretch to fill the screen of my 3840x2160
15" Laptop screen. Works perfect.
I'm hoping with the new remote awareness being added to VS Code I won't
need to do this for much longer and will take the time to switch back to
Hyper-V. As Linux cli guest run well enough under Hyper-V.

I am going to give my experience just in case it helps. I was having issues as well with Ubuntu 18.04.2 where using Firefox or something as simple as gedit would make this virtually unusable. Just scrolling down a page in Firefox just kept redrawing super slow.The same with moving the gedit window around. What seemed to help for my situation was when first starting the VM I would get a window to choose the resolution I wanted for the VM and by default it would set to 1366 x 768 but if I instead chose a higher resolution then it would work fine. So for me using the VM with the 1366 x 768 default resolution would make it difficult to use but just increasing the resolution would fix this.

Enhanced Session/XRDP Screen Redraw Issues
I see there is the misconception that screen redraw is a performance issue due to the need for software-based rendering combined with xrdp.  This is incorrect - it is not limited to lack of resources and there are multiple redraw issues in xrdp which are by no means limited to refresh rate.
It appears as if the problems are with specific program groups, probably having to do with the different types of rendering modules or even just specific functions they use.  It's always specific graphical errors that are consistent within groups, where some properly redraw if you move them around, and others like TextEdit can just be entirely problematic.  I would say that some of the specific issues are more consistent to trigger when it's running at max load, but they can also trigger at minimum load as well.
As a proof that it's not merely a problem with insufficient resources or high resolution, here's an example of a fresh Ubuntu install with nothing else running where Terminal is working fine but TextEdit being of the worst group.  It's running in 800x600 with 8 logical cores of an i6700k and max of 14GB of RAM (8.3 Hyper-V): https://drive.google.com/open?id=1b_f0DJdwAYvbBDEALi5Doh5bhfNnG5eZ I did this session with a Quick Setup for Ubuntu 18 just to confirm I wasn't doing anything wrong.
I should also note that I encountered these same issues nearly a year ago when I last tried to use Linux with Enhanced Session mode using the Linux VM Tool libraries.  Without XRDP/enhanced session, I don't have any of these intermittent issues, even when I scale down the resources.  I don't really have any other issues - that's the only one I encounter.

I am also bit by the slow performance in Hyper-V, yet upgrading to Ubuntu 19.10 does seem to help with the performance fixes in Gnome. Anyone else try that?

Slow performance with no HidPI for me on ubuntu 18.04 with gnome. Planning on configuring i3 for my dev environment though so maybe that'll improve it.

@xylix Please try my suggestion here of downgrading the Configuration Version (Use hyper-v cli to create new VM with specific version, then change your settings to match your current VM and use your current hard disk image) https://github.com/microsoft/linux-vm-tools/issues/28#issuecomment-487654677 I'm not sure if it will fix HiDPI, but it made a world of difference for me

@cwilhit any update on fixing the configuration issue?

I tried the older configuration and can't really notice any difference. I think I'll try virtualbox next.

Hi, I am new to Hyper-V. I was forced to use this after needing docker for windows...
I have found that the quick setup option for 18.04 ubuntu to be usable. I can see that the mouse curser on a 144hz screen feels just as smooth as in the host windows; however when anything else is animated in ubuntu (moving windows around, or starting applications) i can clearly see ui lags.
The lags are by far not as bad as posters before me have descirbed tough. The O.S. is usable imo for coding, the experience is just very poor :-)
I used configuration version 9.0
I tried assigning more vCores (from 4 to 8) but that didnt make a difference.
Also for everyone having no sound: this fixed it for me.

Where do I find the Quick Create on Windows Server 2019?

This repo is being archived, so closing this issue.

This repo is being archived, so closing this issue.


License

Hey guys,
The CLI tool doesn't seem to have a license. was this on purpose ?
This is halting us from using the tool at our organisation.
I would like to suggest MIT but even something similar to TSL should be fine I think
Moved down to keep the issue clean.
The blog has been very insightful and helped us gain an understanding on concenses of others on similar uses we were facing (eg: PGO vs CNPG )Talos Manager seems like a fun project but we decided to use an OpenToFu based method to build our cluster (We think Talos is good but to prevent vendor issues we decided on rolling our own locked down version of microOS (We've done this before and have our scripts already modified, would not recommend otherwise))
We'd like to use the Get Started project too but we are yet jump the gun on it. However if we do we would want to use it with the CLI helper.
Thanks in advance.

Thanks for pointing this out!
Fixed by adding an MIT license in https://github.com/reclaim-the-stack/k/commit/9536e19db23cb40a83b4511d007e9aa841a37934


Introduce synchronous app.getAppByName

We currently have app.getAppOnceAvailable$().
It would be useful in synchronous operations to get an App instance (if available) synchronously too:
const fooApp = rootApp.getAppByName('foo'); // either instance or NULL

there is app.getAppInstance() already. closing this.


Add shorthand for default prop value

What problem does this feature solve?
Higher readabilty for using common attributes (why a shorthand for setting the type and not for setting the default value?)
What does the proposed API look like?
props {
title: this.title || this.blok.title || "menu",
}
OR (when conflicting with setting the shorthand for the datatype?)
props {
title= this.title || this.blok.title || "menu",
}
INSTEAD OF
title: {
default: (value) => {
value || this.blok.title || "menu"
},
},

This wouldn't work because of this. Defining a prop based on other props is already in another issue.

Defining a default value based on another prop value already works for me like this. Why is that an issue? Please re-open because I think this could be a really Nice improvement for readibilty

@posva Why did you close? I don't see any reason why this couldn't work. Most of time the default attribute is the only one I set. Would it not be great to have a shorthand for that?
Something like:
props {
  title: this.title || this.blok.title || "vue",
}

Instead of:
props {
title: {
default: (value) => {
value || this.blok.title || "menu"
},
},


Tweemoji not working at all ? 🤔

Description
This is more a question than anything else, as I don't know if it's something from my side or if there's something going on with the Tweemojis 😅, But I just installed Iconize 2.11.4 in a fairly empty vault and for some unknown reasons, I'm just not able to get emojis appearing as Tweemojis ... and I would like to understand why 😄 ...
I didn't change any of the default settings of Iconize, except setting the Emoji style to  Twemoji and, just in case, to see if it could help, I also toggled On the setting Icons background check although, I didn't download any of the Predefined icon packs available (I left the Icon packs folder path set to .obsidian/icons and the folder while being empty, has been created) as I just wanted the emojis 😇 ...
My vault is stored on iCloud and I'm on Mac 😊 .
I've rebooted Obsidian multiple times, rebooted my Mac, switched the note in which I added 2 emojis between the different views (Reading/LP/Source) but all I get are the native MacOS emojis 🤷♀ .
The emojis were added in the note through Iconize, by triggering the dropdown/menu hitting : on my keyboard and selecting the :herb: (🌿) and then the :sparkles: (✨) emojis with the setting Toggle icons while editing notes being toggled On 😊 ...
I specifically chose these 2 emojis because I know for sure how they look like as Tweemojis.
Unless this is not how I'm supposed to add tweemojis or how it works ? 🤔
I know that my Mac is old and dying but I don't know if this could be the reason's why I can't get Tweemojis (instead of the Native ones) to be displayed/available 🤷♀ ...

Expected behavior
Having emojis displayed as Tweemojis I guess 😊

Screenshots
This is just a the part of Iconize's settings where I set the Emoji style to  Twemoji 😊  (the rest of the settings weren't modified)

And these are the emojis I see, in Live Preview whatever I do ... (which are clearly not tweemojis 🤷♀ )

Additional context
The console in the dev tool doesn't seem to pick any errors...
I'm on MacOS Big Sur 11.7.10 + Obsidian  v1.5.11 (Installer v1.5.8) + Default Dark Theme + No CSS Snippet and just 1 other plugin 😊 .

thank you for the detailed report! i am going to fix this asap.

Thank you so very much in advance 😁 🙌 !

this issue should be fixed with v2.11.6.

this issue should be fixed with v2.11.6.

I just update Iconize in the vault I used when reporting the issue and I'm sorry, but it seems to be partially fixed (I'm really really sorry 😶 )
The Twemojis do render consistently in Reading mode 🙌 ...
In Live preview, there's still something strange going on 🤔 ...
The Twemoji either render or nothing gets render at all ...

It gets stranger if or when I add a callout and then delete said callout ... after that, all the rendered twemojis are replaced by native emojis in Live Preview and I'm enable to get twemojis in the note again (unless I reboot Obsidian)
(This is me deleting a callout, which leads to apparition of the native emojis in Live Preview 😊 )
https://github.com/FlorianWoelki/obsidian-iconize/assets/77828085/0b49654c-66af-461a-8657-c8d05c3ea488
This error appears in the console when I delete the callout
app.js:1 RangeError: Invalid range for replacement decoration
    at t.range (app.js:1:362941)
    at eval (build-text-decorations.ts:25:12)
    at Array.map (<anonymous>)
    at buildTextDecorations (build-text-decorations.ts:18:12)
    at IconPlugin.update (icon-in-text.ts:23:28)
    at e.update (app.js:1:374285)
    at e.updatePlugins (app.js:1:471944)
    at e.update (app.js:1:470015)
    at e.dispatchTransactions (app.js:1:466635)
    at e.dispatch (app.js:1:468623)
Ca                   @ app.js:1
e.update             @ app.js:1
e.updatePlugins      @ app.js:1
e.update             @ app.js:1
dispatchTransactions @ app.js:1
e.dispatch           @ app.js:1
wv                   @ app.js:1
Cv                   @ app.js:1
Ev                   @ app.js:1
d                    @ app.js:1
Nl                   @ app.js:1
keydown              @ app.js:1
(anonymous)          @ app.js:1
e.runHandlers        @ app.js:1
e.handleEvent        @ app.js:1

I am really awfully sorry to bother you once more with all this 😶 ... But I'm also very grateful for everything you've done 🙌 !

that's strange. did you test it with the latest version (v2.11.7)? if so, could you please create a new issue, thank you :)

that's strange. did you test it with the latest version (v2.11.7)? if so, could you please create a new issue, thank you :)

Oh interesting 🤔 ...
For some reasons, when I updated Obsidian installed Iconize v2.11.6 and when I look for Iconize in the Community plugins, the only one I seem to be able to install is Iconize v2.11.6 😅 ...

haha I am not sure how the internals of obsidian work. so you might just wait :D

I've finally got Iconize v2.11.7 😄 ...
I'll test it out tomorrow 😊  (and open a new issue if necessary 🍀 )
Thank you 😁


Prepare inputs for 3 systems: FAAH(misc), BACE prospective (janssen), BACE p3 Arg368in (Janssen)

Input submission checklist

[Done ] created a directory for each system based on the template directory
[ Done] named and placed the directory with the following pattern: input_structures/prepared_structures/<set_name>/<system_name>

For each submitted directory:

[Done ] filled in system preparation details in the PREPARATION_DETAILS.md file
[Done ] added a PDB file with the protein named protein.pdb
[ N/A] removed any cofactors from the PDB file and placed them in cofactors.sdf
[Done ] did not re-protonate the residues, but left protonation state of the protein unchanged
[Done ] kept cystallographic waters and metals in the PDB file
[Done ] tested the PDB and, if available, cofactors.sdf file using the input validation script
[Done ] copied over the ligands SDF file to a file named ligands.sdf and removed any duplicate binding modes or protonation states, keeping the more favorable state

Summary of changes

Licensing agreement

[ Yes] I agree to release these inputs under the combined MIT and CCBY SA 4.0 licenses of this repository

Hi @hannahbaumann Thank you for reviewing. I have made the requested changes. Please re-review whenever convenient for you. Thank you!


Crash in test repeat write 2 teardown

https://raw.githubusercontent.com/ThaliTester/TestResults/9937456522c40ea_Refactor_incoming_and_outgoing_socket_thread_tests_evabishchevich/build.md
find
uncaught exception, error: 'AssertionError: entry exists

It looks like it happened at the "test repeat write 2 - teardown"

It looks possible for us to receive timeout from test server because BLE can sleep for about 30 seconds sometimes. We need to increase these timeouts.

@andrew-aladev If BLE is going to sleep then isn't this an Android and not a node issue?

So let's see if we can clear up a few things.

Andrew couldn't reproduce the assertion error
Separately, but for this test, Andrew found out that it looks like in some cases BLE appears to sleep. We don't get any peer notifications for 30 seconds which shouldn't happen.

But Andrew should be able to investigate the assertion error even without a repo so this bug should be about the assertion error and we will investigate the BLE issue in thaliproject/Thali_CordovaPlugin#1569


Bucket is Empty Error.

When  input.Bucket is not specified, service returns "Bucket is empty.".
It creates a confusion whether bucket is unreachable, not exist or permissions not enough.
It would help much if "Bucket field is empty." returned.
input := &obs.PutFileInput{}
input.Bucket = sample.bucketName
input.Key = sample.objectKey
input.SourceFile = sampleFilePath

I think related file is:  http.go
if obsClient.checkParamsWithBucketName(bucketName) {
	return errors.New("Bucket is empty")
}

感谢您的建议，这边会跟sdk的研发确认后续是否修改现有逻辑。


I get a message if I write a keyword that suggests I need immediate support

Relates #14
Text detection for certain keywords (e.g. suicide) to prompt the user to speak to a real person

[ ] List of words to look out for in conversations
[ ] Scan each user input for these words
[ ] If word is detected load pop up box telling them to contact someone immediately

@aaronajohn @georgemetcalfe95 - hey! are you able to provide a list of emergency words we should look out for please?

Hey Joe,
We are meeting tonight after work we will add this to the things to send
over alongside the other flow/s
Cheers,
Aaron
[image: photo]
Aaron John
Co-Founder, Nightingale Software
07479540681 |<EMAIL_ADDRESS>| www.wearenightingale.co.uk
| Skype: aaronajohn https://mail.google.com/mail/u/3/#
http://www.facebook.com/nightingalesoftware
http://twitter.com/talknightingale
http://www.linkedin.com/in/aaronajohn/
On Thu, Feb 7, 2019 at 10:56 AM Joe Friel<EMAIL_ADDRESS>wrote:

@aaronajohn https://github.com/aaronajohn @georgemetcalfe95
https://github.com/georgemetcalfe95 - hey! are you able to provide a
list of emergency words we should look out for please?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/techforbetter/nightingale/issues/32#issuecomment-461373807,
or mute the thread
https://github.com/notifications/unsubscribe-auth/Asufx5dgjoRYxoAmJILES0zVmc8lOeoRks5vLAZPgaJpZM4aO-eD
.

Awesome thanks @aaronajohn !

Hey Joe!
I am sending over the flows on the other channel! Me and George had a chat,
we feel that we would not be able to be confident in sending in a list that
we have made. We have contacted the Childrens society about this as we
believe that they have such a list. It may be a few days before we hear
back from them, hope this is not a massive problem! Let me know your
thoughts.
Cheers,
Aaron
[image: photo]
Aaron John
Co-Founder, Nightingale Software
07479540681 |<EMAIL_ADDRESS>| www.wearenightingale.co.uk
| Skype: aaronajohn https://mail.google.com/mail/u/3/#
http://www.facebook.com/nightingalesoftware
http://twitter.com/talknightingale
http://www.linkedin.com/in/aaronajohn/
On Thu, Feb 7, 2019 at 4:35 PM Joe Friel<EMAIL_ADDRESS>wrote:

Awesome thanks @aaronajohn https://github.com/aaronajohn !
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/techforbetter/nightingale/issues/32#issuecomment-461501476,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AsufxwTTdvsb_m-eRoVohzNvzlkktpz9ks5vLFXUgaJpZM4aO-eD
.

OK @aaronajohn no worries. We'll do a template one for now so we can build the functionality and then can put in the words once you have them. Ideally if you can get them by Wednesday latest, then we'll have time to get them in. :)

Ok that sounds good, ill keep you up to date as to what happens! Cheers
[image: photo]
Aaron John
Co-Founder, Nightingale Software
07479540681 |<EMAIL_ADDRESS>| www.wearenightingale.co.uk
| Skype: aaronajohn https://mail.google.com/mail/u/3/#
http://www.facebook.com/nightingalesoftware
http://twitter.com/talknightingale
http://www.linkedin.com/in/aaronajohn/
On Sun, Feb 10, 2019 at 10:30 AM Joe Friel<EMAIL_ADDRESS>wrote:

OK @aaronajohn https://github.com/aaronajohn no worries. We'll do a
template one for now so we can build the functionality and then can put in
the words once you have them. Ideally if you can get them by Wednesday
latest, then we'll have time to get them in. :)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/techforbetter/nightingale/issues/32#issuecomment-462120767,
or mute the thread
https://github.com/notifications/unsubscribe-auth/Asufx2lz90WjbMN_eXQYF2tqpkPFNF_mks5vL_TcgaJpZM4aO-eD
.


Inconsistent DFG among different types of literals

I noticed that the DFG implementation for C# treats string literals differently from integer literals. Here are the outputs of the function get_data_flow from code-to-code-trans/evaluator/CodeBLEU/dataflow.py on two lines of code:
int val= 1;
Output: [('val', 1, 'comesFrom', ['1'], [3]), ('1', 3, 'comesFrom', [], [])]

string val= "a";
Output: []

The correct output for the string case should instead be, [('val', 1, 'comesFrom', ['"a"'], [3]), ('"a"', 3, 'comesFrom', [], [])], to be consistent with the output for the integer case.
I think the problem might be coming from functions, tree_to_token_index, tree_to_variable_index in parser/utils.py and DFG_csharp in parser/DFG.py.
https://github.com/microsoft/CodeXGLUE/blob/434900dcba7f0d4bd5357cca741a9ec1d4bcaf98/Code-Code/code-to-code-trans/evaluator/CodeBLEU/parser/DFG.py#L366-L369
Notice that when deciding whether to terminate on line 366, we check if a node has no children or if its type is string. According to tree-sitter's grammar, the type for string nodes is actually string_literal not string.
This would fail for char as well. Please let me know if I made a mistake or if this is done intentionally.
Thanks!
Spandan

Hi, Spandan. Thanks for your pointing the issue. Indeed, the type for string nodes in C# is string_literal not string.
You just need to change the condition from (len(root_node.children)==0 or root_node.type=='string') to (len(root_node.children)==0 or root_node.type=='string_literal' or root_node.type=='string') in tree_to_index, tree_to_variable_index and DFG_csharp, and it will works.
I will also update the code.

Thanks for the quick fix, closing this.


Add items to gitattributes

Ignored more files for production.

Please fix the typo in readme.mde and I'll gladly merge.
Thanks for this useful contribution.

Whoops, sorry about that. Should be fixed now.

Should be fixed now.

:+1:


Filtered config for missing env variables

Added a more complex mechanism to expand env variables, removing entries with missing variables. This will allow configuration files to behave like the command line --args version.

          1 Error

:no_entry_sign:
Any changes to library code need a summary in the Changelog.

  Generated by :no_entry_sign: Danger

Cool. Could you also add one or two tests for this?

Cool. Could you also add one or two tests for this?

I'm trying, but I can't seem to build it locally - codesigning issue in SourceryRuntime. As such, I can't figure out exactly what's wrong with the failing test. Any ideas?

@CatalinMustata can you add changelog entry? I'll merge it afterwards if @Lutzifer approves

@CatalinMustata can you add changelog entry? I'll merge it afterwards if @Lutzifer approves

No problem. Do you have a preferred way of doing version bumps? Couldn't figure out a pattern from the changelog

@CatalinMustata you just add it under Master section, we'll do versioning when we release new one

@Lutzifer are you ok with this pr ?

Looks good to me

@CatalinMustata Thanks for the effort!

thanks for contributing @CatalinMustata!


Laravel Pulse Dashboard not showing Reverb "Connections"

Reverb Version
1.4.3
Laravel Version
11.33.2
PHP Version
8.2.7
Description
I'm integrating Reverb as an update to laravel-echo-server. So far so good. I've implemented the Dashboard as described in the Monitoring section. In fact, I didn't have Pulse at all until I integrated for Reverb monitoring.
I see a graph and data in the "Reverb Messages" card in Pulse, but the "Reverb Connections" card is not showing anything ("No Results"). Running php artisan reverb:start --debug there are definitely messages happening and my app is using both presence and private broadcasting channels fine.
Is there something specific with the connection I need to do to see this data? Did I miss something in the docs?
Steps To Reproduce
I followed the exact steps in the docs here.
My config/pulse.php has the 2 recorders added (along with the use statements):
        ReverbConnections::class => [
            'sample_rate' => 1,
        ],

        ReverbMessages::class => [
            'sample_rate' => 1,
        ],

And the Pulse dashboard.blade.php I've added:
    <livewire:reverb.connections cols="full" />

    <livewire:reverb.messages cols="full" />

I see the cards on the dashboard.
I can share an example from my channels.php or the client Echo setup but as I mentioned, those are working fine / as expected.

Hey @aalukacsko, did you run the pulse:check command?
https://laravel.com/docs/11.x/pulse#capturing-entries

Yep - that was it. Since this is required to get the card from the Reverb documentation to work at all, I think it would be helpful to have this in the Reverb docs 'Monitoring' section. The only reason I integrated Pulse to any capacity thus far, is Reverb.
Thanks for the assist though for sure on this!!


copyable line numbers

Improves shareability of direct links to line numbers in file view.
Just right click the line number and copy link location.

Is it really necessary? When a line is clicked, the URL hash updates and it also works nicely with shift-click on a second line for a multi-line selection. I could see that link element being added there to interfere with that behaviour.

Oh thank you for pointing this out. I didn't know about the multi select feature with shift-click for line numbers. You're right. Default behavior for anchors is open in new window. That behavior should be prevented first. I'm not sure right now where I would be the best place to add JavaScript to implement it. I am testing this feature currently by using a custom template in CUSTOM_PATH.
I think just updating the URL isn't really convenient. Especially since browser developers start to hide the URLs and just show the host until you select the address bar. On mobile devices this is the default behavior already.

Thank you for contribution. Since we have:

https://github.com/go-gitea/gitea/pull/17145

I think this PR can be closed.


Fix license badge typo

Checklist: (Put an x in all the boxes that apply)

[x] I have read the CONTRIBUTING document.
[x] My code follows the code style of this project.
[x] I have updated the documentation accordingly.
[x] I have added tests to cover my changes.
[x] All new and existing tests passed.
[x] I have checked that there aren't any other open Pull Requests from the same change.
[x] The develop branch has been set as the base branch to merge changes of the pull request.
[x] I have updated the CHANGELOG.md file as appropriate.

What kind of change does this PR introduce? (Bug fix, feature, docs update, ...)
Docs update
What is the current behavior? (You can also link to an open issue here)
Typo in License badge results in license not found error
What is the new behavior? (if this is a feature change)
Fix typo, badge displays correctly
Does this PR introduce a breaking change? (What changes might users need to make in their application due to this PR?)
No
Other information:

LGTM


add the ability to disable strict visibility

@johnynek the tests pass now. I'll add a simple test to ensure the visibility is selected correctly so that it doesn't regress.

Adding a simple integration test for this is quite convoluted as creating a fixture model  + graph combo is too complex - I tried to do it manually but it's way too much work.
A simple unit test on the method that determines the visibility would be good enough I think but it's currently a nested  closure.


Feature request: Generate docblocks on all properties/methods in a file

During refactoring, it would be helpful to generate all docblocks on all properties/methods of a file (which do not already have one). A more sophisticated implementation would even be able to complete or update existing docblocks. This feature could be accessible through the “Packages” menu or a key stroke.

Ohhhh, that would be cool.

I don't understand why this should be useful, you would still have to go through every function and replace the placeholders. Also you probably don't want to document every variable and every function.
This was already mentioned in #146

I realize that this is a duplicate of #146.
Why should this be useful? Because it would spare me the tedious work of manually adding the docblock itself. Also, the tool could read most of the properties from a method’s signature, so that would speed up things, too.

Yeah, but the automated docblock itself doesn't have any value. The value comes from filling out the placeholders. And to do this you have to go through the file anyway. I still don't see how this is useful. It would also be complex to implement.


[BUG] rexroth indradrive, duplicity for error 827,828, no error message for 829 and 830

closes by #366


Bump to ubi8.5

Ansible images are already ubi8.5, update the others.
Signed-off-by: austin<EMAIL_ADDRESS>

Closing this PR in favor of the in-flight dependabot PRs: #5357, #5358, #5359, #5360


proposal: Go 2: Error handling via conditional assignment operators

Author background

Would you consider yourself a novice, intermediate, or experienced Go programmer?
Experienced.
What other languages do you have experience with?
TypeScript, PHP, C, C++, Java, Rust, Haskell, Pascal, Basic, Assembly.

Related proposals

Has this idea, or one like it, been proposed before?
There has been countless error handling proposals of course but I'm not aware of any that has introduced new assignment operators.

If so, how does this proposal differ?
It introduces conditional assignment operators that either assigns the success values or returns the error value.

Does this affect error handling?
Yes.

If so, how does this differ from previous error handling proposals?
It introduces new assignment operators.

Is this about generics?
No.

Proposal

What is the proposed change?

In layman terms: introduce a new assignment operator =. that

treats the last to-be-assigned value as the error
if the error is non-nil, return it as the last argument
otherwise assign all but the last value to variables on the left.

As this operator would be used a lot, it should add minimal clutter. Possibly =. but the actual syntax could be different.
I'm proposing a suffix form so that it can be used with short variable declarations as well (:=.).
The suffix form could be used with all other assignment operators as well. (+=., etc..). That's not really important though, it just follows from the pattern.

Who does this proposal help, and why?

Makes the code more readable by reducing if err != nil { ... } checks.
Increases coding velocity by reducing boilerplate.
It does not help with adding debug information to errors. Those can still be added with defer. This proposal explicitly addresses the "desire path" of avoiding if err != nil { ... } checks in case one would not add debug information anyway.

Please describe as precisely as possible the change to the language.

Introduce the new conditional assignment operator =..
Upon conditional assignment:

if the last to-be-assigned value is non-nil, the current function's last return value is set to this value and the current function returns.
otherwise, all but the last values are assigned to variables on the left hand side.

Similarly for all other conditional assignment operators like :=. and optionally +=., &=., etc..

What would change in the language spec?

The new operators =. and :=. would be added.
The new operators would be added in the Terminating statements section as conditional terminating statements.
Optionally, conditional assignment could be added to all other assignment operators, also introducing +=. and &=. etc..

Please also describe the change informally, as in a class teaching Go.
If you just want to return on error, you can use the conditional assignment operator to simplify your code.
Is this change backward compatible?
Yes.

Beforea, err := A()
if err != nil {
    return nil, err
}
a, err = A()
if err != nil {
    return nil, err
}

Aftera :=. A()
a =. A()

Orthogonality: how does this change interact or overlap with existing features?
I believe it is orthogonal. The benefit of using a suffix after the assignment char instead of a prefix is that it could be supported with all other assignment operators that are prefixes, though that is not crucial.
Is the goal of this change a performance improvement?
No.

Costs

Would this change make Go easier or harder to learn, and why?
It probably has a net positive impact. One additional feature to learn in exchange for code that's easier to read and faster to write.
What is the cost of this proposal? (Every language change has a cost).
I'm not sure about the scope of this question. Please clarify.
How many tools (such as vet, gopls, gofmt, goimports, etc.) would be affected?
Probably most.
What is the compile time cost?
I would expect it to be negligible.
What is the run time cost?
Zero as it compiles to the same underlying code one would write without this feature.
Can you describe a possible implementation?
I'm not as deeply familiar with the Go codebase.
Do you have a prototype? (This is not required.)
No.

@ianlancetaylor thanks for your work on managing the issues here. If you think this proposal has no likelihood of being accepted, please go ahead and close it to save everyone's time.
As said I could not find a proposal that was 'close enough' to be a reference point and I thought the subtleties of this proposal were meaningful enough to be considered a novel avenue.

The effect is kind of like the try proposal (#32437) except that instead of writing a = try F() one would write a =. F().  I'm not sure that replacing try with a period makes it much better.  A period is rather small and seems easy to miss when reading code.

If it's an assignment operator, it can't work with func() error, can it?

Why not? It makes sense to disallow = on its own as it doesn't make sense, but =. does.
=. A()

It's does look weird at first but it also does its job. Return on error or result in void.

It also doesn't seem to have a good way of annotating an error.

True.

@ianlancetaylor
Differences to the try proposal:

I understand the try proposal landed on a built-in function as adding a try operator would not be backwards compatible.
A built-in function adds more visual 'noise'.
To have a built-in function change the control flow is very unexpected.

Otherwise they indeed have the same effect.
My primary intention was to bring up the idea that an extra assignment operator could also be used to reduce repetitive if-err checks as I have not seen it discussed. I feel like the actual chars used in the operator are secondary to how it works.

My primary intention was to bring up the idea that an extra assignment operator could also be used to reduce repetitive if-err checks as I have not seen it discussed.

I agree that I can't recall seeing a proposal quite like this.

I feel like the actual chars used in the operator are secondary to how it works.

I don't agree here.  When people discuss the problem of error handling in Go, they can mean several different things, but one of them is a complaint about the syntax.  This proposal, like many other error handling proposals, is about reducing the syntactic boilerplate for error handling.  As such, the syntax is really the critical part.  The syntax we all use today is verbose but clear.  When we talk about new syntax, it will presumably be less verbose, but it must still be clear.  We shouldn't say that the syntax is secondary.  It's really the whole point of the proposal.

In that case why not add the concept of aliases
Aliases would be embedded directly in the code instead of generating functions
aliase ErrRet(e error) {
    //do more error check in this.
    if e ! =nil {
         return e
    }
}

func useExample() error {
   f, err := os.Open(filename)
   ErrRet(err)
   // file rw from f
}

func useExample2() error {
   f, err := os.Open(filename)
   if err ! =nil {
         return e
    }
   //file rw from f
}

This is like other languages trait in use, perhaps also called trait.
But I added the type definition e error, so that different error names can be associated in different codes.
The final code will be compiled as useExample2.
This does not affect the previous implementation, but also can streamline a lot of code.

@godcong That is a completely different idea.  Let's please keep this proposal focused on the idea suggested in the original comment.  Thanks.
(The idea you mention is along the lines of #57822.  But still, let's not discuss it here.  Thanks.)

We shouldn't say that the syntax is secondary. It's really the whole point of the proposal.

What I meant is that the chars of the operator could change if the functionality is otherwise desirable. But you are right, I proposed this because that was the best I could come up with and it's not like we could just improve it later.

With a fresh mind, I'd like to reverse my response to @carlmjohnson . He is right, this is totally confusing.
@ianlancetaylor is it okay if I close this?

feel free to close it if you no longer think it's a good idea

Thank you all for your time, I'd like to withdraw the proposal.


Add negative test for except clause on wildcards

Implement suggestions on https://github.com/sqlparser-rs/sqlparser-rs/pull/745
Specifically:

Remove seemingly unnecessary test https://github.com/sqlparser-rs/sqlparser-rs/pull/745#discussion_r1039969722
Add negative test for empty list

cc @AugustoFKL

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

1 of 2 (50.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.01%) to 86.379%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

tests/sqlparser_bigquery.rs
1
2
50.0%

Totals

Change from base Build<PHONE_NUMBER>:
-0.01%

Covered Lines:
12436

Relevant Lines:
14397

💛  - Coveralls


evolve with single key in object and transformations behave weird

http://bit.ly/1e1S6kw
R.evolve({a: 1}, {b: R.inc(1)});
// output: {b: 2}

From the docs: "A tranformation function will not be invoked if its corresponding key does not exist in the evolved object."

sorry, too early in morning


⚠ SceneTime has degraded performance

In 6a1d1bc, SceneTime ($ST) experienced degraded performance:

HTTP code: 200
Response time: 3588 ms

Resolved: SceneTime performance has improved in d3d11d8 after 5 minutes.


📎  Implement function-linear-gradient-no-nonstandard-direction

Description
Implement function-linear-gradient-no-nonstandard-direction

[!IMPORTANT]

Please skip implementing options for now since we will evaluate users actually want them later.
Please ignore handling extended CSS language cases such as sass and less.
Please skip custom function since we haven't syntax model yet.

Want to contribute? Lets you know you are interested! We will assign you to the issue to prevent several people to work on the same issue. Don't worry, we can unassign you later if you are no longer interested in the issue! Read our contributing guide and analyzer contributing guide.

Can i try this?

@togami2864 what's the suggested name for this rule? Can you give us some directions?

How about noInvalidDirectionInLinearGradient??


Maxfilter first: addresses issue #59

Here is a suggestion on how to reverse the order of Maxfilter and frequency filter:
01-import_and_maxfilter.py

import data
set up BIDS derivatives
Maxfilter if config says so
save sss or nosss file (the latter prevents us from doing the import again in Script 02 if maxfilter is not applied)

02-frequency_filter

read each run and apply frequency filters

I also put a link in Readme to explain how to obtain sample in BIDS (issue #62)
[Unfortunately, the PR displays the changes only from Script 01 -> 02, while from 02 -> 01 is presented as a completely new file. If there is a way to change this retrospectively, let me know.]

Argh (re: circleci error). I did not follow the description in contributing, because installing git-annex failed on my Mac. Can this be fixed?

@SophieHerbst so far so good. Can you see why CIs complain?

I did not follow the description in contributing, because installing git-annex failed on my Mac. Can this be fixed?

arghgh ... it is indeed a pain. I gave up myself.

good to know @jasmainak, however it wasn't what caused the CIs to fail.
I have no idea how to fix this:
RuntimeError: info["meas_date"] seconds must be between "(-2147483648, 0)" and "(2147483647, 0)", got "-5364627420"

It seems like an MNE problem. It broke in this pull request: https://github.com/mne-tools/mne-python/pull/7016. The culprit is yet again @bloyl. I don't know why he tries to keep sabotaging MNE hmmmm :)

thx @SophieHerbst
let's iterate now.


Add Member argument for JDA.

I was in the process of rewriting the JDA cloud manager, and one of the things I added was a member argument. I was delayed, but I'm going to continue working on it soon™


Botocore does not make S3 Signed URLs with SigV4

Hello!
We noticed that botocore by default will generate S3 signed urls with HmacV1QueryAuth and not with SigV4. This is reproducible with the latest and greatest boto3 and botocore versions with the following code:
import boto3

s3_client = boto3.client("s3", region_name="us-east-1")

bucket = "somebucket"
key = "some/prefix/to/an/object"

print(s3_client.generate_presigned_url("get_object", Params={"Bucket": bucket, "Key": key}, ExpiresIn=3600))

When digging deep into botocore, we found that in the code: https://github.com/boto/botocore/blob/develop/botocore/signers.py#L183-L195
        handler, response = self._event_emitter.emit_until_response(
            'choose-signer.{0}.{1}'.format(
                self._service_id.hyphenize(), operation_name),
            signing_name=self._signing_name, region_name=self._region_name,
            signature_version=signature_version, context=context)

        if response is not None:
            signature_version = response
            # The suffix needs to be checked again in case we get an improper
            # signature version from choose-signer.
            if signature_version is not botocore.UNSIGNED and not \
                    signature_version.endswith(suffix):
                signature_version += suffix

the signature_version initially starts as s3v4-query, (which does properly map to S3SigV4QueryAuth
https://github.com/boto/botocore/blob/30206ab9e9081c80fa68e8b2cb56296b09be6337/botocore/auth.py#L856). The response that is returned is not None and the response object has the result set to s3-signer.  This replaces the correct v4 version with one that maps to the very old HmacV1QueryAuth signer.
When digging even deeper, we noticed that one of the handlers has a function that is called _default_s3_presign_to_sigv2, and as the name suggests, sets the pre-sign signature to v2 (or at least not v4): https://github.com/boto/botocore/blob/develop/botocore/client.py#L260-L276
Many large AWS customers migrated away from using SigV2 for S3 calls and users that need to make use of S3 signed URLs are getting V2 signature URLs by default with boto3. In our case, we actually added deny statements to our S3 buckets to prevent anything other than SigV4 calls from being made to S3.  This results in Python boto3 users getting non-functional S3 signatures (our Java users don't experience this issue).
Other than us instructing our Python S3 Signed URL users to do their own signature logic: https://github.com/boto/botocore/issues/1784#issuecomment-659132830 we would greatly appreciate if this would just work properly in botocore.
Thank you

@mikegrima - Thank you for your post. Botocore still uses Sigv2 for generating presigned url unless it has explicitly configured to use Sigv4 because it is a backwards incompatible change to switch them from v2 to v4. .
For all the normal HTTP requests, Sigv4 is used by default.

I think if there is a note in the documentation about the default signature version -- and an easy way to switch it to V4 -- this would alleviate my concerns.
My colleague made a workaround in one of our other projects where we can specify a custom botocore Config object: https://github.com/Netflix-Skunkworks/cloudaux/pull/116 which unblocked our issue.

@mikegrima - I agree we should update our documentation. We are tracking this documentation issue under this boto3 issue https://github.com/boto/boto3/issues/2417. Let's track this issue under the linked github issue.
This is a way to change default signature version:
from botocore.config import Config

my_config = Config(
    signature_version = 'v4',
)

client = boto3.client('s3', config=my_config)

Here you can find some more information about how to switch it to v4.
https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html
I hope it helps and please let us know if you have any concerns.

@swetashre may I suggest reconsidering the decision to "still use Sigv2 for generating presigned url unless it has explicitly configured to use Sigv4"? At some point deprecation has to become permanent backwards incompatible and the time for Sigv2 has passed. The process of deprecation started in 2012-2013 and was supposed to finish in 2019 (got a bit delayed). https://aws.amazon.com/blogs/aws/amazon-s3-update-sigv2-deprecation-period-extended-modified/ At this point there is more harm in defaulting to Sigv2, because it is considered a security risk and certain tools that monitor AWS CloudTrail logs flag this as a problem.

Minor update on code snippet from @swetashre.
Setting signature_version = 'v4' did not work. For some reason when it comes to S3 clients, boto3 expects to set this to signature_version = 's3v4'. Refer: https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html?highlight=s3v4
Updated code snippet per this:
from botocore.config import Config

my_config = Config(
    signature_version = 's3v4',
)

client = boto3.client('s3', config=my_config)


Weak intellisense within functions

I noticed some trouble with intellisense inside my functions today:

Text version for convenience:
{
    // NOT in a function
    var cat;
    if (true) {
        cat = { sound: "meow" };
    }
    var it = cat;
}

function animalStuff() {
    // in a function
    var cat;
    if (true) {
        cat = { sound: "meow" };
    }
    var it = cat;
}

Version information:
Microsoft Visual Studio Community 2015
Version 14.0.23107.0 D14REL
Node.js Tools   1.1.30716.01

This got worse with ES6 Intellisense preview in NTVS 1.2 Alpha. Now cat is displayed as an any type in both cases.

Marking this as external since in NTVS 1.2 Beta, ES6 IntelliSense is backed by Typescript / Salsa. Fixing this would likely require work on their side.

Fixed by TypeScript in latest VS2017 builds:

I believe TypeSccript 2.0 may also have improved this in VS2015.


add swapfile to Vagrant

Fixes #983

consolidate ansible/.gitignore with the one at top level?

@bjustin-ibm addressed @rabbah review comments, I think is ready for merge
Thanks @rabbah for the quick review. 👍

@csantanapr I restarted the Travis build after a failure that I suspect is unrelated to your change.

@csantanapr I restarted the Travis build after a failure that I suspect is unrelated to your change.

@bjustin-ibm Trying to be funny? 😺
Vagrant is not used in travis.
Maybe the scancode for the .gitignore or the Vagrant file?
Will wait and see what happens with the Travis build then.

Rebased and merged as 8c265dccb600ef84d6a83225073dcb148580a6d9


settings: Modify settings overlay styling.

This modifies the styling of the settings overlay to be less redundant, cleaner, and have less breakpoints.

Automated message from Dropbox CLA bot
@brockwhittaker, it looks like you've already signed the Dropbox CLA. Thanks!

Pushed w/ passing tests.

This looks a lot nicer!  Merged, thanks @brockwhittaker!!


[Fix] [Ready] Improve feedback when add ons are not loaded due to connectivity

Purpose
Fixes this github issue with connection error message: https://github.com/CenterForOpenScience/osf.io/issues/3205
This PR attempts to do a comprehensive fix that changes the way the title column is shown and adds a refresh button.
Changes

Update of treebeard commit number (this change allows for refresh icon to switch back to plus icon)
remove notify from all addons
Add a util function that gives a template for not connected
Adjust addons so that the exact same format appears in all

Side Effects
Potentially significant, although nothing came up in my testing. Still needs QA
For each add on:

Check loads properly when connected
Check loads properly with error message when not connected
Check that toolbar appears with normal load
Check that toolbar does not appear with not connected load
Check retry button works.

Pass finished. Just minor change and this should be good to merge. :point_up:

@sloria ready after CI runs.


Fix SHELL and ENTRYPOINT missing -c

I noticed this error when I tried to both  execute the image with docker run -it <image> bash  and when I extended it and tried to run apt-get in my Dockerfile.

Please don't use short flags and update runner image as well:
https://github.com/catthehacker/docker_images/blob/e4dbf909324ccd7c9ff3ddedc0daa5e4bd266186/linux/ubuntu/runner/Dockerfile#L96-L99

Please don't use short flags and update runner image as well:
https://github.com/catthehacker/docker_images/blob/e4dbf909324ccd7c9ff3ddedc0daa5e4bd266186/linux/ubuntu/runner/Dockerfile#L96-L99

Done


Use of system clock time to determine client state

Summary of Bug
The osmo client on evmos is live, but hermes uses the time of the computer running it to determine frozen/expiry:
Client state:
client_state:
  '@type': /ibc.lightclients.tendermint.v1.ClientState
  allow_update_after_expiry: true
  allow_update_after_misbehaviour: true
  chain_id: osmosis-1
  frozen_height:
    revision_height: "0"
    revision_number: "0"
  latest_height:
    revision_height: "3484087"
    revision_number: "1"
  max_clock_drift: 25s
  proof_specs:
  - inner_spec:
      child_order:
      - 0
      - 1
      child_size: 33
      empty_child: null
      hash: SHA256
      max_prefix_length: 12
      min_prefix_length: 4
    leaf_spec:
      hash: SHA256
      length: VAR_PROTO
      prefix: AA==
      prehash_key: NO_HASH
      prehash_value: SHA256
    max_depth: 0
    min_depth: 0
  - inner_spec:
      child_order:
      - 0
      - 1
      child_size: 32
      empty_child: null
      hash: SHA256
      max_prefix_length: 1
      min_prefix_length: 1
    leaf_spec:
      hash: SHA256
      length: VAR_PROTO
      prefix: AA==
      prehash_key: NO_HASH
      prehash_value: SHA256
    max_depth: 0
    min_depth: 0
  trust_level:
    denominator: "3"
    numerator: "1"
  trusting_period: 864000s
  unbonding_period: 1209600s

when we try to relay
  - Client: 07-tendermint-0
    * Connection: connection-0
      | State: OPEN
      | Counterparty state: OPEN
      + Channel: channel-0
        | Port: transfer
        | State: OPEN
        | Counterparty: channel-204
# Chain: osmosis-1
  - Client: 07-tendermint-1566
  - Client: 07-tendermint-1674
  - Client: 07-tendermint-1840
    * Connection: connection-1440
      | State: OPEN
      | Counterparty state: OPEN
      + Channel: channel-204
        | Port: transfer
        | State: OPEN
        | Counterparty: channel-0
  - Client: 07-tendermint-1924
  - Client: 07-tendermint-1925

when we try to do a very important client update
hermes tx raw update-client evmos_9001-2 07-tendermint-0
2022-05-04T12:52:51.025718Z  INFO ThreadId(01) using default configuration from '/Users/faddat/.hermes/config.toml'
Error: foreign client error: client 07-tendermint-0 on chain id evmos_9001-2 is expired or frozen: expired: time elapsed since last client update: Some(5067688.495405272s)

Therefore, we should not check the time on my computer when attempting a client update.
Version
460eb0c63f8ae1b7b1b204eda49c3c6b19b18452
f2937bc1 <- master branch just now
Steps to Reproduce
Query the state of the osmosis client on evmos, note that the client is not expired or frozen.
Use hermes to try to relay between osmosis and evmos.  Hermes will report that the osmosis client on evmos is expired or frozen.
Acceptance Criteria
Hermes should not be concerned with time on my computer when relaying because each chain has its own sense of time.  When evmos went down, it did not experience the passage of time.

For Admin Use

[ ] Not duplicate issue
[ ] Appropriate labels applied
[ ] Appropriate milestone (priority) applied
[ ] Appropriate contributors tagged
[ ] Contributor assigned/self-assigned

Query the state of the osmosis client on evmos, note that the client is not expired or frozen.

But shouldn't the client be expired though, since there's a month since it was last updated?

Yes that client, while it is not frozen, it has in fact "expired", its latest consensus is older than the trusting period so it cannot be trusted. Even if we would use the latest block time on osmosis (instead of local time) the update would fail.

@faddat you can use the ClientStatus rpc to query the status of the client, because expiry is not stored in the ClientState struct itself.

Absolutely!  I have a feeling we may lose this one (or maybe it is already dead?). Hard to say and thanks for your help.  Will be at least about 12 hours till I’m around to do that.

Oh but you dropped code… I’ll wait a moment before heading to sleep and just see if I can do the client update.
Thanks guys.

I think we may have found another bug guys
I can say for quite sure that we have either/or moved or expired packets on that path

@adizere evmos didn’t experience time while it was down.
I’ll try and do the update, it’s interesting and thanks guys

I can’t client update with the go relayer because of a bug in evmos affecting the rpc
But I can do packets individually by sequence number

Are you sure you're moving packets using this same client? Would be curious to understand how is this possible, since the client cannot be updated.

@adizere evmos didn’t experience time while it was down.

I see. Yeah, the chain didn't experience time, but counterparty chains (Osmosis) and the clients on Evmos for those chains  did experience time.


Error compiling with clang and JSON_NOEXCEPTION: need to include cstdlib

Compiling with clang (v. 5.0.0, x84_64 linux) with JSON_NOEXCEPTION defined produces error
/path/to/include/nlohmann/detail/conversions/from_json.hpp:31:9: error: no member named 'abort' in namespace 'std'; did you mean simply 'abort'?
        JSON_THROW(type_error::create(302, "type must be null, but is " + std::string(j.type_name())));
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/path/to/include/nlohmann/detail/macro_scope.hpp:47:35: note: expanded from macro 'JSON_THROW'
    #define JSON_THROW(exception) std::abort()

This is because std::abort is defined in <cstdlib> and nowhere does this library include <cstdlib>.
I don't have a MWE to hand, this error was discovered using the Unreal build tool on Linux, which may be passing some unconventional arguments to clang and I don't have time right now to find the reproduction steps. In any case, <cstdlib> should be included when std::abort is being used.

Thanks for reporting! It would be great if you could open a PR for this!

I would gladly, but I'm tight on time and it's not clear to me how I'd make a failing test case for this (as it's likely compiler-dependent)

Fixed.