Fixed #27334 -- TemporaryUploadedFile moved to destination when possible

When a FileField is set to an instance of File that is not also an
instance of FieldFile, pre_save will pass that object as the contents to
Storage.save().
As a result, when an uploaded file is written to temporary storage,
if possible it will be moved (rather than copied) to the upload
destination.
All tests pass under Linux & Windows. The tests will pass without the changes to files.py on Windows however, because Windows does not support moving open files. On Linux they will fail without the changes to files.py, thus verifying that the test is actually testing something.

buildbot, add to whitelist.

The test looks overcomplicated -- I don't think the request/response cycle is required to test this fix. Since only FileField is modified, maybe tests/model_fields/test_filefield.py would be a better place.

Thanks for the feedback, I've rewritten the test at the level you suggested and simplified as much as possible, and squashed the commits in my branch.

I wonder if we should also test the correct permissions are set on the moved file and that the file is actually copied when using a non-local file storage.

@charettes there are permissions tests in file_strorage/tests.py, although they're using stream-file objects so the move-if-temporary-file logic won't be exercised. I could simply duplicate that test class using TemporaryUploadedFile as the content.
As for copying when non-local file storage, I'm not 100% sure what you mean by non-local. Would something like the tests linked above (ie copying from in-memory contents) count as non-local storage?

@achidlow I think both of my points are moot, it looks like FileSystemStorage apply permission flags independently of whether or not the file was created or moved and Django doesn't ship with non-local storages (e.g. S3) by default.

@timgraham just wondering if you're happy with the updated tests?

merged in f734e2d4b2fc4391a4d097b80357724815c1d414, thanks!


Show images for coupons

This PR enables images for coupons.
Images for coupons can now be uploaded to S3 from /store/coupon POST and /store/coupon/\<id\>/edit POST.
Images for coupons can be viewed on /store/coupon/\<id\> GET, /store/coupon/\<id\>/edit GET.
There is one problem with this PR.  /store/coupon/create GET shows a form that lets the user upload a new coupon.  If this fails when posting to /store/coupon POST, /store/coupon/create is shown again, but the user's image will have been lost.
I don't think this is a huge problem, but it would be nice to fix it somehow.  Maybe we can add an issue for it an mark it low-priority.
This PR will probably conflict with #126.  If #126 is merged into master first, this PR will have to be updated before it can be cleanly merged into master.  Also, the functionality from #126 will have to be applied to the code in this PR as well.  @arowM if you want to do that in a future PR, feel free.  Otherwise I will do it.

LGTM!

the functionality from #126 will have to be applied to the code in this PR as well.
I'll do this in future PR because this functionality is fixed on #129.


Add note on DRP travel calendar.

Hey @jonathansick — I'm not sure if you want to review material for this page at all. If you do, please take a quick look.


[feat] Add a post-init hook

With the new syntax of variable definition we can almost get rid of __init__(). Currently, functions like depends_on() must still be called during initialisation, but this will be addressed by #1864. However, there will still be cases that something must be executed during the initialisation and this is when you want to have dynamic tags, for example, change the tags based on a test parameter. In order for the frontend to be able to select tests by tags, the tags must be finalised after the initialisation, so you can't practically set them in any other pipeline stage.
The post-init hook introduced here is fairly simple it can substitute the constructor. The following:
class my_test(...):
    @rfm.run_after('init')
    def init_a(self):
        self.a = 1

    @rfm.run_after('init')
    def init_a(self):
        self.b = 2

is equivalent to
class my_test(...):
    def __init__(self):
        self.a = 1
        self.b = 2

Of course, the example with init_a() and init_b() is a bit silly, but it gets more sense if you imagine test hierarchies.
If a test defines __init__(), any init hooks will be ignored.
Finally, there are no pre-init hooks, although it's trivial to implement. I'm not introducing them here, unless there is a need.
Fixes #1863.
Implementation details
The pipeline mechanism is re-implemented from scratch. Pipeline hooks are no more applied to the pipeline functions with the decorator. This has a number of advantages:
a. Hooks will be automatically applied to any pipeline function that is overriden by a subclass.
b. The hooks will wrap the leaf function and not the call to super().pipeline_fn()
c. The hooks will be applied only once in all cases even if a test and its child classes are instantiated multiple times.
Specific implementation tricks and intricacies are explained with comments in the code.

If a test defines init(), any init hooks will be ignored.

I find very very confusing that a standard Python method can magically override a reframe hook. I'm struggling to see what the advantage is of having this post-init hook. Is this simply to get rid of __init__?

I'm struggling to see what the advantage is of having this post-init hook. Is this simply to get rid of init?

Basically, yes. It is just syntactic sugar. Generally, everything can go into hooks, but there is one case that you can't use hooks: it's when you have to deal with test filtering. There are tests that we change the tags or the valid_prog_environs based on some parameter. This cannot happen anywhere else except in init, so there will be tests to define it, if you don't have some sort of hooks. What about defining the hook differently, something like pre_filter. I don't know.

I will postpone this PR to the next sprint, since I would like to improve also the current hook mechanism to follow the same pattern as with what we have discussed with __init__(), so that the hooks run even if a method has been overriden and make sure that they are executed once at the class lowest in the hierarchy that defines the hooked method.

I see no reason to do that and I feel that it makes more sense to have the pipeline stages decorated in the pipeline itself. See comments below.

The "problem" is that we need to handle disabled hooks. Users can disable hooks on-demand and this happens after the test has been created. Regardless if the _rfm_disabled_hooks is a class or instance attribute, it is set only after the object is created, i.e., after __rfm_init__(). For this reason, running the hooks cannot be static and I also converted the _rfm_disabled_hooks to an object attribute, because it didn't have any meaning to be a class attribute. It was only complicating the implementation of inheritance.

Hello @vkarak, Thank you for updating!

In the file reframe/core/decorators.py:

Line 241:80: E501 line too long (83 > 79 characters)
Line 241:84: W291 trailing whitespace
Line 243:70: W291 trailing whitespace

Do see the ReFrame Coding Style Guide

Moving to next sprint. It's much more complicated than it seems.

Codecov Report

Merging #1865 (d06bf2d) into master (5f3c919) will increase coverage by 0.04%.
The diff coverage is 96.35%.

@@            Coverage Diff             @@
##           master    #1865      +/-   ##
==========================================
+ Coverage   87.92%   87.96%   +0.04%
==========================================
  Files          49       50       +1
  Lines        8450     8512      +62
==========================================
+ Hits         7430     7488      +58
- Misses       1020     1024       +4

Impacted Files
Coverage Δ

reframe/frontend/cli.py
75.98% <0.00%> (ø)

reframe/core/hooks.py
95.12% <95.12%> (ø)

reframe/core/decorators.py
97.11% <100.00%> (+0.05%)
:arrow_up:

reframe/core/meta.py
100.00% <100.00%> (ø)

reframe/core/pipeline.py
91.84% <100.00%> (-0.16%)
:arrow_down:

reframe/utility/__init__.py
92.12% <100.00%> (ø)

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 5f3c919...d06bf2d. Read the comment docs.

I fixed the unit tests in test_policies.py, but this problem is in different files, too, but it doesn't get triggered. I have created #1913 to address this separately.

@jenkins-cscs retry all


Included missing import functionality on Mongoid adapter

Synced @hallelujah's PR (#295) with the master, then applied my changes (#412) and the fixes suggested by @karmi.

Hey, will this be merged upstream?

I believe this commit addresses this pull request so I'm going to close this. Please comment if there's something missing.


Remove tests and test data from release package

The release package includes various text fixtures, including things like TLS private keys, which some container scanning tools (erroneously) flag as problematic. While this is a limitation of the various container scanning tools, it would be easier for us to avoid the problem entirely, while also allowing us to reduce the size of the release archive, by removing tests from our release package.
For example, our release has various .pem and .key files:

Is there some straightforward way to avoid installing tests along with our various dependencies in the release package?

I think the only ways are:

Submit PRs upstream to exclude test directories
Remove them in a postinstall script


Auto-generate config struct from parameters.yaml and provide REST API

Per #225 , This PR introduce a new origin RESTful API /api/v1.0/config that returns the configurations of the server. It reads the docs/parameter.yaml and parse it as a Go struct in param/parameter_struct.go. Later at the server/client init stage (InitServer/InitClient), it unmarshal Viper config into such struct and made available to UI via RESTful API.
A note to the reviewer, right now I placed the API at origin_ui/origin.go but we might want to put this route to web_ui/ui.go in the future given that this is a generic API for all servers. The reason I did this is that there seems to be no authentication middleware in web_ui and I don't want to expose server config to unauthorized user. In the long term, we should figure out auth mechanism for web_ui

@haoming29 I got the following when I ran the website on your branch:
  "ConfigBase": "",
  "Debug": false,
  "DisableHttpProxy": false,
  "DisableProxyFallback": false,
  "IssuerKey": "/etc/pelican/issuer.jwk",
  "MinimumDownloadSpeed": 0,
  "TLSSkipVerify": true,
  "Client": {
    "DisableHttpProxy": false,
    "DisableProxyFallback": false,
    "MinimumDownloadSpeed": 0,
    "StoppedTransferTimeout": 0,
    "SlowTransferRampupTime": 0,
    "SlowTransferWindow": 0
  },
  "Director": {
    "GeoIPLocation": "/var/cache/pelican/maxmind/GeoLite2-City.mmdb",
    "DefaultResponse": "cache",
    "MaxMindKeyFile": ""
  },
  "Federation": {
    "NamespaceUrl": "",
    "JwkUrl": "",
    "DiscoveryUrl": "https://osg-htc.org",
    "TopologyNamespaceUrl": "https://topology.opensciencegrid.org/stashcache/namespaces.json",
    "DirectorUrl": ""
  },
  "Monitoring": {
    "DataLocation": "/var/lib/pelican/monitoring/data",
    "PortLower": 9930,
    "PortHigher": 9999
  },
  "OIDC": {
    "ClientIDFile": "/etc/pelican/oidc-client-id",
    "ClientSecretFile": "/etc/pelican/oidc-client-secret",
    "DeviceAuthEndpoint": "",
    "TokenEndpoint": "",
    "UserInfoEndpoint": ""
  },
  "Origin": {
    "NamespacePrefix": "",
    "Multiuser": false,
    "UseCmsd": false,
    "UIPasswordFile": "/etc/pelican/origin-ui-passwd",
    "SelfTest": true,
    "Url": "https://d92baeb5b3f7:8443",
    "ExportVolume": "/tmp/stash/:/test"
  },
  "Registry": {
    "DbLocation": "/var/lib/pelican/registry.sqlite"
  },
  "Server": {
    "TLSKey": "/etc/pelican/certificates/tls.key",
    "Port": 8444,
    "Address": "<IP_ADDRESS>",
    "IssuerJwks": "",
    "TLSCertificate": "/etc/pelican/certificates/tls.crt",
    "TLSCACertificateFile": "/etc/pki/tls/cert.pem",
    "TLSCACertificateDirectory": "",
    "TLSCAKey": "/etc/pelican/certificates/tlsca.key",
    "ExternalAddress": "",
    "Hostname": "d92baeb5b3f7"
  },
  "Transport": {
    "ExpectContinueTimeout":<PHONE_NUMBER>,
    "ResponseHeaderTimeout":<PHONE_NUMBER>0,
    "DialerTimeout":<PHONE_NUMBER>0,
    "DialerKeepAlive":<PHONE_NUMBER>0,
    "MaxIdleConns": 30,
    "IdleConnTimeout":<PHONE_NUMBER>0,
    "TLSHandshakeTimeout":<PHONE_NUMBER>0
  },
  "Xrootd": {
    "RobotsTxtFile": "/etc/pelican/robots.txt",
    "MacaroonsKeyFile": "/etc/pelican/macaroons-secret",
    "Authfile": "/etc/pelican/xrootd/authfile",
    "ManagerHost": "redirector.osgstorage.org",
    "SummaryMonitoringHost": "xrd-report.osgstorage.org",
    "DetailedMonitoringHost": "xrd-mon.osgstorage.org",
    "Port": 8443,
    "RunLocation": "/run/pelican/xrootd",
    "ScitokensConfig": "/etc/pelican/xrootd/scitokens.cfg",
    "Mount": "",
    "LocalMonitoringHost": "",
    "Sitename": "d92baeb5b3f7"
  }
}```

Also if it is not already this api should be behind the security system that Emma set up.

@haoming29 I got the following when I ran the website on your branch. Should ConfigBase have a default value?
  "ConfigBase": "",
  "Debug": false,
  "DisableHttpProxy": false,
  "DisableProxyFallback": false,
  "IssuerKey": "/etc/pelican/issuer.jwk",
  "MinimumDownloadSpeed": 0,
  "TLSSkipVerify": true,
  "Client": {
    "DisableHttpProxy": false,
    "DisableProxyFallback": false,
    "MinimumDownloadSpeed": 0,
    "StoppedTransferTimeout": 0,
    "SlowTransferRampupTime": 0,
    "SlowTransferWindow": 0
  },
  "Director": {
    "GeoIPLocation": "/var/cache/pelican/maxmind/GeoLite2-City.mmdb",
    "DefaultResponse": "cache",
    "MaxMindKeyFile": ""
  },
  "Federation": {
    "NamespaceUrl": "",
    "JwkUrl": "",
    "DiscoveryUrl": "https://osg-htc.org",
    "TopologyNamespaceUrl": "https://topology.opensciencegrid.org/stashcache/namespaces.json",
    "DirectorUrl": ""
  },
  "Monitoring": {
    "DataLocation": "/var/lib/pelican/monitoring/data",
    "PortLower": 9930,
    "PortHigher": 9999
  },
  "OIDC": {
    "ClientIDFile": "/etc/pelican/oidc-client-id",
    "ClientSecretFile": "/etc/pelican/oidc-client-secret",
    "DeviceAuthEndpoint": "",
    "TokenEndpoint": "",
    "UserInfoEndpoint": ""
  },
  "Origin": {
    "NamespacePrefix": "",
    "Multiuser": false,
    "UseCmsd": false,
    "UIPasswordFile": "/etc/pelican/origin-ui-passwd",
    "SelfTest": true,
    "Url": "https://d92baeb5b3f7:8443",
    "ExportVolume": "/tmp/stash/:/test"
  },
  "Registry": {
    "DbLocation": "/var/lib/pelican/registry.sqlite"
  },
  "Server": {
    "TLSKey": "/etc/pelican/certificates/tls.key",
    "Port": 8444,
    "Address": "<IP_ADDRESS>",
    "IssuerJwks": "",
    "TLSCertificate": "/etc/pelican/certificates/tls.crt",
    "TLSCACertificateFile": "/etc/pki/tls/cert.pem",
    "TLSCACertificateDirectory": "",
    "TLSCAKey": "/etc/pelican/certificates/tlsca.key",
    "ExternalAddress": "",
    "Hostname": "d92baeb5b3f7"
  },
  "Transport": {
    "ExpectContinueTimeout":<PHONE_NUMBER>,
    "ResponseHeaderTimeout":<PHONE_NUMBER>0,
    "DialerTimeout":<PHONE_NUMBER>0,
    "DialerKeepAlive":<PHONE_NUMBER>0,
    "MaxIdleConns": 30,
    "IdleConnTimeout":<PHONE_NUMBER>0,
    "TLSHandshakeTimeout":<PHONE_NUMBER>0
  },
  "Xrootd": {
    "RobotsTxtFile": "/etc/pelican/robots.txt",
    "MacaroonsKeyFile": "/etc/pelican/macaroons-secret",
    "Authfile": "/etc/pelican/xrootd/authfile",
    "ManagerHost": "redirector.osgstorage.org",
    "SummaryMonitoringHost": "xrd-report.osgstorage.org",
    "DetailedMonitoringHost": "xrd-mon.osgstorage.org",
    "Port": 8443,
    "RunLocation": "/run/pelican/xrootd",
    "ScitokensConfig": "/etc/pelican/xrootd/scitokens.cfg",
    "Mount": "",
    "LocalMonitoringHost": "",
    "Sitename": "d92baeb5b3f7"
  }
}```

Surprisingly, it seems that we never set the value of ConfigBase, even the default value in our code. Will ask other people why this is happening but it should be a bug not related to this PR. Thanks for catching it though!

@haoming29 I got the following when I ran the website on your branch. Should ConfigBase have a default value?
  "ConfigBase": "",
  "Debug": false,
  "DisableHttpProxy": false,
  "DisableProxyFallback": false,
  "IssuerKey": "/etc/pelican/issuer.jwk",
  "MinimumDownloadSpeed": 0,
  "TLSSkipVerify": true,
  "Client": {
    "DisableHttpProxy": false,
    "DisableProxyFallback": false,
    "MinimumDownloadSpeed": 0,
    "StoppedTransferTimeout": 0,
    "SlowTransferRampupTime": 0,
    "SlowTransferWindow": 0
  },
  "Director": {
    "GeoIPLocation": "/var/cache/pelican/maxmind/GeoLite2-City.mmdb",
    "DefaultResponse": "cache",
    "MaxMindKeyFile": ""
  },
  "Federation": {
    "NamespaceUrl": "",
    "JwkUrl": "",
    "DiscoveryUrl": "https://osg-htc.org",
    "TopologyNamespaceUrl": "https://topology.opensciencegrid.org/stashcache/namespaces.json",
    "DirectorUrl": ""
  },
  "Monitoring": {
    "DataLocation": "/var/lib/pelican/monitoring/data",
    "PortLower": 9930,
    "PortHigher": 9999
  },
  "OIDC": {
    "ClientIDFile": "/etc/pelican/oidc-client-id",
    "ClientSecretFile": "/etc/pelican/oidc-client-secret",
    "DeviceAuthEndpoint": "",
    "TokenEndpoint": "",
    "UserInfoEndpoint": ""
  },
  "Origin": {
    "NamespacePrefix": "",
    "Multiuser": false,
    "UseCmsd": false,
    "UIPasswordFile": "/etc/pelican/origin-ui-passwd",
    "SelfTest": true,
    "Url": "https://d92baeb5b3f7:8443",
    "ExportVolume": "/tmp/stash/:/test"
  },
  "Registry": {
    "DbLocation": "/var/lib/pelican/registry.sqlite"
  },
  "Server": {
    "TLSKey": "/etc/pelican/certificates/tls.key",
    "Port": 8444,
    "Address": "<IP_ADDRESS>",
    "IssuerJwks": "",
    "TLSCertificate": "/etc/pelican/certificates/tls.crt",
    "TLSCACertificateFile": "/etc/pki/tls/cert.pem",
    "TLSCACertificateDirectory": "",
    "TLSCAKey": "/etc/pelican/certificates/tlsca.key",
    "ExternalAddress": "",
    "Hostname": "d92baeb5b3f7"
  },
  "Transport": {
    "ExpectContinueTimeout":<PHONE_NUMBER>,
    "ResponseHeaderTimeout":<PHONE_NUMBER>0,
    "DialerTimeout":<PHONE_NUMBER>0,
    "DialerKeepAlive":<PHONE_NUMBER>0,
    "MaxIdleConns": 30,
    "IdleConnTimeout":<PHONE_NUMBER>0,
    "TLSHandshakeTimeout":<PHONE_NUMBER>0
  },
  "Xrootd": {
    "RobotsTxtFile": "/etc/pelican/robots.txt",
    "MacaroonsKeyFile": "/etc/pelican/macaroons-secret",
    "Authfile": "/etc/pelican/xrootd/authfile",
    "ManagerHost": "redirector.osgstorage.org",
    "SummaryMonitoringHost": "xrd-report.osgstorage.org",
    "DetailedMonitoringHost": "xrd-mon.osgstorage.org",
    "Port": 8443,
    "RunLocation": "/run/pelican/xrootd",
    "ScitokensConfig": "/etc/pelican/xrootd/scitokens.cfg",
    "Mount": "",
    "LocalMonitoringHost": "",
    "Sitename": "d92baeb5b3f7"
  }
}```

Surprisingly, it seems that we never set the value of ConfigBase, even the default value in our code. Will ask other people why this is happening but it should be a bug not related to this PR. Thanks for catching it though!

ConfigBase is a special parameter, you'll notice it isn't created as a parameter in parameters.go, either. It's gotten using the function getConfigBase in config/config.go

Based on Emma's input, I removed ConfigBase from REST API and added ConfigDir which is what actually being set in the code. @CannonLock you might have to change the field name in UI as well.


Incorrect normals export

Hi,
I faced with incorrect normals export when mesh contains custom split normals data:
Blender output:

glTF Viewer output:

The current export solution is based on the Edge Split Modifier which splits edges according to mesh.auto_smooth_angle. But blender doesn't use smooth angle when custom split normals data are available see blender tooltip for smooth angle input:

Maximum angle between face normals that will be considered as smooth (unused if custom split normals data are available)

So model in blender has a differences of glTF model.
I'm not sure how Edge Split Modifier actually works if I disable Edge Angle option but this solution works for me:
--- a/scripts/addons/io_scene_gltf2/gltf2_filter.py
+++ b/scripts/addons/io_scene_gltf2/gltf2_filter.py
@@ -98,6 +98,7 @@ def filter_apply(export_settings):
                         blender_modifier = current_blender_object.modifiers.new('Temporary_Auto_Smooth', 'EDGE_SPLIT')

                         blender_modifier.split_angle = current_blender_mesh.auto_smooth_angle
+                        blender_modifier.use_edge_angle = current_blender_mesh.has_custom_normals == False

                     current_blender_mesh = current_blender_object.to_mesh(bpy.context.scene, True, 'PREVIEW')
                     temporary_meshes.append(current_blender_mesh)

Models to reproduce the issue: cylinders.zip

I went through the forums and I believe, that auto smooth and edge split modifier do behave the same, if the correct settings are applied. If :-)
Tested with my engine and looks good.
Thank you very much!
Integrated here:
https://github.com/KhronosGroup/glTF-Blender-Exporter/commit/abf5058d8af99b3e3da5467b8abb5d92f84b1ec3


webhooks.list() returning generator is not intuitive

From a user standpoint, I would actually expect a list, not generator here.
https://github.com/CiscoDevNet/ciscosparkapi/blob/master/ciscosparkapi/api/webhooks.py#L124

Understood.  I was admittedly conflicted when designing package's API structure.
I decided to name all of the properties and methods using the same naming convention that the Cisco Spark documentation and parallel JavaScript SDKs use.  Which, when requesting a 'list' of items (be that rooms, messages, memberships, etc.), the Spark docks and SDKs use the term 'list'.
Due to calling the method 'list', one could certainly expect a Python list to be returned; however, a Python list would have to be retrieved all at once (to be an accurate / correct / complete response to the request).  This would require retrieving all results, requesting multiple pages of responses as needed, which ultimately might not be needed if the message, room, membership or etc. that you were looking for is in the first n returned items.  Generators are much more efficient for this purpose, and save the package user a lot of time and headache, and if you actually really do want a Python list, you can easily create one from any generator using the list constructor list(generator).
Still to your point... The method is called 'list' (to be consistent with the docs and SDKs) and returns a generator (which might not be expected and could cause some people grief).
I have considered a few enhancements to minimize any coding issues this terms issue might cause, I could enhance the GeneratorContainer class to provide the following list-like capabilities (which might help close the functionality gap in use):

Add slicing support
Add support for common methods like len()
...others

This would make the generator containers behave more like Python lists; however, there are notable (often positive but sometimes negative) outcomes...  Like:

Everytime you call one of those len() like functions... A full list must be produced - imagine running this on messages for a long-standing highly-active Spark room.
The data is always live!  When iterating the contents, you are always seeing the latest data from the cloud (normally a great thing)!  Except when you aren't expecting the contents of list to change, like indexing an item in the list (it was at index 2 and now it is at index 5).
If you really do want to iterate through the same static (and potentially stale) list of items... A list really is better.  ...and with the current design, you can always create one:  list(generator)

Note that this functionality is documented in the package documentation.
Check out:
Working with Returned ‘Lists’ of Objects

Thx


make use of all available CPU cores

Should we also set cores = 0?

Haven't 100% confirmed, but I'm not sure this is actually working. I haven't observed any job interleaving in the log outputs I've looked at since we started using this.


PSR Generation - Update week handling

PSRs should be generated for the previous week from Saturday - Friday instead of Monday - Sunday.

In the server, generate weekly project status reports method in the project status report service.


Update to work with Pony 0.47.0

Interfaces can no longer have private methods.

Hi @SeanTAllen,
The changelog - changed label was added to this pull request; all PRs with a changelog label need to have release notes included as part of the PR. If you haven't added release notes already, please do.
Release notes are added by creating a uniquely named file in the .release-notes directory. We suggest you call the file 71.md to match the number of this pull request.
The basic format of the release notes (using markdown) should be:
## Title

End user description of changes, why it's important,
problems it solves etc.

If a breaking change, make sure to include 1 or more
examples what code would look like prior to this change
and how to update it to work after this change.

Thanks.


How to trigger client-initiated progress for document formatting

Does VS Code (and its LanguageClient) support client-initiated progress for a document formatting request? (If not, could/should it?)
I have a server that advertises supporting work done progress in its registration, but I'm unable to get the client to include a workDoneToken in the request.

And similarly, is there a way I can get the VS Code UI to show a Cancel button for a document formatting request? I'd like to test the server-side behavior when the client sends cancel for the formatting request, but I can't figure out how to get VS Code to trigger a cancellation in this case.

I was able to trigger Cancel by switching documents while the formatting request was in progress. I have found no way to trigger client-initiated progress though, even when the client/registerCapability request for textDocument/formatting has "workDoneProgress": true in registerOptions.

@davidmatson VS Code doesn't support client initiated progress for formatting not for most of the user language based requests. Unless it does there is little that the LSP libraries can do to make this happen. I will therefore close the issue. This can enabled when VS Code support progress for language provider requests.
Please note that LSP supports this since other editors do have client initiated progress for their language features.


removing unused queue code

Change description
Removing the code that reads from the queue in assessment, and a bunch of other scripts we don't need any more now we write directly to assessment store on submit.

Removed copilot config for the assess import queue

Companion PR for docker runner to remove that config from local https://github.com/communitiesuk/funding-service-design-docker-runner/pull/108

Moved bulk_insert_application_record into conftest as it is only used by tests now (previously used by the queue reader)

Removed unused config values from DefaultConfig and envs

Removed assessment polling code, and associated methods

Removed old location_utils and import_applications scripts

Removed appropriate unit tests

[x] Unit tests and other appropriate tests added or updated

[x] README and other documentation has been updated / added (if needed)

[x] Commit messages are meaningful and follow good commit message guidelines (e.g. "FS-XXXX: Add margin to nav items preventing overlapping of logo")

How to test
Pull this branch and the linked docker-runner branch
Submit an application. It should correctly appear in assessment, and the submit notifcation should be sent
Screenshots of UI changes (if applicable)
None

Do we also need a companion PR on workflows to remove the assessment queue?


Add support for BRM schema changes

PR Summary
Add support for BRM schema changes as per https://github.com/Azure/bicep/issues/10810
Metadata usage changes for Bicep Module Registry

summary will become description to align with OCI registry (short summary/overview)
description (old) will become details (longer blurbs)

PR Checklist

[x] PR has a meaningful title
[x] Summarized changes
[x] Change is not breaking
[x] This PR is ready to merge and is not Work in Progress

@BernieWhite any thoughts on this one?

@BernieWhite LGTM


pub.dev page says that package has Mac OS support

Why does it say so?
https://pub.dev/packages/activout_firebase_options_selector

Why shouldn't it? all of the firebase packages work on Mac OS
https://pub.dev/packages?q=firebase

Hittar dock inget om det på https://firebase.google.com/docs :)


Unable to resize results and messages windows in split view

Issue Type: Bug
WHen working with split view (2-3 columns), I've found that sometimes the messages window is resizable independently from the Results window (which is what I would want -- independent resizing), and sometimes not.
For example, with this simple query:
select @@version, SERVERPROPERTY('edition')
In a single column, the messages and results windows are independently resizable.  If I hover over the top edge of either the Results or the Messages window, I see the up-down arrows and can pull the edges independently to resize them.  This is very handy when the messages are small (or not relevant) and the result set is large.
if I then split the editor into two columns, start a new query (same query) and drag it to the new column, A few things happen:

The left hand column results and messages windows are no longer independently resizeable.  They are locked together, although the resize arrows appear in both windows. The one on the messages windows stops working

The right-hand column results and messages window are now not resizable at all.  I can see the resize arrows but cannot drag the windows up or down to resize them.

An "X" appears in the right-hand column's messages window.  Clicking it seems to unlock the resize arrows though I still cannot resize results and messages independently.

Azure Data Studio version: azuredatastudio 1.7.0 (e1280022d69b651cfff04b30e830904575c8acda, 2019-05-08T00:55:40.928Z)
OS version: Windows_NT x64 10.0.16299

System Info
|Item|Value|
|---|---|
|CPUs|Intel(R) Core(TM) i5-8350U CPU @ 1.70GHz (8 x 1896)|
|GPU Status|2d_canvas: enabledchecker_imaging: disabled_offflash_3d: enabledflash_stage3d: enabledflash_stage3d_baseline: enabledgpu_compositing: enabledmultiple_raster_threads: enabled_onnative_gpu_memory_buffers: disabled_softwarerasterization: enabledsurface_synchronization: enabled_onvideo_decode: enabledwebgl: enabledwebgl2: enabled|
|Load (avg)|undefined|
|Memory (System)|31.84GB (17.76GB free)|
|Process Argv|C:\Users\BRITTG2\Downloads\1.Alter_Function_results.IsReconDataReady4Consumption.sql|
|Screen Reader|no|
|VM|0%|
Extensions (13)
Extension|Author (truncated)|Version
---|---|---
ssmskeymap|kev|1.1.0
admin-pack|Mic|0.0.2
agent|Mic|0.38.0
dacpac|Mic|0.2.0
import|Mic|0.7.0
powershell|ms-|1.12.1
profiler|Mic|0.7.0
schema-compare|Mic|0.2.0
server-report|Mic|0.1.5
sql-vnext|Mic|0.13.0
whoisactive|Mic|0.1.1
sql-search|Red|0.3.3
poor-sql-formatter|WSR|0.1.0

Another related oddity.  I often have queries where the messages window has only three lines.  I want to resize it to the bottom of the editor area.  I can move it a little up and down (maybe half an inch?) but that's it.
Also, If I close the messages (Click the little arrow), the resize arrows do not appear, even though I want to drag the messages all the way to the bottom so that only one line is used on screen

Similar to Window Resize (#4816) though that one does not mention split columns.

This should be fixed by the change to move Message to its own tab.  Please let me know if you're still hitting this issue on 1.8.0.
I didn't open a related bug while validating this scenario https://github.com/microsoft/azuredatastudio/issues/5929.


Reuse time.Timer in ack and rtx timer utilities

@paulwe is this for performance by any chance?

@edaniels yes, we're seeing high runtime.siftdownTimer when serving large numbers of clients. these two utilities are responsible for creating over 99% of the time.Timer instances in our code.


Add closest_points_between_segments() basis path tests for Geometry2D

New tests for the closest_points_between_segments method in Geometry2D, based on basis path testing.

Thanks! And congrats for your first merged Godot contribution :tada:
And sorry for the delay getting this reviewed and merged.


Time Remaining is Infinity even if done

timeRemaining torrent property is Infinity once done as downloadSpeed() is 0.

Released as 0.63.1.


Cannot use nginx-app.conf with Drupal 8 docker image based off gcr.io/google-appengine/php:latest

Could we move the following from nginx.conf to nginx-app.conf file as default?
    # Media: images, icons, video, audio, HTC
    location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ {
    }

    # CSS and Javascript
    location ~* \.(?:css|js)$ {
    }

    # pass the PHP scripts to FastCGI server
    location ~ \.php$ {
    }

When trying to integrate with Drupal 8 these rules fire before the ones we wrote.
Drupal has specific patterns for update.php and image styles which autogenerate thumbnail files if they do not exist in sites/default/files/styles directory.
The only way we could get it to work is to define our own nginx-http.conf but that's not clean.

I created a longer regular expression to get around the issue.


[Bug]: Cron Expression for Automated Backups Not Working

Is there an existing issue for this?

[X] I have searched the existing issues

Description
A user has set up this environment variable: APPSMITH_BACKUP_CRON_EXPRESSION="0 12 * * SAT" . However, the backup is running every day and not as expected only on Saturdays. Appsmith backup starts every day at 0 midnight.
Even when trying to change it to APPSMITH_BACKUP_CRON_EXPRESSION="0 22 * * 1 (1 for Monday), the behavior is the same.
Steps To Reproduce

Set the environment variable APPSMITH_BACKUP_CRON_EXPRESSION="0 12 * * SAT" in the docker.env file.
Restart Appsmith.
Note that the backup starts every day at midnight.

Public Sample App
No response
Environment
Production
Issue video log
No response
Version
self-hosted
 Front conversations

possible duplicate of 31393


some question about cyclegan.py

I'm a little confused about why use mse_loss in GAN loss and use L1 loss in Cycle loss and Identity loss,and i didn't find this in the paper.
And the second question is why use the fake_A_buffer.push_and_pop()  ,it seems to do something like if the len<50 do nothing,and when len>50,the part of >50 do the random choice the sample? i really confused about this

Well, I think you can try whatever loss function, this is a no-big-deal.
As for the buffer, it will start random pooling after it is filled (max-size=50). This won't affect the performance as one usually has tens of thousands of iterations, or even more.

Can you be more specific, please? My personal understanding about what the buffer do is that the first 50 fake sample from the generator are fed into the discriminator as usual, but in the meantime they are stored in a list.
When the generator generates the 51st fake sample, the newest fake sample has a 50% chance to replace a element in the list randomly. then the replaced element in the list is fed into the discriminator. There is also a 50% chance that the newest fake sample is fed into the discriminator directly, which mean the list is not change.
if my understanding is correct? What is the purpose of this.


Hitting enter in a text field in the Morpheme search form leads to a CSV download

...rather than starting the query.

We fixed this before: #250

Hmm, I saw this at your screen, but on my machine I can't reproduce it, @ocrasborn . Has it by any chance also magically been solved for you?

Nope. Checked again, happens not only in Safari but also in Chrome and Firefox on mac. Maybe a mac-thingy @vanlummelhuizen can check out on his test machine.

Done. I also fixed a minor thing where hitting the Reset button made the empty form to submit anyway.

This is now live by the way.

:-)


Use TileXYZ instead of QuadkeysAndAltitudekeys

Is your feature request related to a problem? Please describe.
There is overhead about converting QuadKey into 3D-tile key index.
Spatial ID uses f, x and y independently.
While both 3D-tile key index and QuadkeysAndAltitudekeys have z-order feature, QuadkeysAndAltitudekeys causes convert between QuadKey and 3D-tile key for using independent indices.
This conversion is not essential and has overhead.
Describe the solution you'd like
QuadkeysAndAltitudekeys needs to replace into TileXYZ
Describe alternatives you've considered
It is breaking change because backward compatibility will be broken if QuadkeysAndAltitudekeys are deleted totally.
It needs transition duration.
Additional context
(nothing)

This issue is coped with.


Could not resolve all dependencies for configuration

A problem occurred configuring project ':app'.
> Could not resolve all dependencies for configuration ':app:_debugApk'.
   > A problem occurred configuring project ':printer'.
      > You have not accepted the license agreements of the following SDK components:
        [Android SDK Build-Tools 25.0.1].
        Before building your project, you need to accept the license agreements and complete the installation of the missing components using the Android Studio SDK Manager.
        Alternatively, to learn how to transfer the license agreements from one workstation to another, go to http://d.android.com/r/studio-ui/export-licenses.html

In workflow, i used below 4 commands in script but still error
android update sdk --no-ui --all --filter build-tools-25.0.2
android update sdk --no-ui --all --filter extra-android-m2repository
android update sdk --no-ui --all --filter extra-google-m2repository
./gradlew dependencies

android update sdk --no-ui --all --filter build-tools-25.0.2

It seems your app uses 25.0.1, not 25.0.2, but you install 25.0.2
Also, related changelog & solutions: https://discuss.bitrise.io/t/weekly-virtual-machine-stack-updates-2017-01-14/139


error with tx_hash

I get an issues when trying to send the transaction, seems like it shows me an error for tx_hash. Please help. Thanks in advance

This is the erroe I get

solved


Python 3 compatibility

No doubt there are ways this could be improved, but this gets it installing, importing, and almost passing the test suite.
There's one test failure left, and I think that's something odd with numpy, specifically the ndarray.searchsorted() method. It returns seemingly random results when it's called in panel.get_axis_dummies() - but I can't replicate those results calling searchsorted on identical arrays interactively.
It doesn't add any failures to the Python 2 test suite (one test is failing for me in master), but I've only checked this with Python 2.7.

This is really great-- thanks for doing this. It's also impetus for me to get Python3+NumPy+SciPy installed on my machine for testing purposes. I will do that, run the test suiteu, and merge this in as soon as I can.

Rebased this and merged it in. There are some test failures in what appear to be corner cases in NumPy trunk, I will have to investigate those some other time

Thanks Wes. For the record, I was testing with Numpy 1.6.1.

Thomas, can you help me figure out why the cython command stopped working once setuptools is introduced (for the purpose of running 2to3)? I'm talking about:
python setup.py cython

in the meantime, I kludged things so setuptools only gets imported in py3k, so no urgency
https://github.com/wesm/pandas/commit/5a330385479edbe715daedaceb59c3a222a84e0f

I'll have a look - I'd just been doing python setup.py install.

It appears to work for me with setuptools 0.6 from Ubuntu repos, or with distribute 0.6.19 as installed by virtualenv.

abc
running cython
cythoning pandas/src/tseries.pyx to pandas/src/tseries.c
cythoning pandas/src/sparse.pyx to pandas/src/sparse.c

(the abc is from a print statement I added just below the setuptools import)

that's prior to my kludge, right? i was running it on win32 to see if I can distribute 3.x binaries for the imminent next release. sigh, windows, the source of so much dev unhappiness

Here's another not so awesome thing: on 3.1/3.2 on Win32 (haven't tested Win64 yet), the default csv writer writes not 1, but 2 line breaks per line. Specifying explicitly lineterminator='\n' for now which solves the problem (I think csv.reader interprets CRLF as \n\n which seems really bad)

I tweaked your kludge so it imported setuptools on both platforms (the abc is to check that it's getting imported).
With Windows, I think it writes \r\n by default. Unix-y programs might interpret that as two line breaks, but it's the platform default for Windows. Explicitly specifying the lineseparator is probably sensible.
I don't have Windows to hand, but I can test in Wine if you like.


Emogify breaks Url parameters in  tags

test
becomes
test
& must not be escaped into & in the URL

Yes, it must be escaped as a HTML entity for the document to be valid HTML as the ampersand is one the the reserved characters. The URL in the browser when clicking the link will have the ampersand entity decoded.


added retry to api request

Sometimes we need a retry.

Thanks. I'll need a lot more info here though. Why did you need a retry? What did you do that didn't go as you expected and how did you trigger it?

Occasioanally, I receive the following error:
(Illuminate\Http\Client\ConnectionException(code: 0): cURL error 35: OpenSSL SSL_connect: Connection was reset in connection to api.lemonsqueezy.com:443  (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://api.lemonsqueezy.com/v1/checkouts at \vendor\laravel\framework\src\Illuminate\Http\Client\PendingRequest.php:856)
Not sure if I am the only one with unreliable network, but I need a solution. I am open for other solutions as well. But for me, a retry is always a good idea when calling APIs.
Another idea: If we use the "old" way of creating the checkout URL, we don't need the call at all, makes my site way faster, and I also don't need a retry.

Thanks. I've been in touch with Lemon Squeezy and they recommend sending in a support ticket as this seems to be an issue with their API. Right now, I'm a bit reluctant to add a retry mechanism in the library itself as there is no such thing as idempotency in the Lemon Squeezy API and thus we don't know what will happen if the same request is sent out twice.
I'm also sorry to say that I have no plans of re-introducing the old way of creating the checkout url as that's A) disregarded against from LS' side and B) not as flexible as using the API.
Hope you can solve this with LS 👍


Add auto-merge setting option to merge newly produced ships with existing idle fleets at location

With the settings option enabled, if a ship is made at a planet while there are other fleets consisting solely of that design sitting idle at said planet, the new ships should be merged into the lowest # idle fleet at that planet. (For those that enjoy lots of excruciating micro, it would be disableable.)

I want to give the player more flexibility on assembling fleets for their builds.  This is a good step in that direction.

This should also work with routing as well.
Funny enough, there is actual precedent for this in vanilla Stars!, as remote miners routed to a planet will automatically merge themselves with other miners at the routing destination on arrival.


Sure 😄

Sorry, I already made the change before I saw this.


Bind SkPictureShader

Description of changes
Allow create shaders from SKPicture

Related to issue #969

API Changes
Added:

sk_shader_t SkiaApi.sk_shader_new_picture(sk_picture_t src, SKShaderTileMode tmx, SKShaderTileMode tmy, ref SKMatrix matrix, ref SKRect tile)
SKShader SKShader.CreatePicture (SKPicture src, SKShaderTileMode tmx, SKShaderTileMode tmy, SKMatrix localMatrix, SKRect tile)
'SKShaderTest.CanDrawWithCreatePictureShader()'

Behavioral Changes
As mentioned in issue: existing native libraries already support this changes!
PR Checklist

[x] Has tests
[x] Rebased on top of master at time of PR
[ ] Changes adhere to coding standard
[ ] Updated documentation

/azp run

Thanks for this PR @alexandrvslv! This looks like you first PR here, so welcome to prestigious position of code contributor!
I am having a look at the changes now and all looks really good. Just waiting on CI.
I also just noticed that our CLA bot is still pending. Just wanted to check if you got a message to sign it? If not, then I think my suspicions that the bot is having issues is confirmed.

Thanks for feedback @mattleibow!
I just recieved email notification about comments\notifications on this PR.

any updates?

Sorry, I miss CLA signing

I figured out the latest changes (codegen SkiApi). Maybe I'll close this PR and make a new one?

Why not just resolve conflicts?

Why not just resolve conflicts?

Resolving don't handle the building error's, as of pinvoke changes require replace ref to &

I JUST did this, so sorry.  Sorry.
You should just be able to run this command in the SkiaSharp root:
dotnet run --project=utils/SkiaSharpGenerator/SkiaSharpGenerator.csproj -- generate --config binding/libSkiaSharp.json --skia externals/skia --output binding/Binding/SkiaApi.generated.cs

That just builds and runs the generator.
To fix the conflicts, just replace with entire contents with https://raw.githubusercontent.com/mono/SkiaSharp/master/binding/Binding/SkiaApi.cs
After all this, you should end up with your new API in the generated file.

Well, actually scrap that. Just nuke your changes to SkiaApi.cs by replacing the contents with https://raw.githubusercontent.com/mono/SkiaSharp/master/binding/Binding/SkiaApi.cs
The generator should automatically pick up new APIs as we go along.

With regards to changes, you can just edit in GitHub and we should be good. Hopefully it is not too painful.

It's all by my misunderstanding of PR workflow.  Thanks for helping me to figure out, and for great feedback around just few lines of code)

No prob! No matter how small, it all matters in the end ;)


[Feature] Migration arguments

I have a scenario where I'm dynamically creating a table based on a template. The table name would be non-static.
Ideally I'd like to re-use my migrations to dynamically create the table by specifying a prefix for the name.
It'd be nice if when I perform a migration operation(s), I can feed in external args for use with building the schema.
For example:
export async function up(db: Kysely<any>, args: Record<string, any>): Promise<void> {

await migrator.migrateToLatest(pathToMigrationsFolder, { ... })

I guess I could also just do this without migrations since it uses the db object under the hood, but then there would be no actual tracking of this in the migrations table

I don't think this is a good idea. Migrations should never be dynamic. They should be static in all possible ways.
You could simply use environment variables.

Thank you for the consideration!


OpenCover tool only intercepts the last test assembly

Internally OpenCover intercepts the test alias and runs it. The problem however is that the test alias only executes once, for the last test-dll even if there are multiple assemblies found by the globber.
So when running a test runner separately all matching test assemblies are processed...
Task("Run-Unit-Tests")
    .IsDependentOn("Build")
    .Does(() =>
{
    XUnit("./src/**/bin/" + configuration + "/*.Tests.dll");
});

But when running the same test runner within OpenCover, the same test assemblies are found but only the last one is intercepted and processed.
Task("Run-Code-Coverage")
    .IsDependentOn("Build")
    .Does(tool =>
    {
        tool.XUnit("./src/**/bin/" + configuration + "/*.Tests.dll");
    },
    new FilePath("./result.xml"),
    new OpenCoverSettings()
);

The same behavior is observed both with MSTest and XUnit. Perhaps because both of them iterates over the collection and executes the test assemblies one by one?

This should remain open since this still applies to xUnit.

Ah, gotcha.  Should we make that a separate issue?  Or will we be able to correct that before we ship 0.9.0?

@gep13 Hmmm. You've got a point. What do you think is best?

@patriksvensson I would be happy to leave it open, and complete the XUnit work under this same issue, but at the same time, I wouldn't want to hold up the release because it wasn't in.  Is there a lot of work to correct the XUnit side of things?

@gep13 No, not much to do. I can fix it tonight to get it out of the way :smile:

@patriksvensson that sounds perfect :+1:

DotCover #691 also suffers from this issue since it works the same way as OpenCover.

@mholo65 This should be fixed in v0.10 for dotCover as well :smile:

Should this be reopened due to #745?

@phrusher xUnit 1 do not seem to support multiple assemblies so not sure what can be done here.

@phrusher  xunit 2 still supports multiple assemblies, was only the old XUnit V1 aliases that were reverted

@patriksvensson exactly, as XUnit2 is backwards compatible it should suffice.

@patriksvensson @devlead Just wanted to check as it related to this issue. We are running XUnit1 but I guess it might be difficult to fix this issue completely.

@phrusher You can use the xUnit v2 tool to run xUnit v1 assemblies :smile:

@patriksvensson yeah that would work, could be an issue if tests depend on xunit pre 1.9.2 it could potentially be some breaking changes, but worth a shot ;)
@phrusher  One way would be to make the XUnit 1 alias smarter, but that would likely be served best as a separate issue non related to OpenCover.
That would essentially mean

@patriksvensson Well I'll be damn.. It worked! :)
@devlead As the XUnit2 tool seem to run fine we can leave XUnit1 as is. At least until someone else stumbles over an issue with it :)
Thanks!

I copy your code, running is fail!

@AnimationChen What code? The code at the top represents the original issue posted 3,5 years ago and will not work.


qlog/event.go: import the error structs from quic-go/qerr

Instead of importing the error structs from the quic-go package, we can be more specific and import them from the qerr package.
If you tried to import the quic-go/qlog package you got an cyclic import error.
This fixes the problem.

clumsy mistake, opened new one


Better Internet Quest Distribution

Quests are downloadable, but want to move to something like ModDB to allow users to log in, rank, comment, browse content.

From #5

I've been experimenting with moddb and I can't get it to work well for this function.  Looking to add author, time, difficulty, etc to the quest instead.
It world still be best to have a page to list available quests, post info and get comments. I have submitted Valkyrie as a bgg item as that is one option. Still considering other ideas.

Sites like minecraftmods.com seem to use wordpress as a CMS.

I was trying to avoid maintaining such a system.  Now I am working on making the in game system better, maybe just use that for now.

This feature is so important and has to be really, really easy to use. Both for the creator and for users. The way it is now it's really easy to use for the player, but not easy for creators. Until it is, this program won't get much traction. I can help if you need help but I would need some guidance of where to start. How does the program get the mod files?

Here is where to start:
https://github.com/NPBruce/valkyrie/wiki/QuestPublish
Valkyrie check the manifest file (https://github.com/NPBruce/valkyrie-store/blob/master/MoM/manifest.ini) and fetches images and packages from there.
Really though Valkyrie can do anything, as long as it can get the info.
The problem is having a web interface that is robust, easy, allows user account but without being annoying, and has all of the modern web features people expect. I still think using an existing service is a good path, but I can't find any that are suitable.  Obviously something custom could be created, but a half job would be worse than what we have currently.
As for the 'not easy for creators' I don't think this is such a big deal.  Creators can just send me a copy and not have to use git.  The big advantage to using a web system is promoting community, allowing discussion, ratings and collaboration.

For a first step choose a CMS.
Then install something like WP Download Manager on it (here is a Sandbox Demo (user: demo, password: demo)).
For a forum Discourse could be used (Demo here) it also comes with a wordpress integration.
I'd say worry about the valkyrie store integration later.
It could just be a second repository url to a httpd directory listing service.
The result is something like this:
http://srp.nu/

I'm actually a web developer by trade and would be able to contribute to this, although it really should be its own repo with features and whatnot (linking back to the manifest file in this repo).  Is there a centralized document / communication platform you guys use for planning?

I completely agree it should be it's own repo if that is the solution.  There is no planned communication, but implementing on the Valkyrie side really isn't hard, just need to be able to do a public http request for:

Quest list
Meta data for each quest
Package file

It may get a little trickier in the future for content pack support which could be a lot bigger, but it wouldn't change much.
I would still like to use an off the shelf solution as much as possible, I don't want to maintain another project.

Any news about the web interface guys? Do you still need help to find a good solution? I think it would be great to have it, not just for scenarios rating, but because it would be a good way to attract people.

No good solution has been found at this point.

My scenario is near to an end and I decided to create a google docs poll in order to let people rate it in a centralized way. The link to the poll will be available in the scenario itself.

Hi all,
I see this ticket as been voted as quite important, and it's true it would help to build a community to have better communication between players and authors.
But technical implementation is not moving much, mainly because of the amount of different request stacked on this topic.
I agree it would be great to do it all, but I would suggest to do it step by step.
I would divide all requests into these tasks/topics:

be able to rank / provide simple feedback for a scenario that has been played (I would suggest from the app once the scenario is finished)
Present the scenarios with the rank / number of voters
Present a better description / additional metadata and allow filter (rank, author, languages, number of time played, average duration ...) #832
Have an easy(easier?) way to push new scenario.
have a portal to enable discussion between authors and players ( discord? reddit? ) #860
Have a website with all of the metadata available for each scenarios

1 and 2 would be top priority I think.
5 would probably be the easiest thing to do.
@redwolf2, I think your proposal for implementation is very good.
I would be ready to take part in the coding, but I have one main question: where would we host this ?
It would have to be free, reliable (and last for a few years).
Otherwise, I was thinking about google forms / google spreadsheet.
It would not be as efficient, as flexible as a database, but it would be quite easy to implement, and reliable.
How do you feel about using google platform for this?
@NPBruce, I will not work on this before I have your go on this :)
And maybe you prefer working on this yourself ?

I don't have capacity to work on this (as you have no doubt noticed I'm not on top of core development).
I am happy for anyone else to take this on. I don't entirely agree that doing things inside the app is the first step. I would suggest starting a web interface first, even if very basic, and the form that it takes will shape how the data is stored and how the app interacts.
Though I guess you can just move it later. Either way, the issue with feedback in the app is how do you authenticate the write to whereever the data is stored? Perhaps something as simple as sending an email to a specific account with a volunteer who can manually vet the reponses will do for now? The email could still be checked by a script later.

Hi @NPBruce ,
I'm happy to help and I have to say that the code is really well thought and structured.
It's really nice to work on this project also for this.
To answer your question:

I would suggest starting a web interface first, even if very basic, and the form that it takes will shape how the data is stored and how the app interacts.

I agree, and I have done a first draft of Google forms.
Here it is : https://goo.gl/forms/sCiwEojsoK6yWNSk1
feel free to have a look and comment
This form will be almost fully filled automatically by the app, except for the field marked as 'manual'.

Either way, the issue with feedback in the app is how do you authenticate the write to wherever the data is stored?

The form would have to be without authentication.
But as it would be called from the app, the URL will not be shared.
It would still be in the code, but we can add one or two points of security, just to discourage the few ill intended geek.

The email could still be checked by a script later.

All scripted actions would require a specific hosting.
If we have a specific hosting, I would rather use a db than a google forms + google sheets.
But I don't see an easy way to get that.

Assuming you can submit google form data with a simple http request that look easy enough.

Yes, it should be easy enough with a single HTTP Post request.
Form result will be pushed to a spreadsheet that will have its own script attached.
This script will generate a JSON with the rating, numbers of play session for each scenario. Generation will be done automatically.
Json file will be free to access, but read-only.
Full spreadsheet will be available in read-only to authors, via authentication.
It seems feasible, now I will see how easy it is when I will start working on it :)
One thing I don't know is how to detect that the scenario is ended.
Is there a way to do this, so I can display rating popup at the right time ?
Or should I do it every time players leave the session?

I've been spending some time on this :

unofficial Valkyrie google account created
Google form : DONE
Google sheet shareable file with live results : AVAILABLE (can be shared with authors in read-only)
Google script to generate JSON, every hour : DONE (JSON is available on a google drive)
Class creation to push content from Valkyrie to Google form : DONE (with Unity lib)
New 'rating' screen displayed at end of scenario : ONGOING (screen is displayed at the the right time, thanks Bruce for the tip, design implementation ongoing with 3 field : did you won ? your rating? Comments ?)
Gathering data from ongoing QUEST to push to the form automatically : Almost DONE (only game duration is missing)

Not started yet:

download JSON from Google drive (should be easy)
Display the data coming from the JSON in the scenario list (download, and quest selection)
if anyone has some suggestions on how to display the following information on those two screens:
rating, number of time played, average duration, average win ratio

I will be out of home for two weeks, and I plan to work on this when I'm back.
Any design suggestion would help me a lot :)

Asking if you won is interesting, as 'winning' is not a concept Valkyrie is aware of, there may be different endings.
I think including the log would be a great help for scenario developers, they could see exactly what choices are made and what happened. This may be what you mean by 'data from ongoing QUEST'.

Yes exactly, all player choices will be recorded and sent to the form, and it will be available to quest authors.
Also the number of players, name of investigators, language and of course scenario id.
Scenario id will be the filename as I think it is unique and it does not change with the language selected.

Here is a preview of the rating screen.
Please tell me if you have any suggestion for improvements :

Hello
I just finished implementing the core functions of the rating system in Valkyrie
Design is not final yet, it is just here for test purposes (I don't really like the 'hearts')
but here is the quest list with rating, , number of play session, average win ratio:
https://cdn.discordapp.com/attachments/473586525477666826/480880321806598175/unknown.png
And the end game rating form look like this :
https://cdn.discordapp.com/attachments/473586525477666826/480880685348028446/unknown.png
Any help/suggestion for the design of the scenario selection screen with rating, number of play session, average win ratio would be welcome
For the end game form, i think it is OK as it is for a V1, but any suggestion for improvement would be welcome too.
Feel free to join on discord, if you want to discuss this directly :)

The ratings are now available :

Even with some tentacles !
Please join in the Discord if you would like to alpha test the version.

Beta test version available with implementation of this issue:
https://github.com/BenRQ/valkyrie/releases/tag/release%2F2.1%2FBrynhildr_2.1.0b
You can see rating when browsing quests.
You can rate, comment a scenario at the end of the game.
Authors can access statistics and comments from player in a Google sheet.
To access the file, you should create a new issue and tag me, I will share the read-only access to the file.
@NPBruce @redwolf2 tell me if I can close this issue or if you want to keep it open until all points have been addressed.


🔊 Log System

Better Logging with Logging File, Better Colors and Syntax

I'll just merge it. If this makes problems make a Issue.

:tada: This PR is included in version 2.0.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


CMST coing gecko update

CMST is already added, just need to update previous one. Will have to update this PR. @Subham2804


Allow users to upgrade resources through the UI

Description
As a TRE Administrator/TRE Workspace Owner/Researcher
I want to be able to upgrade resources that have been deployed through the UI,
so that I can easily keep them up-to-date and take advantage of new features and bug fixes.
Acceptance criteria

[ ] Allow users to choose the version they want to upgrade to within the resource card, based on their role.
[ ] Show a warning dialog box before upgrading to a major version, requiring confirmation before proceeding with the upgrade.

@guybartal moved onto the feature roadmap. Would be useful, but not sure its an immediate priority.

For now, we will not let users upgrade to major versions through the UI, since it might break the resource so we should not make it too accessible.


Problem since commit f77f572

Hi,
I'm not sure someone will be interested in this but since it's out of my knowledge, i'll take a shot ...
Since commit ff77f572 the hax do not succeed anymore when used in my "CtrBootManager" application on my 9.2 n3ds, as seen in the attached screenshot. Switching to the previous commit does fix the problem, but this prevent me updating to latest libctru. I guess the problem come's from using the framebuffer to draw before executing the hax as i guess it's working fine in "standalone mode". I'v tried everything like clearing fb/reinit gfx etc. but i'm stuck.
This can be replicated by building CtrBootManager with libkhax commit ff77f572 but i can understand that it's a loss of time for other people... but i hope someone can lead me to some tips/ideas.
Thanks in advance,
David.

Yeah I had this issue on my units as well. Reverting that commit fixed it for me.


Bytes should never be null on PBJ generated classes

Problem
Given a generated class that supports protobuf bytes, we represent this as a Bytes object. A lot of code is doing null checks when a default Bytes.EMPTY return from the pbj generated object would have made the code simpler.
Solution
According to the specification, the default value for bytes is empty bytes. And in our parser we honor this, making sure the bytes are always Bytes.EMPTY or equivalent, and never null. But we do not mark the Bytes argument in the record as NonNull, so code that uses a PBJ object tries to be defensive when it shouldn't need to. If we annotated this properly, then static analysis could prove it is safe. And we should absolutely forbid null in the builder for Bytes arguments.
Alternatives
No response

Rather than forbid null in the builder; perhaps just translate null to Bytes.EMPTY but still annotate with @NonNull, so we support static analysis, but don't actually crash.


fix: Remove print statement

Add logger and use that. Print is executed at every manage invocation
and thus messes with output.

@melvyn-oviavo thanks!


Cant make a defined PK not autoincremental

We have an entity that doesn't define itself its PK (we already have it from another service, we just store it alongside some information). For reference let's say we have a User with a driver_id(PK int) + name(string) (but the ID already exists in another service)
We are building the fields like this:
return []ent.Field{
  field.Int("id").Immutable().Unique().StorageKey("driver_id"),
  // other fields
}

Yet, when we run Ent and see the schema creation query, it makes it autoincremental (when it shouldn't be, since we already know it and we will provide it when creating)
Query looks like this (not pasting it completely as it includes other non relevant info:
BEGIN;
CREATE TABLE `user`(`driver_id` integer PRIMARY KEY AUTOINCREMENT NOT NULL, ...

Is there a way to avoid having a useless PK (which will be autoincremental but not the PK we want), and making our own "external" integer our PK? (being non autoincremental)

[x] The issue is present in the latest release.
[x] I have searched the issues of this repository and believe that this is not a duplicate.

Current Behavior 😯
Trying to make our own PK makes it autoincremental when we don't specify it (nor we can avoid it)
Expected Behavior 🤔
We should be able to specify it or at least disable it.
Steps to Reproduce 🕹

ent init User
Create a field as the above
Generate code and see the table schema creation

Your Environment 🌎

Tech
Version

Go
1.14

Ent
0.5.3

Database
sqlite3

Hey @saantiaguilera and thanks for raising up this issue.
It's actually a duplicate of https://github.com/facebook/ent/issues/559, and we can address it if it's needed. Let's continue the discussion there?

Sure! Closing this. Thanks!


Update Set-Mailbox.md

Added RemoveOrphandedHolds per email request.

OPS Build status updates of commit 33df96c:
:clock10: Preparing: average preparing time is 1 min(s) 12 sec(s)

OPS Build status updates of commit 33df96c:
:clock10: Incremental building: average incremental building time is 12 min(s) 22 sec(s)

OPS Build status updates of commit 33df96c:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

exchange/exchange-ps/exchange/mailboxes/Set-Mailbox.md
:white_check_mark:Succeeded
View (exchange-ps)

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


What Next ?

The book is really good and easy to understand.I would become even more awesome if you could add another chapter on how implement Javascript and make real world web applications.Just a brief idea to get the reader started.On how to get the best out of Javascript.

Perhaps, translate it more languages? I can translate to russian)))

Thanks for the info


request: remove the shading on held items?

Is this a request for something like a 'fullbright' mode for held items?
Or is there something wrong with the current shading?


Replace M.A.All meta-package with Microsoft.AspNetCore.App  - MD files only

currently mentioned in 22 files. This issue is about updating the docs that specifically mention Microsoft.AspNetCore.All
We need to convert a few of these and agree on the language and style of the update.
Updating the samples that use the ALL meta-package is a lower priority.  See Update all 2.0 samples to use M.A.App, aka Microsoft.AspNetCore.App #6382

@guardrex 	what's the state of this issue?

@guardrex 	no hurry, just wanted to get the state. It's not a priority.

ok ... I'll get it. It's going to take a while longer to get samples squared away, so we may as well go ahead. I think (hope) that less than a dozen topics need a touch to drop it out of the text (with versioning, of course). The samples associated with those topics may still use the All package, and we can fix them up as we go on sample updates.

@Rick-Anderson @scottaddie @tdykstra I'm ready to proceed on this issue today, but let me get the word on if there was a design change. The last info that I have is no version on the App package ...
https://github.com/aspnet/Docs/issues/8579#issuecomment-424548306
https://github.com/dotnet/sdk/pull/2533


Only use <- pure where it provides value

What you call an anti-pattern, I call a pattern. The prime pattern is vastly more dangerous - the odds of referring to ghcFlags or ghcFlags' when you meant the other one is super high and it's usually not a type error. The odds of forgetting a prime on the LHS and getting into a hard to diagnose infinite loop are also high. What I really want is let and let rec to be two different keywords, like in OCaml, but in the absence of that, the <- pure pattern seems like a good idea.

I wrote up my thoughts in https://neilmitchell.blogspot.com/2020/03/the-pure-pattern.html

Fair point. Here's two ideas:

Make this change for settings3 and useSrc, since they aren't shadowing anything
For the rest of the variables, rename them to have more descriptively different names than just a '

Do you like either or both of these?

For the first 2, sure, happy to move to let.
I reviewed the rest. In 1 case I think the let could be removed without any substantial harm. However, in all the other cases there isn't a good name to rename it to... What's the dislike of pure bind? If you can get a GHC proposal through to make let non-recursive and introduce letrec I'd very happily adopt that in HLint!

My dislike of pure bind is that I think it's less efficient, and also slightly less clear. In particular, because it enters the monadic context twice for no reason. For example, it feels like doing map f . map g instead of map (f . g), x <- f <$> getX; g x instead of x <- getX; g (f x), or I guess most simply, m >>= return instead of just m (this is what it will actually desugar to, modulo pure = return). I'd be more okay with this if I knew GHC had a rewrite rule to make this go away, but I don't think it does. (And as I say that, I realize that this technique will also break ApplicativeDo.)

TIL. In that case, I'll edit this PR to just do point 1 (settings3 and useSrc), and leave the rest as-is.

http://blog.ezyang.com/2011/05/unraveling-the-mystery-of-the-io-monad/ is a good resource for understanding IO under the hood.

Thanks!


Index lifecycle management execution metrics

I already suggested it in #306, but got closed by me before the repo got transferred to prometheus-community. Maybe it could be worth making another one pull request cause I believe I might be not the only one who'll find these metrics useful.
Basically in my daily routine I'd like to monitor ILM execution stats - how many indexes are covered by ILM policies, how many errors I've got, etc. This is a simple representation of my goal I use since 7.3.2, now I'm on 7.11.smth and it still works. Haven't seen any changes to ILM recently so I assume it's compatible with any 7.* and maybe even earlier.
Example of metrics available:
elasticsearch_ilm_index_status{action="rollover",index="foo_2",phase="hot",step="check-rollover-ready"} 1
elasticsearch_ilm_index_status{action="shrink",index="foo_3",phase="warm",step="shrunk-shards-allocated"} 1
elasticsearch_ilm_index_status{action="complete",index="foo_4",phase="warm",step="complete"} 1
elasticsearch_ilm_index_status{action="complete",index="foo_5",phase="hot",step="complete"} 1
elasticsearch_ilm_index_status{action="complete",index="foo_6",phase="new",step="complete"} 1
elasticsearch_ilm_index_status{action="",index="foo_7",phase="",step=""} 0

Numeric values represent if exact index is covered by ILM policy at all (in the example above index foo_7 has no policy attached, other have one). Everything else in tags is just _all/_ilm/explain API result.

Is this not missing labels such as cluster ?

@tgrondier yes, it actually misses them. I have cluster tag in my prometheus environment added by default, so I missed its absence in exporter. Gonna fix soon.

Hi 👋
Any news on this PR?
@mokrinsky you will terminate the work for preparing to merge it?

Also interested if this is going to be picked up & finished off
We've pulled this change into our fork and it does do the job. I think there's room for improvement when it comes to using these metrics for alerting, specifically around actions that can be retried:

The metric does not tell you whether an action can be retried, and if so how many retries have been attempted
When an action is retrying, the Error metric disappears while the action is retried

Both of these factors make it a bit more difficult to alert on. For our case we'd want to alert on:

A failed action that is not retriable
A failed action that is retriable but has failed n number of retries

Not sure exactly what the metrics would look like for this. It's difficult as the ILM explain API itself hides the error state when the action is retrying.


Sticker icon doesn't have eyes

Package

[ ] lucide
[ ] lucide-angular
[ ] lucide-flutter
[ ] lucide-preact
[ ] lucide-react
[ ] lucide-react-native
[ ] lucide-solid
[ ] lucide-svelte
[ ] lucide-vue
[ ] lucide-vue-next
[X] Figma plugin
[ ] source/main
[ ] other/not relevant

Version
0.390.0
Can you reproduce this in the latest version?

[ ] Yes
[ ] No

Browser

[ ] Chrome/Chromium
[ ] Firefox
[ ] Safari
[ ] Edge
[ ] iOS Safari
[ ] Opera
[X] Other/not relevant

Operating system

[X] Windows
[ ] Linux
[ ] macOS
[ ] ChromeOS
[ ] iOS
[ ] Android
[ ] Other/not relevant

Description
When I insert the sticker icon from the Figma plugin, it doesn't include the eye; just the mouth.
Steps to reproduce

Import "lucide/sticker" icon from the Figma plugin.

Checklist

[X] I have searched if someone has submitted a similar issue before and there weren't any. (Please make sure to also search closed issues, as this issue might already have been resolved.)

Hi @Oluwademiladeak, thanks for submitting this bug report, we have now resolved this issue, and the fix will be live in v0.391.0 hopefully in a couple of minutes.


[Feature Request] Remove ZFS ARC from Total Memory Usage

Great project!  I was looking for a lightweight replacement for Zabbix for home.  I thought I'd settled on Netdata, but I just found this and it may perfect for my needs.
On a system with ZFS, the total memory usage does not accurately reflect actual usage as it includes the ZFS ARC.   Unfortuanly, Linux doesn't include this in the cache size.    It would be great if ARC could be removed from the Total Memory usage and included in the cache (or as a separate ARC stat).
Thanks!

What does it report currently and what would you expect it to report?
Can you please tell me what free -m reports? And htop / btop if you have those.
Also please paste the output of cat /proc/meminfo if possible, thanks.

Standard Linux cache doesn't include ARC:
$ free -h
               total        used        free      shared  buff/cache   available
Mem:            31Gi        22Gi       4.7Gi        35Mi       4.3Gi       8.6Gi
Swap:           15Gi          0B        15Gi

~15G of the "used" is actually ARC (This can also be obtained from "/proc/spl/kstat/zfs/arcstats"):
$ arcstat
    time  read  miss  miss%  dmis  dm%  pmis  pm%  mmis  mm%  size     c  avail
15:22:01     0     0      0     0    0     0    0     0    0   14G   15G   6.7G

Htop actually handles ARC as expected (7G used ~ 22G-14.8G)
Mem[|||||||||||||||||||||||||||||||||7.06G/31.3G]
/proc/meminfo doesn't account for ARC either (I assume this is where "free" gets it's stats from).
$ cat /proc/meminfo
MemTotal:       32785244 kB
MemFree:         5399700 kB
MemAvailable:    9430060 kB
Buffers:          284584 kB
Cached:          3714452 kB
SwapCached:            0 kB
Active:          1126512 kB
Inactive:        6627064 kB
Active(anon):      18528 kB
Inactive(anon):  3771600 kB
Active(file):    1107984 kB
Inactive(file):  2855464 kB
Unevictable:       97716 kB
Mlocked:           94644 kB
SwapTotal:      16777212 kB
SwapFree:       16777212 kB
Dirty:               236 kB
Writeback:             0 kB
AnonPages:       3852404 kB
Mapped:          1602996 kB
Shmem:             36940 kB
KReclaimable:     530836 kB
Slab:            5436008 kB
SReclaimable:     530836 kB
SUnreclaim:      4905172 kB
KernelStack:       39904 kB
PageTables:        56440 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    33169832 kB
Committed_AS:   25456008 kB
VmallocTotal:<PHONE_NUMBER>7 kB
VmallocUsed:     1237280 kB
VmallocChunk:          0 kB
Percpu:            62592 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
FileHugePages:         0 kB
FilePmdMapped:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:               0 kB
DirectMap4k:     6972652 kB
DirectMap2M:    24420352 kB
DirectMap1G:     2097152 kB

Thanks, I'll look further into it but I have some higher priority items to address first.
I also don't have a machine using ZFS, so I may need someone to help with testing at some point.
Probably adding a separate category for it in the chart would be better than moving it into cache / buff.

I would be happy to help test this when available.

Just added this in 0.5.2. No rush, but please update when you can and let me know if it's coming in properly.

I've checked this with the latest release.  For the summary page and 1 hour stats it looks great:

Unfortunately, all the other time ranges seem to be missing the ZFS ARC (12 hour for example):

Gotcha thanks, must have overlooked that. I'll try to have a patch release out Mon or Tue that fixes it.

This should be fixed now in 0.5.3. Let me know if that's the case.

Verified on the 0.5.3.  I now see the full memory stats being populated on graphs for all time ranges.
Thanks for getting for adding this!

No worries :+1:


Overall tracking issue for breaking changes in 3.0

The first place to look for information on breaking changes is in the breaking changes page maintained in the documentation.
At the issue level, breaking changes are tracked using the breaking-change label.
Breaking change issues break down for 3.0:

Breaking changes currently planned to be fixed for EF Core 3.0

Please note that this is not a guarantee that the issue will be fixed in the 3.0 release. Re-evaluation of the plan throughout the release cycle sometimes results in issues being pushed out to a later release.

Breaking changes fixed for EF Core 3.0 but not yet shipped
Breaking changes fixed in EF Core 3.0-preview4
Breaking changes fixed in EF Core 3.0-preview3
Breaking changes fixed in EF Core 3.0-preview2

Please consider fixing #7089 for breaking changes. This was one of the most controversial features of EF core needs revisiting. Needing to have a nullable boolean (tristate), where only two values are needed at the application level is not ideal.

@popcatalin81 We plan to support the pattern shown in #15182. This allows two values to be used at the application level, while still allowing the store-generated value to be used when no value was explicitly set. I believe all other cases are covered by appropriate configuration. (That is, either not configuring a store-generated value, or configuring it only for migrations and not using at update time, possibly coupled with moving the default to the client code.)


fix previous month display on calendar after coming back to form

Details

Fixed Issues

$ https://github.com/Expensify/App/issues/32535
PROPOSAL: https://github.com/Expensify/App/issues/32535#issuecomment-1842276256
Tests

Go to any workspace
Select "Bank account"
Try to set up a bank account until you reach the "Company information" form
Fill the form, on the incorporation field select any 1st of the month date (e.g. December 1st, 2022)
Tap on "Save & continue"
Once you see the "Personal information" page, tap on the arrow to go back
Scroll down to the "Incorporation field" again
Verify that calendar displays the month the user selected

[ ] Verify that no errors appear in the JS console

Offline tests
Same as Tests
QA Steps
Same as Tests

[ ] Verify that no errors appear in the JS console

PR Author Checklist

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

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

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

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

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

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

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

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

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

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

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

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

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native

https://github.com/Expensify/App/assets/97676131/8f3b9efa-6a4b-4514-81cc-e5454842611b

Android: mWeb Chrome

https://github.com/Expensify/App/assets/97676131/6b190183-f326-4a85-a097-2fd3ab1b9431

iOS: Native

https://github.com/Expensify/App/assets/97676131/8d7bf2f8-b6d4-4910-ad80-219205010f2a

iOS: mWeb Safari

https://github.com/Expensify/App/assets/97676131/64bbef46-ecde-40b4-9ec0-59e1008e7174

MacOS: Chrome / Safari

https://github.com/Expensify/App/assets/97676131/c9c37a1c-5dcc-45cb-a291-a35307751108

MacOS: Desktop

https://github.com/Expensify/App/assets/97676131/48b130ba-2b70-4b5d-9a83-216ce043f2b6

Reviewer Checklist

[x] I have verified the author checklist is complete (all boxes are checked off).
[x] I verified the correct issue is linked in the ### Fixed Issues section above
[x] I verified testing steps are clear and they cover the changes made in this PR

[x] I verified the steps for local testing are in the Tests section
[x] I verified the steps for Staging and/or Production testing are in the QA steps section
[x] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[x] I checked that screenshots or videos are included for tests on all platforms
[x] I included screenshots or videos for tests on all platforms
[x] I verified tests pass on all platforms & I tested again on:

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

[x] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
[x] I verified proper code patterns were followed (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

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

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

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

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

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

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

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If the PR modifies the form input styles:

[x] I verified that all the inputs inside a form are aligned with each other.
[x] I added Design label so the design team can review the changes.

[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[x] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Android: Native
https://github.com/Expensify/App/assets/108292595/dd4b364f-1f60-4890-ab12-1787208df70d

Android: mWeb Chrome
https://github.com/Expensify/App/assets/108292595/3dcab905-025a-4cd7-95bf-42f9ee7bb144

iOS: Native
https://github.com/Expensify/App/assets/108292595/c2f575e2-38eb-4eab-a416-bf8cb5a76af0

iOS: mWeb Safari
https://github.com/Expensify/App/assets/108292595/a873cbae-71fd-4d1a-a5f1-a278cba254f6

MacOS: Chrome / Safari
https://github.com/Expensify/App/assets/108292595/0ce684a5-fdca-4c55-8fa3-1aad57726ba6

MacOS: Desktop
https://github.com/Expensify/App/assets/108292595/9025bb1d-8d9f-4d94-a69e-71c62bd56d62

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by https://github.com/puneetlath in version: 1.4.20-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
cancelled 🔪

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/marcaaron in version: 1.4.20-3 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


discussion: difference between show cluster and rw_worker_nodes

dev=> show cluster;
      Addr      |  State  | Parallel Units | Is Streaming | Is Serving | Is Unschedulable
----------------+---------+----------------+--------------+------------+------------------
 <IP_ADDRESS>:5688 | RUNNING | 0, 1, 2, 3     | true         | true       | false
(1 row)

dev=> select * from rw_worker_nodes;
 id |   host    | port |           type           |  state  | parallelism | is_streaming | is_serving | is_unschedulable | rw_version  | system_total_memory_bytes | system_total_cpu_cores |        started_at
----+-----------+------+--------------------------+---------+-------------+--------------+------------+------------------+-------------+---------------------------+------------------------+---------------------------
  0 | <IP_ADDRESS> | 5690 | WORKER_TYPE_META         | RUNNING |           0 |              |            |                  | 1.9.0-alpha |<PHONE_NUMBER>8 |                     10 | 2024-04-30 13:54:42+00:00
  1 | <IP_ADDRESS> | 5688 | WORKER_TYPE_COMPUTE_NODE | RUNNING |           4 | t            | t          | f                | 1.9.0-alpha |<PHONE_NUMBER>8 |                     10 | 2024-04-30 13:54:44+00:00
  2 | <IP_ADDRESS> | 4566 | WORKER_TYPE_FRONTEND     | RUNNING |           0 |              |            |                  | 1.9.0-alpha |<PHONE_NUMBER>8 |                     10 | 2024-04-30 13:54:44+00:00
(3 rows)

It is a bit weird that show cluster does not show the entire cluster.
Users find it counter-intuitive, although it is not a big deal.
Just to confirm if it is intentional.

It was intentional to only expose compute nodes in show cluster command. It's acceptable for me to expose more to make it less counter-intuitive. I will rise a PR to unify it.


bootstrap-vcpkg.bat failed if Windows Kits not in %PROGRAMFILES% path

I've a problem to build vcpkg on Windows 7 with VS2012/2015 and 2017. Executing bootstrap-vcpkg.bat results in:

Could not detect a Windows SDK / TargetPlatformVersion

On my system the "Windows Kits" are not in the %PROGRAMFILES% path, because I've installed much more on my "D:\Program Files..." folder (my C:-SSD runs out of space).
For my personal solution I've added a new PowerShell script for examine the registry, where the "Windows Kits" have a own entry (see HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Kits\Installed Roots).
Also I modfied the getWindowsSDK.ps1 to get these path.
This works for me and build vcpkg.exe successfully!
Please have a look and maybe merge my solution to the repository. It's NOT tested on other Windows versions nor VC installations!!!
getWindowsSDK.ps1 Line 20: $CandidateProgramFiles = $(& $scriptsDir\getProgramFiles32bit.ps1), $(& $scriptsDir\getProgramFilesPlatformBitness.ps1), $(& $scriptsDir\getKitsRootFromRegistry.ps1)
Script 'getKitsRootFromRegistry.ps1':
[CmdletBinding()]
param(
)
$key = "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Kits\Installed Roots"
$kit = (Get-ItemProperty -Path $key -Name "KitsRoot").KitsRoot
if ($kit -ne $null)
{
    $out = (Split-Path (Split-Path $kit -Parent) -Parent)
    if ($out -eq $null)
    {
        throw "Could not find [KitsRoot]"
    }
}
return $out

Same here. Any update about this?


CASMINST-4963 CAN > CHN

Description

Checklist Before Merging

[ ] If I added any command snippets, the steps they belong to follow the prompt conventions (see example).
[ ] If I added a new directory, I also updated .github/CODEOWNERS with the corresponding team in Cray-HPE.
[ ] My commits or Pull-Request Title contain my JIRA information, or I do not have a JIRA.

This is still a draft, but I'm adding the "do not merge" label because I want to review this before we merge it (and have had bad luck with things being merged when I have only commented on this in my feedback but not added the label). This does not imply anything about my feelings as to the quality of the content here -- it just means that I don't know if I will have time to review this before the first time it will be considered for merging.
I will remove the label once it is marked ready for review, I've finished my reviews, and issues identified (if any) are addressed.