Add width to file upload

What we've changed
This PR adds a width attribute to the file-upload component.
Fixes #2007 .
Why we've changed it
When a user magnifies to 400% zoom the component does not resize to fit the viewport and horizontal scrolling appears.

@CharlotteDowns Is it intentional that we're making the file upload component always full width now, so it'll take up the full width of the container it's placed in? This does seem to match what we do for the text input component, but I know Ollie's original comment in the backlog seems to imply that's something we might not want to do for the file upload component.
Example at default zoom on desktop the focus area for the component now looks like this:

Whereas before it looked like this:

@vanitabarrett I had the same concern.
I'll do some further investigation work around the original width and the other implications of making the file-upload component 100% width.

Bear in mind the file upload input type is displayed very differently across different browsers and operating systems. I think we'd want to test this pretty thoroughly across all of our supported combinations to be sure. Ideally it'd be good to get before/after screenshots for all of them.
Most of our other form inputs will grow to fill the available space, so I can see the argument for doing the same here. Aside from the way the focus state displays, it also means there can be quite a lot of invisible 'clickable area' in some browsers – which might also be an issue on mobile when scrolling?
(Now it's been pointed out, I've no idea why the file upload in Chrome doesn't shrink to tightly wrap the button and filename label – I've no idea why it's the width it is.)

Testing across browsers, before and after
We've had a look into the before behaviour of the focused file upload component compared with the focused file upload component at max-width: 100%.
On Chrome version 92.0.4515.159 without max-width the component requires right scrolling

On Chrome version 92.0.4515.159 with max-width the component is contained within the width of the browser size
More examples across the other browsers that we support can be found in this slide deck.


Enhancement: Add RMarkdown support

Description:
Addresses issue #7: Is there a way to make the plugin work with .rmd files for RMarkdown?
Changes Made:
Modified the md-headers.lua file to include the .rmd and .Rmd file extension in the pattern variable.
TODO:

[X] Add support for RMarkdown files using both the .rmd and .Rmd file extension.

Screenshots:

Hi! I just tried the code on the corresponding file in Lazy and it worked like a charm (as a side note, I assume this would also be the case for .qmd (Quarto) files, since they also have the same syntax. I'll try this shortly. But for the current changes, it works!

Thank you for testing. I'm glad to hear that the changes are working as intended!
Regarding Quarto files, you're correct that it should be possible to add support for them. However, I suggest merging the current PR to address the original issue (#7) promptly. We can then open a new issue specifically for adding Quarto support, and you're more than welcome to fork the master branch and contribute your implementation. Alternatively, feel free to open a new issue, and I'll take care of the implementation.
How do you feel about this?
Thanks again for your feedback and testing!

Don't know how to merge PRs (I'm relatively new to that), but I'll open a new request. I already approved the changes here, but don't know if I have to do anything else to help merge it with the plugin, so its available on the new update.

No worries, I'm the one who has to merge the PR.
If you want to learn a bit more about PRs, you can always take a look at the CONTRIBUTING.md file, listed in this repository. There you can find a little more information on how the process works, at least for this project and most other ones.
Thank you for helping me with this Pull Request and the implementation! I appreciate your contribution!


Video / Allow muting the audio of other people

Allow anyone in a room to mute someone else's mic (and put a message in
the chat saying who did it).
(This is important because people sometimes step away from their keyboards, not realizing that they didn't mute themselves, and start making a lot of noise...)

Relevant to the new UI.


Wagtail 6.0

Support Ticket
Wagtail 6.0 release notes
Summary of changes

Add support for Wagtail 5.2 and 6.0
Drop support for Wagtail < 5.2
Update otp_form to be compatible with Wagtail 5.2 and 6.0
Add support for Django 5.0

Hi @katdom13 This all looks good.
non-blocking One thing I did notice was that if you run ./manage.py createsuperuser the command fails with username is required. I guess that's only an issue with the sandbox.
So I wasn't able to login and test it using the sandbox because it asks for the OTP code.

Thanks for checking, Nick.
Good catch. I wasn't able to encounter that because I'm using the creds on the README.md file.
The reason that happens is because there is custom implementation of the User model, with the default USERNAME_FIELD assigned to the email field, but the default UserManager is still used.
The default UserManager still asks for the username, and throws the error if it doesn't find one.
I updated this PR with a custom UserManager in the sandbox. It should be working OK now.
Thanks!


(PUP-4605) Unmask before attemping to start

Prior to this commit, if a service was masked, and a user tried to start
the service, it would throw an error because it was masked. Even if the
user enabled the service (which calls unmask), an error would be thrown
because 'start' would be run before 'enable'. This commit ensures that
the start command has the ability to unmask a service before trying to
start it.

:+1:  if tests pass

@trevor-vaughan you did the original work to add in masking support. Would you mind taking a look at this?

:+1:


FancyZones: existing windows snap to zone when docking

Summary of the new feature/enhancement
When docking the computer, windows snap to their previously defined zone.
The current problem is the need to re-snap (reposition) windows to their zones after the computer is docked. Assumption: the windows were assigned a zone prior to undocking.
Ideal operation:
Before computer is undocked: windows are snapped to a particular zone
Computer is undocked: windows find their place on the laptop screen (not in their original zone)
Computer is docked: windows would ideally snap to their previous zone

Hi @dtalaski
thank you for the feedback.
I guess that what you ask is the same as described in https://github.com/microsoft/PowerToys/issues/4
Would you mind adding there your comment so we have only one issue to track this feature?
I'm closing this one.
Thank you.


DOC: Test system documentation

Add documentation for the VIC test system.  Including:

Travis CI
Python Unit Tests
Science Tests
Test Datasets

xref: #465

closed via #474


help-docs: Document "Private messages" mobile app feature.

Adds step-by-step instructions for mobile app users.
Screenshots and screen captures:

Comments:

I think it's reasonable to use the term "Conversations" because the iOS app uses it as the text label that refers to the tab that opens up the PMs view.

The icon for the Private Messages tab in the mobile app is slightly different than the icon I was able to find i.e. 2 people vs 3 people, but I think it still makes sense to use it given that the icon for Group PMs is the same across platforms.

The Send button doesn't have a text label in the mobile app, but I think it's reasonable to use it in the instructions without showing the corresponding icon as it would still make sense to the user.

Some preliminary work was needed for Desktop/Web in order to add consistent mobile documentation:

Self-review checklist

[x] Self-reviewed the changes for clarity and maintainability

Communicate decisions, questions, and potential concerns.

[x] Explains differences from previous plans (e.g., issue description).
[x] Highlights technical choices and bugs encountered.
[x] Calls out remaining decisions and concerns.
[x] Automated tests

Individual commits are ready for review (see commit discipline).

[x] Each commit is a coherent idea.
[x] Commit message(s) explain reasoning and motivation for changes.

Completed manual review and testing of the following:

[x] Visual appearance of the changes.
[x] Responsiveness.
[x] Strings and tooltips.
[x] End-to-end functionality of buttons, interactions and flows.
[x] Corner cases, error conditions, and easily imagined bugs.

@alya ready for review.

The Send button doesn't have a text label in the mobile app, but I think it's reasonable to use it in the instructions without showing the corresponding icon as it would still make sense to the user.

It's probably OK, but let's describe where to find it for clarity, i.e. "the Send button in the bottom right corner of the app."

I've pushed the requested changes!
If everything looks good, maybe we can merge this PR and we can add the icon for the PMs tab as a follow-up that also includes adding the ⓘ icon as discussed in #22435 and #22429.
Private messages

Hm, where does the iOS app use it? Could you share a screenshot?

Hm, where does the iOS app use it? Could you share a screenshot?

Ah, please take a look at https://chat.zulip.org/#narrow/stream/48-mobile/topic/platform.20differences/near/1391375 -- these labels are only shown in the tablet UI, which is a very small percentage of the user base for our mobile apps. The documentation should be written primarily with the phone UI in mind.

If everything looks good, maybe we can merge this PR and we can add the icon for the PMs tab as a follow-up that also includes adding the ⓘ icon as discussed in https://github.com/zulip/zulip/pull/22435 and https://github.com/zulip/zulip/pull/22429.

The checkmark icon for the "Approve by.." instruction needs to be fixed as well, so I don't think we'll be able to merge this until the icons are figured out.

Made requested changes. Also added the location of the checkmark button in the app, and removed the icon for now.

Hm, thinking about the actual instructions more carefully, those look correct for the group PM UI, but not for the 1:1 PM UI.
Perhaps we should have two separate sections, "Send a PM", and "Send a group PM"?
We could customize the desktop/web instructions a bit, too. I thin the tip about the user's profile picture or name makes sense for "Send a PM", but not for "Send a group PM".
What do you think?

Hm, thinking about the actual instructions more carefully, those look correct for the group PM UI, but not for the 1:1 PM UI.
Perhaps we should have two separate sections, "Send a PM", and "Send a group PM"?
We could customize the desktop/web instructions a bit, too. I think the tip about the user's profile picture or name makes sense for "Send a PM", but not for "Send a group PM".
What do you think?

Perhaps we should have two separate sections, "Send a PM", and "Send a group PM"?
What do you think?

That's a good question. Hm,  if we have two separate sections for 1:1 PM and group PM, only steps 2 and 4 would need to be different. Instead, I would suggest adding "If you are sending a group message..." to step 4 of the Mobile app instructions.

I think the tip about the user's profile picture or name makes sense for "Send a PM", but not for "Send a group PM".

That's true, but perhaps it could be a helpful tip to run into even if the user only wanted help with Group messaging.

Hm, I dunno, I'm still inclined to split it up. We should point out that you can also start a 1:1 PM on desktop/web from the right sidebar, but that instruction would make less sense for group PMs. The access instructions should ideally also be different for 1:1 vs. group PMs.
@laurynmm what do you think?

I think we've figured out a good strategy to add mobile icons, what do you think?

Hm, I dunno, I'm still inclined to split it up. We should point out that you can also start a 1:1 PM on desktop/web from the right sidebar, but that instruction would make less sense for group PMs. The access instructions should ideally also be different for 1:1 vs. group PMs.
@laurynmm what do you think?

Also, I think that's a good point and perhaps it's best to split them up so I'll provide another update once I make the necessary changes.

@alya Pushed changes and updated screenshots ready for your review.
Updates:

Splits instructions into "Send PM" / "Send group PM".
Adds the corresponding image icons for the buttons that users should tap on their screen.
Makes individual SVG image icons available in /static/images/help/, instead of importing the entire icon sets.
Adds the icons for the "PMs" tab from https://feathericons.com.
Adds the"Checkmark" and "Send" buttons from https://materialdesignicons.com.
Adds a nested CSS selector to .markdown img so that the default white border for images does not get applied to the icons.

Looks good to me! The icons are looking great. :)
@timabbott tagging for your review.

Merged, thanks @drrosa! One thing I notice while reading this is that probably the "x keyboard" shortcut part should be styled as a key, not an inline code block. May be worth trying to do a sweep for that sort of thing; in theory we want to be using HTML <kbd> elements.
@laurynmm FYI, since I remember you doing some cleanup of the keyboard logic.

@drrosa - For context, this is the PR Tim's probably thinking about specifically: #22456. And I didn't really follow-up on my last comment in that PR. Will do that today.


Inconsistent drag-and-drop behavior: dropping multiple files results in multiple recordings

Start with the welcome screen. Drag and drop two images into Rerun.

If you drag and drop them one at a time, they end up in the same recording (good!)
If you drag and drop them both at the same time, you end up with two recordings (bad!)

Haaa, and let me guess: if you drop two of them on top of an open recording, then it does work as expected?
The welcome screen has to recording-id to recommend, so that would make sense.

Yep, confirmed that. Okay that should be a one liner then :eyes:

The problem is trivial, and you'd hope the fix would be too... but then SetStoreInfo gets involved, and that's when you know all bets are off :melting_face:
I have something that's 99% there, but I'll need to finish another time as it gets mind-bendingly complex even though it has absolutely no right to...


chore: add linter rules & auto-fix

This PR adds some linter rules with auto-fix.

@aladdin-add This is super easy. Can you add the missing rules? If not we avoid merging this PR for now and I will keep adding more rules when I get time.

@aladdin-add can you fix the issues?

Closing this because it will be superseded.


Error while updating property 'accessibilityRole' of a view managed by:RCTView

Hi I am getting following error. PFA
Error while updating property 'accessibilityRole' of a view managed by:RCTView
null
Invalid accessibility role value:tab
React Native Environment Info:
System:
OS: macOS 10.15.2
CPU: (4) x64 Intel(R) Core(TM) i5-5350U CPU @ 1.80GHz
Memory: 53.47 MB / 8.00 GB
Shell: 5.7.1 - /bin/zsh
Binaries:
Node: 12.14.1 - ~/.nvm/versions/node/v12.14.1/bin/node
npm: 6.13.4 - ~/.nvm/versions/node/v12.14.1/bin/npm
Watchman: 4.9.0 - /usr/local/bin/watchman
SDKs:
iOS SDK:
Platforms: iOS 13.2, DriverKit 19.0, macOS 10.15, tvOS 13.2, watchOS 6.1
Android SDK:
API Levels: 28, 29
Build Tools: 28.0.3, 29.0.2
System Images: android-28 | Google APIs Intel x86 Atom_64, android-28 | Google Play Intel x86 Atom, android-29 | Google APIs Intel x86 Atom
IDEs:
Android Studio: 3.5 AI-191.8<IP_ADDRESS>10548
Xcode: 11.3.1/11C504 - /usr/bin/xcodebuild
npmPackages:
react: 16.6.3 => 16.6.3
react-native: ^0.59.10 => 0.59.10

+1

I think it got fixed for me once i updated by RC version.

Hi @maskaravivek which version of react native did you end up using and did you identify the cause of the problem ?

I ended up using 0.61.5. Unfortunately I don't remember the exact change that fixed the issue.

i'm having the same problem, could you please let me know the solution ?

i'm having the same problem, could you please let me know the solution ?

i solved it by linking all the libraries. its wrkng now!


Add auto_updates true to some formulas

After making all changes to the cask:

[x] brew cask audit --download {{cask_file}} is error-free.
[x] brew cask style --fix {{cask_file}} reports no offenses.
[x] The commit message includes the cask’s name and version.

Why? Does it break something?

https://github.com/caskroom/homebrew-cask/pull/34578


Predixy making more connections then desired and breaking connection with redis cluster

We have dedicated 15 worker threads but predixy is making more connections as seen in connect and ultimately breaking connection with redis and establishing new connections. Due to this we are getting high errors on production.
This is predixy conf file ->
Include default.conf
Name PredixyCartheroCluster
Bind <IP_ADDRESS>:7617
WorkerThreads 15
Log /var/log/predixy/carthero.cluster.log
ClusterServerPool {
MasterReadPriority 10
StaticSlaveReadPriority 50
DynamicSlaveReadPriority 50
RefreshInterval 30s
ServerTimeout 500ms
ServerFailureLimit 10
ServerRetryTimeout 5s
KeepAlive 0
Servers {
+ <IP_ADDRESS>:6379
}
}
This is info ->
Server:<IP_ADDRESS>:6379
Role:master
Group:48e1c26cb73955ac64e9e51935094e3e1d2ab477
DC:
CurrentIsFail:0
Connections:15
Connect:17
Requests:156910
Responses:156906
SendBytes:41020537
RecvBytes:820555
Error on predixy logs ->
2019-05-30 06:43:07.964114 N Handler.cpp:276 h 1 close s <IP_ADDRESS>:6379 32 and c None -1 with status 102 Custom
2019-05-30 06:43:08.010332 N Handler.cpp:276 h 11 close s <IP_ADDRESS>:6379 76 and c None -1 with status 102 Custom
2019-05-30 06:43:09.781291 N ConnectConnectionPool.cpp:50 h 11 reopen server connection <IP_ADDRESS>:6379 32
2019-05-30 06:43:10.426497 N ConnectConnectionPool.cpp:50 h 1 reopen server connection <IP_ADDRESS>:6379 76
This is happening in multiple servers with master node as well as replica nodes.

This is particularly happening with the 2nd shard of redis cluster.

Check the redis slowlog, with status 102 Custom means redis response timeout, your ServerTimeout is 500ms

I have the same issue, I would like to limit the number of connections to my redis shards but Predixy will make extra connections in addition to its persistent connections when I add perform many commands and heavy load.
Is there any way to limit these extra connections?


List type should support multi-fields

The list type should support multiple fields, e.g., that way it can be used as a key-value mapping.

Hi Jeremy
I'm not sure if this should be in the list type. Might be more useful to put this in a separate 'dictionary' or 'table' field.
Also, I guess if we start supporting key-value lists, that it should be extendible to have the more generic 'table' field, which supports multiple values?

I agree! Table sounds great.

For reference, Apple WiFi table settings.

Sounds great, I am looking forward!


Disabled pointer events on disabled toolbar links.

Bug fixes

links on toolbars were clickable even when they were in disabled state

disabled all pointer events if toolbar link is marked as disabled

Codecov Report

Merging #221 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #221   +/-   ##
=======================================
  Coverage   86.83%   86.83%
=======================================
  Files          95       95
  Lines         942      942
  Branches       84       84
=======================================
  Hits          818      818
  Misses        116      116
  Partials        8        8

Impacted Files
Coverage Δ

src/toolbar/helpers.js
100% <ø> (ø)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 9c8ddb0...ffbb7d5. Read the comment docs.


MATLAB wrapper testing

A GitHUB action to compile the MATLAB mex files and run a small test. Notes:

It is quite shitty because it can not be integrated with CMake
I tried to make it work on Windows, but it gives an error with little to none useful information to fix it.
At some point it would be great to have a common framework to create and run the tests with both GitHUB actions and CMake

PS I hate you MATLAB

@sanguinariojoe this looks good for me, thanks for adding. Annoying it won't work for CMake but just a simple check like this for now is fine.


Shrink image ISO size

Mostly coming from the kernel modules, and from the initramfs fs which is shipping part of TW.
If for the time being we aren't using dracut, we need to at least have a look at #20 to reduce the size of it.
# cbd0cf3430f9:/luetbuild # rpm -qa --queryformat '%10{size} - %-25{name} \t %{version} \t %{os} \n' | sort -rh | head -25 | awk '{print $1/1024/1024, $2, $3, $4}'
# 180.077 - kernel-default 5.10.5
# 12.4307 - glibc-locale-base 2.32
# 11.0003 - systemd 246.9
# 7.60744 - udev 246.9
# 7.49606 - file-magic 5.39
# 7.49081 - libzypp 17.25.5
# 7.10046 - zypper 1.14.41
# 5.95417 - glibc 2.32
# 5.9036 - coreutils 8.32
# 5.74755 - libsolv-tools 0.7.16
# 5.5852 - perl-base 5.32.0
# 5.58036 - gpg2 2.2.25
# 4.06195 - util-linux 2.35.1
# 4.05395 - kbd 2.3.0
# 3.5594 - libopenssl1_1 1.1.1h
# 3.39311 - gawk 5.1.0
# 3.01739 - shadow 4.8.1
# 2.68816 - rpm 4.15.1
# 2.6414 - elfutils 0.182
# 1.92351 - krb5 1.18.3
# 1.8625 - libstdc++6 10.2.1+git1030
# 1.71149 - libp11-kit0 0.23.20
# 1.69769 - libxml2-2 2.9.10
# 1.67791 - libglib-2_0-0 2.66.4
# 1.61761 - pam 1.5.1

Not really to do on our side anymore. this is completely on the derivative's duty now to make sure they don't ship a big packageset. What we can do is to disable efi hybrid iso images during build. IF there is interest, we can do that and track it separately on its own card.


Added simple seed project

Adds a project that looks like this when running:

This is great. All it's missing is the Auth0 badge in the Home. Check the jQUery example: http://auth0.github.io/auth0-jquery/examples/widget-with-api/

@mgonto All done. Great suggestion


Update Paella plugins

Updates:

paella-basic-plugins 1.44.4 -> 1.44.7
paella-skins 1.32.4 -> 1.48.0
paella-zoom-plugin 1.41.1 -> 1.41.3

Also sets the currently set language in Tobira for Paella, and provides english as a fallback default language in Paella's configuration.

The color should probably be a grey, but not white or black

I think a pure-ish grey doesn't work that great, and I much prefer a lighter color, close to what it is now (or even before my push in dark mode).
For a quick comparision:

stock color in dark mode (with higher opacity):

current iteration (this PR):

I think I would actually prefer the top version, but it's not a huge difference anyway.
Here is a version with "pure" (i.e. #808080) grey:

Oh, by "grey" I wasn't talking about #808080, but just about "any grey tone", i.e. no saturation with any color. So i wasn't ruling out brighter or darker ones.
I like the hover effect now. Might even be a bit stronger still? Maybe just opacity 1 on hover?
Regarding color: i like it for most videos, but it has problems with certain ones: https://pr1162.tobira.opencast.org/v/BxcXNwghXfK

Of course there is no magic color that works for all videos: there can always be a video that matches the color we pick. So my natural instinct is to somehow put a semi-transparent black background behind the icon. Probably very blurred. But not sure how good that looks and if we can even do it with hacky CSS?
I compared it to YouTube: that does suffer from the same problem in theory:
Without hover:

When hovered:

YouTube of course autoplays whenever the laws of physics allow it, so users usually don't see that. And the hover effect is stronger and also makes sure that either the non-hover icon or the hover icon is clearly visible on the background (since they have such different colors).
So yeah, no idea.  But maybe you have a good idea to improve the situation?

maybe you have a good idea to improve the situation?

I worked out two possible solutions for this:

Something like you suggested with a blurred background (using backdropFilter: "invert(12%) blur(4px)" and a couple of css lines for centering and some extra juice to make it work in safari......):

Or just a subtle drop shadow on the svg:

Both work with pretty much all backgrounds.
I prefer the second one. It's looks cleaner™ to me and has none of the somewhat hacky css required for the first suggestion.

Yep I agree, the second solution looks good! Lets just go with that.

The new play button is in your face, and for me, it doesn't quite fit the rest of the design.

@geichelberger I agree, and Lukas and I talked about this. Before we change it again, we wanted to check back with @oas777 and @dagraf first. I would probably make the icon a little smaller and reduce its stroke-width (i.e. making it less thick). This would result in something like in the below screenshot. Might be a little too subtle so it still needs some tweaking. Would you prefer a different icon altogether?

That looks better than the original, and maybe use an acute triangle instead of an equilateral triangle.

Before I comment this: Could someone please shortly explain to me how we came from https://github.com/polimediaupv/paella-skins/issues/5 and the dark grey / black of https://polimediaupv.github.io/paella-skins/ to this new light grey version?

@oas777 The color of the play and spinner icons from https://polimediaupv.github.io/paella-skins/ is dependent on light/dark mode. Light mode uses the dark grey/black, while dark mode uses a similar tone to what you see in my screenshots.
The dark version is hard to see on dark-ish preview images and the black canvas that is shown when a video is loading (which is always black, independent of light or dark mode). So I think it's better to always use the light grey version.

Thanks, @owi92 for your late night explanations. Some random thoughts:

I prefer the darker grey in general.
I think with lecture recordings predominant, we will see many white preview images of slides.
I would like to ignore the problems people have in dark mode. But then: accessibility. So light grey.
I prefer the thicker version(s).
I agree with @geichelberger about an equilateral triangle not being ideal.

I prefer the darker grey in general.
I think with lecture recordings predominant, we will see many white preview images of slides.

I suppose we can make a dark version work. I can see your point about most preview images being white. Though at least the spinner would need some sort of outline. That is always shown on a black background, regardless of color scheme.

I would like to ignore the problems people have in dark mode. But then: accessibility. So light grey.

It's really not about dark vs light mode. What I mean is that the icons inside paella should be colored independently of the overall color scheme set in Tobira.

I prefer the thicker version(s).

I'm sure there is a middle ground to be found here.

I agree with @geichelberger about an equilateral triangle not being ideal.

I'm not sure if changing only the triangle of the current icon is possible. It might, but we might also need a different icon altogether.
But let's discuss these things in our meeting next week.

Can someone explain to me what you dislike about the equilateral triangle? But yes as Ole said: this is the play icon of our icon pack of choice. We don't really want to tweak parts of it, but use the exact icons from the pack for consistency.
In addition to what Ole said: Paella did not define a color for the icon at all. So the black you see here https://polimediaupv.github.io/paella-skins/ is just a "happy accident". I don't mind changing the grey-tone of the icon again though. And once we're happy with it in Tobira, we should push these changes back to paella-skins.

I would probably make the icon a little smaller and reduce its stroke-width (i.e. making it less thick).

I would vote for making it smaller and reduce its stroke-width and aim for this 'middle ground'.
Additionally:

The equilateral triangle I do not see as a problem.
I would prefer a grey that is a little bit darker, too.

Can someone explain to me what you dislike about the equilateral triangle?
I recall my "vote" against the equilateral triangle for it gives the icon a certain symmetry. Plus the user a headache when you realise it points in three directions.

I would vote for making it smaller and reduce its stroke-width and aim for this 'middle ground'.
Let's see that middle ground then ...

Let's see that middle ground then ...

I made some adjustments in https://github.com/elan-ev/tobira/pull/1165.
I would suggest you take a look at a couple of videos with different backgrounds. I still think the lighter version works better for a variety of backgrounds, but if as you said the majority of videos will have a white background anyway, the darker version should be ok to use.


Package is not working on windows

I have an empty project
just elevatedbutton in center with onpressed() {
            await SmartUsb.init();
            var deviceList = await SmartUsb.getDeviceList();
            for (var device in deviceList) {
              print(device.identifier);
              print(device.toMap());
              print('-----------------------');
            }
            await SmartUsb.exit();

}
when run build fails with the following message
Launching lib\main.dart on Windows in debug mode...
CMake Error at flutter/ephemeral/.plugin_symlinks/smart_usb/windows/CMakeLists.txt:9 (add_library):
Cannot find source file:
smart_usb_plugin.cpp

Tried extensions .c .C .c++ .cc .cpp .cxx .cu .mpp .m .M .mm .ixx .cppm
.ccm .cxxm .c++m .h .hh .h++ .hm .hpp .hxx .in .txx .f .F .for .f77 .f90
.f95 .f03 .hip .ispc
CMake Error at flutter/ephemeral/.plugin_symlinks/smart_usb/windows/CMakeLists.txt:9 (add_library):
No SOURCES given to target: smart_usb_plugin
CMake Generate step failed.  Build files cannot be regenerated correctly.
Exception: Unable to generate build files
Exited (1).

same issue


Added Windows capability to running cpp code

Add the ability to select the Visual Studio compiler for Windows using a radio button.
Add the ability to populate the python text block with either the "pi" or "python_hard" code

Hey @cloudllama! This is fantastic!
I'm wondering about including the path to VISUAL_STUDIO_2022_TOOLS like that.. like do we know it will always be in:
C:\Program Files\Microsoft Visual Studio\2022\Community\Common Tools\VsDevCmd.bat
And is that the most common C++ compiler on a PC? Once of the drawbacks of having 20,000 students on the course is that there's a lot of different variations and people get frustrated when it doesn't work on their system. Some students don't use the C drive, some have older versions of software, etc.
How bulletproof is this? Can anything be done to make it more generic, or at least to add comments to the student about what to check for and what to install or change on their PC?
Alternatively: you could put this in a community-contributions folder, in which case students know to use it "as is". But if it's in the main week4 folder, then we need to check it will work in most conditions..
Thanks so much!

@ed-donner Thanks for the fast response. Looking at the pull requests, I intuit that this is your full time job right now...I appreciate the sliver of attention. Of course, feel free to include or not; I simply offer any code as a service. (Insert here an ode to hands-on learning always being the most effective method to understanding.)
Visual Studio (Community Edition or Professional and not Visual Studio Code) are pretty much the most popular C/C++ compilers on Windows owing to their low, low price of free. I test for both the current version (2022) and previous version (2019). The path to the environment batch file (VISUAL_STUDIO...) can be considered static and immutable as Microsoft has no desire to move it around.
I've pulled the logic into a separate function that will detect the platform, test out the potential compilers, and return the compiler command that will work, or none if no compiler is found. Currently, the test includes:
Windows

Visual Studio 2022
Visual Studio 2019
gcc

Linux

gcc

clang

Mac

gcc

clang

I've run tests on Windows. I'm setting up an environment on Ubuntu to test the function under Linux. I don't have a Mac so I'll use your command line (for clang).
I expect I'll finish up tomorrow.


Allow Online File System Expansion in k8s 1.11+

https://kubernetes.io/blog/2018/07/12/resizing-persistent-volumes-using-kubernetes/:

Kubernetes v1.11 also introduces an alpha feature called online file system expansion. This feature enables file system expansion while a volume is still in-use by a pod. Because this feature is alpha, it requires enabling the feature gate, ExpandInUsePersistentVolumes. It is supported by the in-tree volume plugins GCE-PD, AWS-EBS, Cinder, and Ceph RBD. When this feature is enabled, pod referencing the resized volume do not need to be restarted. Instead, the file system will automatically be resized while in use as part of volume expansion. File system expansion does not happen until a pod references the resized volume, so if no pods referencing the volume are running file system expansion will not happen.

I think we apply these universally to the api server, scheduler, controller manager etc:
https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/
https://kubernetes.io/docs/reference/command-line-tools-reference/kube-scheduler/
https://kubernetes.io/docs/reference/command-line-tools-reference/kube-controller-manager/
https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/ (for some reason kubelet lists ExpandPersistentVolumes but not ExpandInUsePersistentVolumes but that might be a docs issue.
e.g.
https://github.com/kubernetes-incubator/kube-aws/blob/dc29af458cd2677710f5cd9908bc1ad6019d779e/builtin/files/userdata/cloud-config-controller#L369
https://github.com/kubernetes-incubator/kube-aws/blob/dc29af458cd2677710f5cd9908bc1ad6019d779e/builtin/files/userdata/cloud-config-controller#L3126
https://github.com/kubernetes-incubator/kube-aws/blob/dc29af458cd2677710f5cd9908bc1ad6019d779e/builtin/files/userdata/cloud-config-worker#L379

@c-knowles I would like to pickup this issue, if not already picked up.

@vjdhama that'd be great!

This sounds like it would be a great candidate for implementing via our plugin mechanism (a core plugin).


Improve scope flows

This PR

Improves the description and provides an example in the help menu for scope flows --peer.
Adds more field types to the scope flows --sort option (string, duration, int64), to reduce errors.
Improves the description for the scope flows --reverse option. (Must be combined with --sort).

Closes #763

LGTM.  Made notes about the verification I performed in the linked issue.


Start-ThreadJob -StreamingHost $Host leaves behind progress bars

Prerequisites

[X] Write a descriptive title.
[X] Make sure you are able to repro it on the latest released version
[X] Search the existing issues.
[X] Refer to the FAQ.
[X] Refer to Differences between Windows PowerShell 5.1 and PowerShell.

Steps to reproduce
I appreciate the progress bar improvements since the PowerShell 5 era.  #14414's small progress bars I think especially improve the experience.
The code below starts 100 jobs each of which takes about a second to complete.  Each job has a progress updated at 10 millisecond intervals.  After the jobs complete, the script sleeps for 1000 seconds. At first the progress bars seem to complete as expected.  When the jobs complete, however, a number of progress bars with differing completion percentages reappear and remain indefinitely.
Note that reducing the value of -Milliseconds seems to increase the number of progress bars that reappear.
I see #3366 mentions some progress bar limitations but that issue predates #14414, and I'm not sure which still apply.  This all leads me to the following questions:

Is the repro here expected, as intended, or as designed?
Is there a workaround to get the progress bars to clear reliably?

.\repro.ps1
$jobs =
$(foreach ($iteration in 1..100) {
        Start-ThreadJob `
            -StreamingHost $Host `
            -ArgumentList  $iteration `
            -ScriptBlock  {
                param($iteration)
                $id = Get-Random ([int]::MaxValue) -Minimum 0
                1..100 |
                    % {
                        Write-Progress -Activity "Job $iteration Activity $_" -Id $id -PercentComplete $_
                        Start-Sleep -Milliseconds 10
                    }
                Write-Progress -Id $id -Completed
        }
})

$jobs | Wait-Job | Receive-Job -Keep
Start-Sleep -Seconds 1000

Expected behavior
PS> .\repro.ps1
jobs complete

Actual behavior
PS> .\repro.ps1
jobs complete
Job 4 Activity 100 [Processing    ...]
Job 3 Activity 100 [Processing    ...]
Job 5 Activity 99 [Processing     ...]
Job 7 Activity 100 [Processing    ...]
Job 8 Activity 100 [Processing    ...]
Job 15 Activity 99 [Processing    ...]
Job 13 Activity 100 [Processing   ...]
Job 14 Activity 99 [Processing    ...]
Job 12 Activity 100 [Processing   ...]
Job 17 Activity 100 [Processing   ...]
Job 24 Activity 99 [Processing    ...]
Job 39 Activity 100 [Processing   ...]
Job 43 Activity 100 [Processing   ...]
Job 44 Activity 99 [Processing    ...]
Job 49 Activity 100 [Processing   ...]
Job 48 Activity 100 [Processing   ...]
Job 55 Activity 100 [Processing   ...]
Job 57 Activity 100 [Processing   ...]
Job 64 Activity 98 [Processing    ...]
Job 63 Activity 99 [Processing    ...]
Job 68 Activity 100 [Processing   ...]
Job 70 Activity 99 [Processing    ...]
Job 69 Activity 99 [Processing    ...]
Job 72 Activity 100 [Processing   ...]
Job 75 Activity 100 [Processing   ...]
Job 78 Activity 100 [Processing   ...]
Job 77 Activity 100 [Processing   ...]
Job 82 Activity 100 [Processing   ...]
Job 83 Activity 100 [Processing   ...]
Job 84 Activity 100 [Processing   ...]
Job 88 Activity 100 [Processing   ...]
Job 87 Activity 100 [Processing   ...]
Job 90 Activity 99 [Processing    ...]
Job 89 Activity 99 [Processing    ...]
Job 94 Activity 100 [Processing   ...]
Job 93 Activity 100 [Processing   ...]
Job 100 Activity 100 [Processing  ...]
Job 98 Activity 99 [Processing    ...]
Job 99 Activity 99 [Processing    ...]

Error details
No response
Environment data
Name                           Value
----                           -----
PSVersion                      7.4.6
PSEdition                      Core
GitCommitId                    7.4.6
OS                             Microsoft Windows 10.0.22631
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           <IP_ADDRESS>
WSManStackVersion              3.0

Visuals

I think the culprit might by that Receive-Job replays all the progress records.  Omitting the Receive-Job line in the repro averts this problem.  Some further experiments I performed suggest the following:

The jobs accumulate every progress record in .Progress.
When Receive-Job is invoked, the progress records are replayed in their entirety with no delays.
When that replay occurs some of the records are ignored.
Some of the records that are ignored are the -Completed records.

This is supported by the following observations:

Increasing the number of iterations in the repro to 1000 causes a sustained flurry of progress bars.  Those progress bars eventually flood the terminal until only progress bars fill the buffer.
Reducing iterations reduces the volume of that flood.
Omitting Receive-Job eliminates the reappearance of progress bars entirely.

The following simpler repro shows the progress bars accumulating as each group of jobs is received:
foreach ($i in 1..5) {
    $(foreach ($x in 1..5) {
        Start-ThreadJob -StreamingHost $Host {
            $id = Get-Random ([int]::MaxValue) -Minimum 0
            1..100 |
                % { Write-Progress a -Id $id -PercentComplete $_
                    Start-Sleep -Milliseconds 1                  }
            Write-Progress -Id $id -Completed
        }
    }) |
        Wait-Job | Receive-Job
}
Start-Sleep -Seconds 1000

A typical screen ends up stuck with the following progress bars:

Omitting Receive-Job is not ideal because then errors are not surfaced.  $job.Error | Write-Error is a poor alternative because the location information for errors is lost.
Ideally when -StreamingHost is used it would be possible for the corresponding call to Receive-Job to omit the streams that were already sent to the host.
According this answer by @mklement0

The purpose of...-StreamingHost parameter is to directly connect all output streams other than the success and the error output streams to the specified PowerShell host.

That does seem to be what -StreamingHost causes to occur, but I don't have another reference for that assertion.  By that doctrine though, the resultant job object emitted by Start-ThreadJob shouldn't be accumulating the progress stream in a manner that is then processed by Receive-Job.
So I'm not sure whether Start-ThreadJob or Receive-Job ought to be be adjusted, or whether there's a better way to use progress bars in thread jobs.

It turns out that .Clear() can be called on Job.Progress.  Thus, replacing Wait-Job | Receive-Job with Wait-Job | % {$_.Progress.Clear(); $_} | Receive-Job cures the problem.  I'm not sure if this is by design but it does work.

It's all a bit confusing, but it seems to come down to problematic Receive-Job behavior:

Write-Progress output isn't a proper stream and shouldn't be treated as one.

As such, progress output arguably shouldn't be captured, relayed - or interfered with - by Receive-Job at all - whether or not -StreamingHost is present or not.

If the above is addressed, the following bug is a moot point:
# !! Spuriously complains that it
# !!   "Cannot process the argument because the value of activity cannot be null or empty".
# !! even though -Activity no longer requires an argument.
# !! The problem goes away if you insert a `Wait-Job` command:
# !!     Start-ThreadJob { Write-Progress -Completed } | Wait-Job | Receive-Job -Wait
Start-ThreadJob { Write-Progress -Completed } | Receive-Job -Wait

...progress output arguably shouldn't be captured, relayed - or interfered with - by Receive-Job at all - whether or not -StreamingHost is present...

@mklement0 I was skeptical of this assertion because of the case where progress is made by a collection of threads that write to the same progress bar where some of those jobs might not specify -StreamingHost.  The demo below shows a tree of progress bars for a tree of threadjobs.  The 'parent' job has shared progress by way of an interlocked integer which is the case I was skeptical about.  I think, though, the natural way to deal with such shared progress is that the parent handles completion.  In that case whether a such a progress-bar-sharing child is passed -StreamingHost is moot.  I think that demo shows that this all composes rather nicely as long as Job.Progress is cleared before Receive-Job (or ignored by Receive-Job as you suggest).
In other words, I think I agree with your statement I quoted here.
demo.ps1
https://github.com/user-attachments/assets/e047fcb1-a3e0-4d10-85fb-0276eac93e8f

Demo code.
param(
    [int]
    [ValidateRange(0,[int]::MaxValue)]
    $Children = 3,

    [int]
    [ValidateRange(0,[int]::MaxValue)]
    $Uncles = 3
)
Add-Type @'
public class InterlockedInteger {
    public int Value = 0;
    public void Increment() { System.Threading.Interlocked.Increment(ref Value); return;}
}
'@

$grandParentProgress = [pscustomobject]@{
    counter    = [InterlockedInteger]::new()
    total      = $Children + $Uncles
    activityId = (Get-Random ([int]::MaxValue) -Minimum 0)
}
Write-Progress `
    -Activity        grandparent `
    -Id              $grandParentProgress.activityId `
    -PercentComplete 0

$descendentFamilyJob =
    Start-ThreadJob `
        -StreamingHost $Host `
        -ArgumentList ($grandParentProgress,$Children) `
        -ScriptBlock  {
            param($grandParentProgress,$Children)
            $parentProgress = [pscustomobject]@{
                counter = [InterlockedInteger]::new()
                total   = 100*$Children
                activityId = (Get-Random ([int]::MaxValue) -Minimum 0)
                parentId   = $grandParentProgress.activityId
            }
            $jobs = $(foreach ($childId in 1..$Children) {
                $streamingHost =
                    if ($childId % 3 -eq 0) {@{}}
                    else                    {@{StreamingHost = $Host}}
                Start-ThreadJob `
                    @streamingHost `
                    -ArgumentList ($parentProgress,$childId) `
                    -ScriptBlock {
                        param($parentProgress,$childId)
                        $id = Get-Random ([int]::MaxValue) -Minimum 0
                        $a = "child $childId"
                        Write-Verbose "start child $childId" -Verbose
                        Write-Error   "error in child $childId"
                        foreach ($percentage in 1..100) {
                            Write-Progress `
                                -Activity        $a `
                                -Id              $id `
                                -ParentId        $parentProgress.activityId `
                                -PercentComplete $percentage
                            $parentProgress.counter.Increment()
                            if ($childId % 2 -eq 0 -and ($percentage -eq 57)) {1/0}
                            Write-Progress `
                                -Activity        parent `
                                -Id              $parentProgress.activityId `
                                -ParentId        $parentProgress.parentId `
                                -PercentComplete (($parentProgress.counter.Value * 100 /
                                                   $parentProgress.total                ))
                            Start-Sleep -Milliseconds (10*$childId)
                        }
                        Write-Progress $a -Id $id -Completed
                }
            })
            while ($jobs) {
                $job = $jobs | Wait-Job -Any
                $job | % {$_.Progress.Clear();$_} | Receive-Job | Out-Null
                $jobs = $jobs | ? { $_ -ne $job }
                $grandParentProgress.counter.Increment()
                Write-Progress `
                    -Activity        grandparent `
                    -Id              $grandParentProgress.activityId `
                    -PercentComplete (($grandParentProgress.counter.Value * 100 /
                                       $grandParentProgress.total                ))
            }
            Write-Progress parent -Id $parentProgress.activityId -Completed
        }
$unclesJob =
    Start-ThreadJob `
        -StreamingHost $Host `
        -ArgumentList ($grandParentProgress,$Uncles) `
        -ScriptBlock {
            param($grandParentProgress,$Uncles)
            $jobs = $(foreach ($uncleId in 1..$Uncles) {
                Start-ThreadJob `
                    -StreamingHost $Host `
                    -ArgumentList ($grandParentProgress.activityId,$uncleId) `
                    -ScriptBlock {
                        param($grandparentId,$uncleId)
                        $a = "uncle $uncleId"
                        $id = Get-Random ([int]::MaxValue) -Minimum 0
                        Write-Verbose "start uncle $uncleId" -Verbose
                        Write-Error   "error in uncle $uncleId"
                        foreach ($percentage in 1..100) {
                            Write-Progress `
                                -Activity        $a `
                                -Id              $id `
                                -ParentId        $grandparentId `
                                -PercentComplete $percentage
                            Start-Sleep -Milliseconds (30/$uncleId)
                        }
                        Write-Progress $a -Id $id -Completed
                    }
            })
            while ($jobs) {
                $job = $jobs | Wait-Job -Any
                $job | .\fixup.ps1 | Receive-Job | Out-Null
                $jobs = $jobs | ? { $_ -ne $job }
                $grandParentProgress.counter.Increment()
                Write-Progress `
                    -Activity        grandparent `
                    -Id              $grandParentProgress.activityId `
                    -PercentComplete (($grandParentProgress.counter.Value * 100 /
                                       $grandParentProgress.total                ))
            }
        }
@($unclesJob;$descendentFamilyJob) | Wait-Job | % {$_.Progress.Clear();$_} | Receive-Job | Out-Null
Write-Progress grandparent -Id $grandParentProgress.activityId -Completed
Start-Sleep -Seconds 5


Add a subscribe to streak notification option for the users?

Email streak of every friend everyday if subscribed to this option.

I'll like to work on this :)

Sure ! Please send a PR referring to this issue.

removed the streak notifications page


robotframework core atest shall be part of AIO selftest

atest of our own robot framework core features (unknown, theading, ...) +
meaningful subset (to be identified and agreed) of the robotframework core atest must be part of the RobotFramework AIO selftest.
Result must be properly displayed in WebApp (component mapping?).

Started with "log level" self test:
https://github.com/test-fullautomation/RobotFramework_AIO/pull/227
t.b.c.
From where to go from here? Is the threading self test ready to use?

Loglevel selftest as starting point is O.K. for me.

integrated in RobotFramework AIO 0.11.0


Web UI Gateway Mode always false

I feel like I'm missing something quite obvious, but I've searched the documentation on both this site and the original OTGW, and nothing seems to add up. I've got a NodoShop OpenTherm gateway connected to boiler & thermostat, running MQTT and all seems generally reporting ok, I can see & set thermostat temperature etc. from Home Assistant.
However, whenever I attempt to enable Gateway Mode, nothing immediately appears to change in the Web UI. I've tried via the MQTT set command & directly using OTMonitor. Both show a GW=1 command received. Yet the web UI continues to report Gateway/Standalone false. According to OTMonitor, the device does appear to be in Gateway Mode, but it's hard to be confident of what is reporting what status:
11:45:00.760867	Command: GW=1
11:45:00.818253	GW: P
11:45:00.823888	Command: PR=M
11:45:00.835738	T10D50000	Write-Data	Message ID 213: 0
11:45:00.880847	PR: M=G

Is this a bug in the web UI or is the device actually not operating as a gateway?
Advice appreciated; I may just be misunderstanding something. This remains quite a technical/complex topic!

Reading the source code, it seems this flag indicates whether an A or R message was seen in the last 30 seconds. Such messages may not occur, even in gateway mode, if the list of alternatives is empty or when the thermostat doesn't request any message IDs the boiler doesn't support.

@hotchkj I think I can improve the documentation here.
Like @hvxl correctly explained the flag is actually not based on the status, by querying the gateway, but by monitoring the msgids.
This method is not completely reliable, and should be seen as indication only.
Needs improving in a future release.


feat: Implement CheckboxToggle component.

fixes #112

Pull Request Test Coverage Report for Build 495

9 of 9 (100.0%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.3%) to 77.58%

Totals

Change from base Build 489:
0.3%

Covered Lines:
339

Relevant Lines:
424

💛  - Coveralls


No overheat and no cold damage

Hello,
I would like to suggest a mod who will remove the overheat and cold damage.
Thanks !

Try this mod
https://github.com/javisar/ONI-Modloader-Mods/blob/NoOverheatMod/Mods/NoOverheatMod.dll
I think it has effect for all buildingss.

Thanks i go test

The mod work very nice, i have test with an aquatuner and Nothing can happen, but that can still melt, but its already nice.

Moved to NoDamageMod
https://github.com/javisar/ONI-Modloader-Mods/commit/da1a2362dd1f927df65d96783f3d33103ac627ef

Use the latest version. Upload the log.

i'm also using this . all is ok.

Mod_Log.txt
Maybe a conflict with another mod

You are using and old version of the Modloader, update everything to the latest version, including the game. You should post output_log.txt.
https://github.com/javisar/ONI-Modloader#installation
Step 6

I have upload oni modlodader again and replace managed folder and run injector again.
Still crash, what i am doing bad ?
output_log.txt

You are using and old version of the game, the modloader and using outdated mods... Start clean, remove the game and everything, and reinstall everything.

So i have uninstall the game, everything in the folder, and install the game clean from steam. I have download Oni modloader master zip, copy the managed folder into the same game folder, then run injector like usual, then copy the no damage mod. And i still crash, what can i do wrong ?
output_log.txt

This is the latest version
https://github.com/javisar/ONI-Modloader/tree/master/Managed

Yeah i Don't understand why that Don't work, all my other mod work, except this one, i am stuck at the klei logo. I have erased all the folder, fresh install from steam. Then i have downloaded the link you give me, and then copy the managed folder into the managed folder of the game. Then run injector, then i put No damage mod dll on the mods folder + the nodamagestate.json in it, then i launch the game, that it. What i am doing wrong ? First time i have a problem with a mod so i Don't know.
output_log.txt

Try this
https://support.steampowered.com/kb_article.php?ref=2037-QEUH-3335
And after apply the injector from the link. Post injector output if you can.

I have done it, and still the same problem, all other mod work, i give you more screen maybe you can see Something.

The json file must be inside its config folder with the same structure than the repo.
/Mods/NoDamage/Config/NoDamageState.json
Please, read the comments.

Ok this time i am good, tell me if everything is correct.

But still can't launch the game, the dll is at the good place ?

Hello, everything work nice now, i am sorry i didn't know i need the oni common dll, that was the problem… sorry for make you lose your time :(


Pluggable adapters

[x] Console adapter
[x] Google Analytics adapter
[x] Abstract to be extended for creation of your own adapter (for instance: Yandex Metrics)
[ ] Yandex
[ ] Elasticsearch adapter

Some experiment around Yandex tracker is available, here https://github.com/ember-insights/ember-insights/compare/master...RuslanZavacky:rc-yandex-metrika

segregated into independent issues


Support response content-type not found with range status code.

Fix panics caused by ResponseContentTypeNotFound in the case of a response with a range status code.

Thank you for your contribution!


title bar of docs displays incorrect version

What happened:
The browser title bar displays an incorrect version when viewing the docs online. See below - title bar says 0.15.1 but actual version in URL is 0.16.0.

http://xarray.pydata.org/en/stable/ also displays 0.15.1 in the title bar, but I guess is actually showing 0.16.0 docs (?), which is confusing!

actually, it seems the reason for this is #3567: by not installing, we never call setuptools_scm to set the version (it doesn't use the 999 version we use as a fallback either, though, it uses the other version installed: right now 0.16.0)

to fix that, we'd need to install the project using pip, but RTD uses --upgrade --upgrade-strategy eager without --no-deps which means we wouldn't be able to use version pinning. So I guess we have to wait on RTD?

Thanks for tracking this down @keewis

they don't want to add --no-deps to the install command (see readthedocs/readthedocs.org#7345), but we can work around that by appending
  - pip
  - pip:
    # path to the folder containing setup.py relative to the environment file
    # if I understand it correctly, this feature is only available when using editable installs
    - -e ../..

to our environment file (not sure if there's documentation about this, but there's an example file). Something similar should also work with requirements files.


Objects aren't correctly highlighted if the ObjectStep starts on another plane

If you're say upstairs, and an ObjectStep starts which is on the ground floor and the object is near enough to already be rendered, the object won't become highlighted when you go downstairs. This is due to the init step only considering the current plane. This needs to be resolved.

Fixed in https://github.com/Zoinkwiz/quest-helper/commit/7cf2663322b281ccb5e81e9edca35e245b1bb895


Investigate the ResponseFormatException

I'm getting ResponseFormatException during the query call.
Simple query without params.
I/flutter (29070): api fetchCurrentUser errors: OperationException(linkException: ResponseFormatException(originalException: type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'List?' in type cast), graphqlErrors: [])
Is this a client side parsing issue? If yes, so how can I see what was the server response and where was the problem?

Run the query in Postman to see what it returns.
You are not giving any information to help you.
The better you can do is to prepare reproduction demo

Marked this issue as outdated.
Feel free to open it again with a reproducible example.


Add link and validation to ISSN fact panel

** Why are these changes being introduced:

The application needs to be able to provide a clickable link when an
ISSN is detected in the user supplied query.
Becasue ISSN formats (four digits, a dash, and then four digits) are
very similar to year ranges ("1986-2014"), we should attempt to
validate ISSNs a bit more tightly, using the check digit calculation
defined in the ISSN spec.

** Relevant ticket(s):

https://mitlibraries.atlassian.net/browse/rdi-131

** How does this address that need:

Constructs an OpenURL using the ISSN to allow the user to look up
more complete information about a journal in Primo.
Implements the check digit confirmation from the ISSN spec in a new
validate method within the FactIssn model.
Adds tests and cassettes for this validation capability, with several
conditions:

gibberish ISSN for a direct request to that path
confirming that an invalid ISSN returns nothing
a valid-but-unused ISSN
an actual ISSN assigned to a real journal

One cassette for the ISSN 1234-5678 - which is not a valid ISSN, but
Crossref responds to for unknown reasons, has been removed and is no
longer needed if the validate method is accepted.

** Document any side effects to this change:

Adopts the feedback messaging from the ISBN fact panel, which feels
better than the one from this panel. None of this feedback is yet
implemented, however.

Developer

[ ] All new ENV is documented in README
[ ] All new ENV has been added to Heroku Pipeline, Staging and Prod
[ ] ANDI or Wave has been run in accordance to
our guide and
all issues introduced by these changes have been resolved or opened as new
issues (link to those issues in the Pull Request details above)
[ ] Stakeholder approval has been confirmed (or is not needed)

Code Reviewer

[ ] The commit message is clear and follows our guidelines
(not just this pull request message)
[ ] There are appropriate tests covering any new functionality
[ ] The documentation has been updated or is unnecessary
[ ] The changes have been verified
[ ] New dependencies are appropriate or there were no changes

Requires database migrations?
YES | NO
Includes new or updated dependencies?
YES | NO

Pull Request Test Coverage Report for Build ffc87fbb1e84c7f2a272160c40a24062a3f70778-PR-55

18 of 18 (100.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.02%) to 99.666%

Totals

Change from base Build e672c5322ef6c7a26ba32136e163c6f8d5598f93:
0.02%

Covered Lines:
298

Relevant Lines:
299

💛  - Coveralls


Unrealized P/L not set when market is AwaitingFinalization

When calculating a user's profit & loss during a successfully reported-on but NOT finalized market, we want to add their upcoming realizedPL to their current unrealizedPL. This way a user can see how much they will gain or lose as soon as someone finalizes the market.
Currently there is no special rule for markets awaiting finalization.
ALSO: It may be desirable to do this for markets in CrowdsourcingDispute, since that state is entered immediately after the initial report is submitted.

I’ll check if something got broken, but last price traded is Suppose to be set artificially when market is in awaiting finalization.
Yes no and categorical markets outcomes get set to max or min depending on the winning outcome. Scalar price is set based on winning outcome. As if the market has actually finalized. The difference is awaiting finalization gives unrealized PL and finalized gives realized PL from the getProfitLoss getter.


add back TLS and disable admin:admin user in opensearch module

a lot of this work has already been done in the security-admin-script branch. However, it has been a rabbit hole that is holding us back for too long in releasing this feature which is currently only needed by one customer for a staging environment.
Note the bulk of the problems here are described in these issues:
https://github.com/opensearch-project/helm-charts/issues/87
https://github.com/opensearch-project/helm-charts/issues/115
https://github.com/opensearch-project/helm-charts/issues/161

Documenting some lessons learned during this experience:

we need to use the cached providers version (specifically this was an issue with old TLS provider) so that things work in xo
java file reading permissions check (used in checking permissions on tls certs) does not follow symlinks which caused a crashloop back off where opensearch crashes trying to read TLS key / cert from secret mount because kuberenetes sets these up with a symlink. so far attempts to modify permissions with an init container or defaultMode have proved not to work.
when setting helm values for opensearch.yml or internal_users.yml you must also specify extraEnvs for DISABLE_INSTALL_DEMO_CONFIG="true"` in order for these to actually be respected.
internal users passwords must be hashed using bcrypt with 12 rounds (there is a terraform function for this)


[camera] Add an easy 2D camera system: Camera2D

Some raylib users ask for a simple 2D camera system.
It could include basic movement, rotation and zooming.
Here it is a struct proposal:
typedef struct Camera2D {
    Vector2 position;      // To move camera around
    Vector2 origin;        // Required for rotation and zoom
    float rotation;        // Rotation of the world in angles
    float zoom;            // Zoom factor (world scaling)
} Camera2D;

Usage could be through BeginDrawingEx():
Camera2D camera = {{ 0, 0 }, { 0, 0 }, 0.0f, 1.0f };
...
BeginDrawingEx(camera);
    // Draw 2D elements
EndDrawing()

An improved version of BeginDrawingEx() was already designed but it could be better moved to:
void BeginDrawingPro(int blendMode, Shader shader, Matrix transform);

This new version tried to resemble XNA similar function for spriteBatch.Begin() but maybe some of the required parameters are not that useful...

This feature is still under development, just a quick update for record:
BeginDrawingPro() has been removed from the API, it was not flexible enough and blending/shader configuration could be accomplished with:
void SetBlendMode(int mode);
void SetCustomShader(Shader shader);

World transform could also be accomplished using the camera systems (2D and 3D).
BeginDrawingEx(Camera2D camera) works ok but, again, it's not flexible enough. Camera 2D transformation is applied to all drawn elements; including, for example the GUI interface... we don't want that!
Now thinking in a more flexible alternative:
void BeginCamera2D(Camera2D camera);
void EndCamera2D(void);

Many internal changes have been done since last update. A new flexible and easy-to-use system has been designed to accomodate a 2d camera control:
Camera2D is now defined as:
typedef struct Camera2D {
    Vector2 offset;         // Camera offset from target
    Vector2 target;         // Camera target (rotation and zoom origin)
    float rotation;         // Camera rotation in degrees
    float zoom;             // Camera zoom (scaling), 1.0f by default
} Camera2D;

And the following functions have been added:
void Begin2dMode(Camera2D camera);
void End2dMode(void);

Maintaining consistency with the 3d equivalent functions:
void Begin3dMode(Camera2D camera);
void End3dMode(void);

An usage example has been added in commit https://github.com/raysan5/raylib/commit/501ef80bed15aff369b39712214169325fd5419b


Bugs/health change after start

This PR address an issue with the health end point not reflecting at the time of the call the state of the components that it is monitoring. The correction is straight forward as the check should be done inside the function that handle the health point. You can check that prior to that change, the added tests do not pass and they do pass after.

Hey @cedric-appdirect, thank you for PR! I will check this and merge it later today.


x/tools/cmd/goimports: incorrectly adds imports for variables that match package names

Please see the following console output as a test case.  log is a varaible defined in another file and therefor does not need a package import.  The expected behavior is for goimports to detect no issues.
11:19:35 jack@Jacks-MacBook-Pro.local:/tmp/b
< go get -u golang.org/x/tools/cmd/goimports
11:20:02 jack@Jacks-MacBook-Pro.local:/tmp/b
< ls -la
total 16
drwxr-xr-x   4 jack  wheel   136B Oct 22 11:18 .
drwxrwxrwt  32 root  wheel   1.1K Oct 22 11:17 ..
-rw-r--r--   1 jack  staff   111B Oct 22 11:18 a.go
-rw-r--r--   1 jack  staff    82B Oct 22 11:18 a_test.go
11:20:05 jack@Jacks-MacBook-Pro.local:/tmp/b
< cat a.go
package main

import "github.com/Sirupsen/logrus"

var log *logrus.Logger

func init() {
	log = logrus.New()
}
11:20:07 jack@Jacks-MacBook-Pro.local:/tmp/b
< cat a_test.go
package main

import "testing"

func TestB(t *testing.T) {
	log.Printf("Hello")
}
11:20:09 jack@Jacks-MacBook-Pro.local:/tmp/b
< goimports -d .
diff a_test.go gofmt/a_test.go
--- /var/folders/5r/x8pdxnqs0sdg7w_262278m800000gn/T/gofmt282742701	2015-10-22 11:20:12.000000000 -0700
+++ /var/folders/5r/x8pdxnqs0sdg7w_262278m800000gn/T/gofmt424960296	2015-10-22 11:20:12.000000000 -0700
@@ -1,6 +1,9 @@
 package main

-import "testing"
+import (
+	"log"
+	"testing"
+)

 func TestB(t *testing.T) {
 	log.Printf("Hello")

I think we're probably going to have to chalk this up to heuristic failure, but if somebody can figure out a good fix, by all means go for it.

In my case, an option to reorder imports but not add new ones would do.

@cep21 gofmt reorders imports without adding/removing them.  Does that do what you want?

I don't currently see that behavior in go1.5.1.  Is it new?

I don't think so.  These cmd/gofmt test files haven't changed in 2+ years:
https://github.com/golang/go/blob/master/src/cmd/gofmt/testdata/import.input
https://github.com/golang/go/blob/master/src/cmd/gofmt/testdata/import.golden

I don't observe gofmt reordering imports like goimports
15:24:59 jack@Jacks-MacBook-Pro.local:/tmp/b
< cat a.go
package main

import (
	"fmt"
	"github.com/Sirupsen/logrus"
)

var log *logrus.Logger

func init() {
	log = logrus.New()
	fmt.Printf("Hello world")
}
15:25:02 jack@Jacks-MacBook-Pro.local:/tmp/b
< goimports -d a.go
diff a.go gofmt/a.go
--- /var/folders/5r/x8pdxnqs0sdg7w_262278m800000gn/T/gofmt609869718	2015-10-22 15:25:05.000000000 -0700
+++ /var/folders/5r/x8pdxnqs0sdg7w_262278m800000gn/T/gofmt029612029	2015-10-22 15:25:05.000000000 -0700
@@ -2,6 +2,7 @@

 import (
 	"fmt"
+
 	"github.com/Sirupsen/logrus"
 )

15:25:05 jack@Jacks-MacBook-Pro.local:/tmp/b
< gofmt -s -d a.go
15:25:08 jack@Jacks-MacBook-Pro.local:/tmp/b

Ah, I suppose gofmt doesn't separate stdlib imports from third-party imports like goimports does.  If you separate them yourself, it should still sort contiguous runs of imports.

@ianlancetaylor Maybe goimports could run go/types on the AST and only consider ast.Idents that don't resolve to a variable/function/type?

Dup of #7463


[Question]Two doubts about the Test Pool and its evaluation results in the paper of nnDetection

Hello~
Thanks for your excellent work and your sharing!
When I read the paper of nnDetection, I met two questions that I wanted to ask:
(1) It is mentioned in the paper that the TCIA Lymph Node data set belongs to the Test Pool and I think it doesn't participate in the K-Fold training process at all and are only used as test data to evaluate the generalization ability of the model? But in Table 1. from Supplementary Material, I noticed the "Number of Scans (Tr/Ts)", and for mediastinal Lymph Nodes dataset ,"63/27" is written. I don't quite understand whether there are 63 mediastinal Lymph nodes in the TCIA Lymph Node dataset involved in training? Or what "63/27" means?
(2)In Fig.3 of this paper, there are "Five-Fold Cross Validation Results" and "Hold-out Test Split Results" for the evaluation of mediastinal lymph nodes. I found that the Results of "Five-Fold Cross Validation Results" were slightly worse than those of "Hold-out Test Split Results" for the evaluation of mediastinal lymph nodes. What's the difference between the models used for these two results? Or the results are simply different just because the samples being tested are different?
I am not sure if I've misunderstood much.
Looking forward to your reply.Thanks again!
Best wishes.

Dear @ClimberXIE ,
nnDetection has two generalisation axis:
(1) generalisation to a new dataset: this evaluated the suitability or the method, i.e. how well do the rules for the parameters generalise; do the fixed parameters really fit to a new datasets etc. => note: nnDetection is not a foundation model - this means it requires a training dataset of the new problem
(2) generalisation of a model: this is the classic (ML) generalisation of a trained model to unseen test data from the same distribution as the training data
This reflects the typical use case: a new detection problem arrives -> training + test data is collected and annotated -> model is trained on new training data (this is 1) -> trained model is tested on unseen test data (this is 1 + 2)
The lymph nodes belong to the test pool, since it was not part of the development of nnDetection, i.e. nnDetection was not actively tailored for detecting lymph nodes at any point. We split the lymph node dataset into a training+validation part (63 images) and a test set (27 images) <- these are also the two numbers you mentioned
The cross-validation tend to be slightly worse for most problems since the validation set is only predicted by a single model while for testing the ensemble of the cross-validation (typically 5) is used.
Best,
Michael

Dear @ClimberXIE ,
nnDetection has two generalisation axis: (1) generalisation to a new dataset: this evaluated the suitability of the method, i.e. how well do the rules for the parameters generalise; do the fixed parameters really fit to a new datasets etc. => note: nnDetection is not a foundation model - this means it requires a training dataset of the new problem (2) generalisation of a model: this is the classic (ML) generalisation of a trained model to unseen test data from the same distribution as the training data
This reflects the typical use case: a new detection problem arrives -> training + test data is collected and annotated -> model is trained on new training data (this is 1) -> trained model is tested on unseen test data (this is 1 + 2)
The lymph nodes belong to the test pool, since it was not part of the development of nnDetection, i.e. nnDetection was not actively tailored for detecting lymph nodes at any point. We split the lymph node dataset into a training+validation part (63 images) and a test set (27 images) <- these are also the two numbers you mentioned
The cross-validation tend to be slightly worse for most problems since the validation set is only predicted by a single model while for testing the ensemble of the cross-validation (typically 5) models is used.
Best, Michael

Thanks for your patient explanation, I truly understand now.
Best wishes!


Couchdb persistency

This pr is to introduce persistency on CouchDB.
Notable changes:

Default configuration files are added.
db_datadir is added to use volume mapping for CouchDB data.
Cluster setup predicates are restored to work on single node setup.

I copied default configuration files from apache/couchdb:2.1

It might be better to make volume mapping for db.confdir configurable as well.
Because we always need to delete existing conf dir.
It will be troublesome in case of repeated local deployment.

Default volume mapping for db_confdir is removed.
So there is no volume mapping for CouchDB by default.
And cookie is introduced.
Though one of CouchDB nodes is restarted, they will form a cluster.
https://github.com/apache/couchdb/blob/master/rel/overlay/etc/vm.args#L34

One thing to discuss is, default security mode of CouchDB is admin_local.
So anyone can read/write against 5984 port.
How about changing this to admin_only?
Then only admin can read/write CouchDB.

Travis status is green.

Because of travis limitation, it seems custom image for couchdb is required to pass travis build.
Would it be ok to go further in that direction?

For the custom image you’re thinking to add the dockerfile in this repo? If so I think that works then can publish the image to dockerhub. I’d check with the kube and mesos depencies though - might require downstream changes also.

It would be nice if we could have a single openwhisk/couchdb image that would work for both the main project and the downstream projects like kube.   Right now kube is using its own image (https://github.com/apache/incubator-openwhisk-deploy-kube/tree/master/docker/couchdb).

@rabbah @dgrove-oss Thank you for comments, I missed them.
I will try with the one in kube project.

@dgrove-oss
It seems kube project no more maintain its own CouchDB image, how does it handle CouchDB persistency issue during Travis build?

For kube deploy, we switched to using the vanilla apache/couchdb:2.1 image along with a Job using the openwhisk/kube-ansible-runner image to initialize the database.  We support three options in the kube-deploy project:

a non-replicated couchdb running in the kubernetes cluster without persistent storage.
a non-replicated couchdb running in the kubernetes cluster with persistent storage.
using an external (not running in kubernetes cluster) couchdb.  (The couchdb might actually be running in the kubernetes cluster, but it is not deployed by the openwhisk helm chart).

For travisCI, we are only testing options 1.  Our assumption is that most production deployments will probably use option 3 and configure/deploy their databases externally to the deployment of the core openwhisk system.

@style95 any status on this?

@markusthoemmes I will open a new PR when I find a way to build CouchDB in Travis with persistence.


Fixes for CachedResponse attributes

Updates #320, #321

Add support for Response.next when 302 responses are cached directly
Make CachedResponse a non-slotted class to allow client code to set arbitrary attributes on it

Coverage increased (+0.02%) to 97.507% when pulling 9723ab87b35634e58b73641b7e0b5c22bb6d6ec3 on JWCook:cached-response-fixes into 5e2abd064979d30d8d2c823a973c92f662d3d7dd on reclosedev:master.


Health not clearing cache

Telemetry Health Subscription does not clear cache when aircraft is disconnected, so if you turn aircraft off and on again, it will say it has home position and global position even though it has not locked GPS yet. This will prevent vehicle form taking off.

Duplicate of #736.

➤ Jonas Vautherin commented:
@julianoes: how does a plugin know the vehicle is disconnected?

➤ Julian Oes commented:
Good find @douglaswsilva.
@JonasVautherin we should reset in here:
https://github.com/Dronecode/DronecodeSDK/blob/0e6a1aeb6ce3132e04ee922720dfc875ea138bf1/plugins/telemetry/telemetry_impl.cpp#L126

What's wrong with this bot!


feat: New changeFilename hook for customizing file names for template files

Description
Changed the behavior of the template hook system so we are able to provide arguments and return types of hooks and added a new hook for customizing file names for template files.
Related issue(s)
Fixes #203

Thanks, lgfm!

@jonaslagoni I think I only have issue with the name of the hook. I think it should always indicate when it is called, like generate:before or generate:after. Although I agree that the scope of this hook is pretty limited... filetemplateGenerate: before ? Thoughts?
I also left one comment, and also please add info about the hook in File template section

Yeah, name could be more aligned with existing syntax. Maybe templateFileNameGenerate:before? The problem I see with this name is that it sounds like you can customize all the template file names but it's not true, only those with $$ syntax can be customized. Maybe dynamicFileName:generate? 🤔

Since we are calling it "File templates" in the authoring templates then what about fileTemplateNameChange? Since it is a direct hook not related to any state i.e. before etc I dont think we should add :before or anything else to it.

@jonaslagoni I wanted to argue for :before but at the end you are right 😄 but it is not about file name change but about setting the name, so setFileTemplateName ?

@derberg we can do that :+1: @fmvilas @tenischev any objections?

Nope. Sounds good to me too.

Ok for me as well.

@fmvilas @derberg done.

Had to solve a conflict, and then it merged all the code from master.. Not sure if it should be reverted?

@jonaslagoni what do you mean? it shows only your changes? all good from my side, or you have somethign specific in mind?

@derberg last night it showed all the changes from master as well. I guess it got corrected 😄


CI: increase timeouts by 30m to avoid  k8s-1.10 test timeouts

We seem to have slower test runs when running net-next and k8s 1.10.
This goes away when we upgrade to 1.11 but to clean up the 1.6 branch,
we up the timeouts to allow the tests to complete.
Helps with https://github.com/cilium/cilium/issues/9041

This change is

test-me-please

I'll run this a few more times to see if it hits a timeout. I'll merge it after that.

test-me-please

test-me-please

test-me-pleae

test-me-please

hmm, this has failed in provisioning a few times. I'll try for another successful build, though.

test-me-please

test-me-please


pvsadm image qcow2ova fails looking for cloud-init-19.4-11.el8_3.1.noarch.rpm

Downloaded rhel-8.3-ppc64le-kvm.qcow2 from:
https://access.redhat.com/downloads/content/279/ver=/rhel---8/8.3/ppc64le/product-software
Attempted to convert the image using pvsadm:
pvsadm image qcow2ova --image-name rhel-83-06062022 --image-url ./rhel-8.3-ppc64le-kvm.qcow2 --image-dist rhel --image-size 120 --rhn-user xxxx --rhn-password xxx --os-password abc1234 --temp-dir /pvs_images_converted/
Fails with:
Updating Subscription Management repositories.
Last metadata expiration check: 0:04:12 ago on Tue 07 Jun 2022 06:58:47 AM EDT.
[MIRROR] cloud-init-19.4-11.el8_3.1.noarch.rpm: Status code: 404 for https://people.redhat.com/~eterrell/cloud-init/cloud-init-19.4-11.el8_3.1.noarch.rpm
When we check https://people.redhat.com/~eterrell/cloud-init/ - we can see that v19.4 doesn't exist:
Index of /~eterrell/cloud-init
| Name | Last modified | Size | Description
-- | -- | -- | -- | --
| Parent Directory |   | - |
  | cloud-init-21.1-11.e..> | 2022-01-26 12:27 | 1.0M |
  | cloud-init-21.1-15.e..> | 2022-01-26 12:38 | 930K |
  | python3-blivet-3.4.0..> | 2022-02-25 10:07 | 792K |
RHCOS image converts OK.

@StuC-F88 what version of pvsadm is used? following command will give you that information
$ pvsadm version

We have stopped using the mentioned repository for cloud-init long ago, instead we use it from the distro. Can you use the latest available version and check again?

I cloned using v0.1 - grabbed the latest and it has fixed the issue. Thank you


proposal: Go 2: initialise funcs with custom type names

Would you consider yourself a novice, intermediate, or experienced Go programmer?

Intermediate to experienced.

What other languages do you have experience with?

Java/Kotlin
Rust
JavaScript/TypeScript
Python
Haskell

Would this change make Go easier or harder to learn, and why?

This change adds a new way to construct functions, so implicitly it will increase the total knowledge require to understand all of Go. It is a feature that can be obscured from beginners, and benefit intermediate to experienced users.

Has this idea, or one like it, been proposed before?

There are no github issues for this exact proposal.
#21670 and #25860 only seeks to solve the implement an interface example below.  #21670 only targets single method interfaces, while not adding any language changes, where #25860 seeks to solve this for all interfaces, with a new (somewhat complex) syntax.

Who does this proposal help, and why?

This helps developers that create anonymous functions that implement defined types.

Is this change backward compatible?

Yes, the func types currently cannot take a body.

Show example code before and after the change.

// before
http.Handle("", http.HandleFunc(func(ResponseWriter, *Request) {})) // or http.HandleFunc("", func(ResponseWriter, *Request) {})
err = filepath.Walk("/", func(path string, info os.FileInfo, err error) error { return nil })

// type function func(one, two string) string
// func (f function) default() string { return s("one", "two") }
_ = function(func(from, to string) string {return from+to}).default()

// after
http.Handle("", http.HandlerFunc{}) // implement an interface
err = filepath.Walk("/", filepath.WalkFunc{ return nil }) // simpler initialisation
_ = function{return from+to}.default() // direct method set access

What is the cost of this proposal? (Every language change has a cost).

This change will add new syntax, thus complexity. This is most clear in the use of the default func parameter names, function{return from+to}, however, this feels very similar to the existing unkeyed struct literal syntax: type structure struct { u uint }; _ = structure{5}. This will also require some changes to existing symbols, like type HandlerFunc func(r ResponseWriter, r *Request).

How many tools (such as vet, gopls, gofmt, goimports, etc.) would be affected?

As the syntax of the language is extended, in a compatible manner, all these tools would need minor updates.

What is the compile time cost?

While this will add complexity to the compiler, it is pure syntax sugar, so it should not be too expensive.

What is the run time cost?

Should be negligible, as this is syntax sugar.

Can you describe a possible implementation?

I am not familiar enough with the internals of the compiler to make a concrete suggestion, but high level:

if you see a given Type that is of type func followed by a body: Type{ /* ...*/ }
convert into this AST: Type(func(/* ... */) (/* ... */) { /* ... */ })

Do you have a prototype?

No

How would the language spec change?

The declarations section, not totally sure where, would need to call-out that Type { Expression ( ; Expression ) } is valid.

Orthogonality: how does this change interact or overlap with existing features?

This change will extend the way that functions can be initialised. It should not break any existing features, but can simplify some existing code.

Is the goal of this change a performance improvement?

No.

Does this affect error handling?

No.

Is this about generics?

No.

As noted above, this is a subtle change to how the Go API works across packages, and the syntax is most likely ambiguous.  Also, the proposal does not have strong support based on emoji voting.  For these reasons this is a likely decline.  Leaving open for four weeks for further comments.

I can understand these concerns, and agree the additional exposed symbols represent a coup de grâce.
Upon review of the added features (interface implementation, simple initialisation, and method set access), the main benefit is interface implementation. This can be equivalently well served by #21670, however the discussion has stalled. Can I push for renewed discussion on that proposal?
Another option #25860, since _ = http.Handler{func(ResponseWriter, *Request) { } } does not require the http.HandleFunc symbol, but it seems to fall victim of the same FunctionBody vs LiteralValue issue in this proposal.

No change in consensus, so closing.
@carnott-snap Sure, feel free to try to push forward on any other issue.  Thanks.


Design Question

I have a design question, more general, so I can learn.  When you get a system running and say someone needs a change.  Do you have to recompile the entire Solution?  How do you manage small changes and push them out without blowing everything up?

Like any other .NET app you would need to recompile the changed bits and update these at least, and restart the application. In the case of a simple View change, this should not need any restart or recompilation.


Workspace - User does not see the "error message" when deleting a workspace

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:

Open the New expensify app
Sign into an account with the correct set up<EMAIL_ADDRESS>Navigate to Settings
Disable the internet connection in the device
Tap on the 3 dots and select "Delete Workspace"
Confirm the modal to delete the workspace
Verify the workspace is now displayed with a strikethrough indicating it will be deleted when back online
Enable the internet connection in the device
Wait a few seconds for the app to update
Close the settings modal

Expected Result:
The user expects to see a red dot in the profile icon and display a message on the workspace with the error as "You cannot delete this workspace because it's set as the domain restricted one for a domain security group" that can be removed
Actual Result:
The user sees the red dot in the profile icon, however they can no longer see the deleted workspace after returning online and can not see the error message text.
Workaround:
Unknown
Platform:

Where is this issue occurring?

Web
iOS
Android
Desktop App
Mobile Web

Version Number: <IP_ADDRESS>
Reproducible in staging?: Yes
Reproducible in production?: No
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://user-images.githubusercontent.com/93399543/199837178-3c5780a0-f7ea-48ea-935f-6de9129f286d.mp4
Expensify/Expensify Issue URL:
Issue reported by: Applause - Internal Team
Slack conversation:
View all open jobs on GitHub

Issue is not reproduced in production

:wave: Friendly reminder that deploy blockers are time-sensitive ⏱ issues! Check out the open StagingDeployCash deploy checklist to see the list of PRs included in this release, then work quickly to do one of the following:

Identify the pull request that introduced this issue and revert it.
Find someone who can quickly fix the issue.
Fix the issue yourself.

Guessing it's something to do with this PR

Going to snag this to see if we can get the deploy over the finish line today

Sign into an account with the correct set up

@kbecciv This is pretty vague. What is the "correct setup"?

Seems like a domain restricted policy is a requirement here, need to find out what that is...

Okay, I was able to reproduce this locally (albeit with a hack in the API layer)

Got a fix ready: https://github.com/Expensify/App/pull/12460


Using with Angular universal gives reference error windows is not defined

I am using angular universal (v12.2.x) and I have a route that directly renders the ngx-monaco-editor with default configurations. While I can see my editor in the browser just fine, in the terminal I am getting a huge stack trace on the server side telling me that "window is not defined". I am assuming monaco has some bindings with the windows object. The question then becomes how do you make this library work with server side rendering?
Stack Trace:
ERROR Error: Uncaught (in promise): ReferenceError: window is not defined ReferenceError: window is not defined     at /Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:160605:9     at new ZoneAwarePromise (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:182113:29)     at EditorComponent.ngAfterViewInit (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:160602:21)     at callHook (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:50236:22)     at callHooks (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:50205:17)     at executeInitAndCheckHooks (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:50156:9)     at refreshView (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:57246:21)     at refreshComponent (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:58346:13)     at refreshChildComponents (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:56971:9)     at refreshView (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:57225:13)     at resolvePromise (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:181939:31)     at resolvePromise (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:181893:17)     at /Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:182005:17     at ZoneDelegate.invokeTask (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:181201:31)     at Object.onInvokeTask (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:76370:33)     at ZoneDelegate.invokeTask (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:181200:60)     at Zone.runTask (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:180973:47)     at drainMicroTaskQueue (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:181377:35)     at invokeTask (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:181286:21)     at Server.ZoneTask.invoke (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:181271:48) {   rejection: ReferenceError: window is not defined       at /Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:160605:9       at new ZoneAwarePromise (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:182113:29)       at EditorComponent.ngAfterViewInit (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:160602:21)       at callHook (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:50236:22)       at callHooks (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:50205:17)       at executeInitAndCheckHooks (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:50156:9)       at refreshView (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:57246:21)       at refreshComponent (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:58346:13)       at refreshChildComponents (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:56971:9)       at refreshView (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:57225:13),   promise: ZoneAwarePromise [Promise] {     __zone_symbol__state: 0,     __zone_symbol__value: ReferenceError: window is not defined         at /Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:160605:9         at new ZoneAwarePromise (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:182113:29)         at EditorComponent.ngAfterViewInit (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:160602:21)         at callHook (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:50236:22)         at callHooks (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:50205:17)         at executeInitAndCheckHooks (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:50156:9)         at refreshView (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:57246:21)         at refreshComponent (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:58346:13)         at refreshChildComponents (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:56971:9)         at refreshView (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:57225:13)   },   zone: <ref *1> Zone {     _parent: Zone {       _parent: null,       _name: '<root>',       _properties: {},       _zoneDelegate: [ZoneDelegate]     },     _name: 'angular',     _properties: { isAngularZone: true },     _zoneDelegate: <ref *2> ZoneDelegate {       _taskCounts: [Object],       zone: [Circular *1],       _parentDelegate: [ZoneDelegate],       _forkZS: null,       _forkDlgt: null,       _forkCurrZone: null,       _interceptZS: null,       _interceptDlgt: null,       _interceptCurrZone: null,       _invokeZS: [Object],       _invokeDlgt: [ZoneDelegate],       _invokeCurrZone: [Circular *1],       _handleErrorZS: [Object],       _handleErrorDlgt: [ZoneDelegate],       _handleErrorCurrZone: [Circular *1],       _scheduleTaskZS: [Object],       _scheduleTaskDlgt: [ZoneDelegate],       _scheduleTaskCurrZone: [Circular *1],       _invokeTaskZS: [Object],       _invokeTaskDlgt: [ZoneDelegate],       _invokeTaskCurrZone: [Circular *1],       _cancelTaskZS: [Object],       _cancelTaskDlgt: [ZoneDelegate],       _cancelTaskCurrZone: [Circular *1],       _hasTaskZS: [Object],       _hasTaskDlgt: [ZoneDelegate],       _hasTaskDlgtOwner: [Circular *2],       _hasTaskCurrZone: [Circular *1]     }   },   task: ZoneTask {     _zone: <ref *1> Zone {       _parent: [Zone],       _name: 'angular',       _properties: [Object],       _zoneDelegate: [ZoneDelegate]     },     runCount: 0,     _zoneDelegates: null,     _state: 'notScheduled',     type: 'microTask',     source: 'Promise.then',     data: ZoneAwarePromise [Promise] {       __zone_symbol__state: 0,       __zone_symbol__value: ReferenceError: window is not defined           at /Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:160605:9           at new ZoneAwarePromise (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:182113:29)           at EditorComponent.ngAfterViewInit (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:160602:21)           at callHook (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:50236:22)           at callHooks (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:50205:17)           at executeInitAndCheckHooks (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:50156:9)           at refreshView (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:57246:21)           at refreshComponent (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:58346:13)           at refreshChildComponents (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:56971:9)           at refreshView (/Users/nikhilverma/Desktop/stringish-website/dist/stringish-website/server/main.js:57225:13)     },     scheduleFn: undefined,     cancelFn: undefined,     callback: [Function (anonymous)],     invoke: [Function (anonymous)]   } }

According to this discussion,monaco editor does not support server side rendering. If anyone else has any thoughts on this I would love to know.


Update zxcvbn.js

Trello Story

 [QAE16IMP] Update devise zxcvbn to make admins passwords more secure than users


🐛 BUG: Patched CVE-2022-24434 Crash in HeaderParser in dicer

This affects all versions of package dicer. A malicious attacker can send a modified form to server, and crash the nodejs service. A complete denial of service can be achived by sending the malicious form in a loop.
CVE-2022-24434
7.5/ 10

Why this has been closed without merged ?

This PR has the same issue as the others and it needs to be updated, but PR feedback was not being addressed so I was just closing stale PRs. I'm happy to have it re-opened if you want to address the PR feedback (the same feedback applies to this one as the others).


2 chat commands not working

Factorio version
Version number: 0.17.53
Scenario version
Version number: V5.8
Bug description
rhd/lhd and redmew chat command responds with Unknown key
Reproduction method
Steps to reproduce the behavior:

Launch Factorio
Go onto an ExpGaming server or launch scenario in single player
Type in rhd, lhd and redmew
See error in log

Expected behavior
To respond with something like for lhd, "Trains Must be in LHD"
Additional context
Probably not high priority but thought I'd point it out

See pull request #112