CertificateValidationContext crl setting cannot be used in combination with an intermediate CA trust anchor

Title: CertificateValidationContext crl setting cannot be used in combination with an intermediate CA trust anchor
Description:
When configuring a CertificateValidationContext with an intermediate CA in the trusted_ca setting, adding a CRL issued by that intermediate CA causes all certificates issued by that CA to be rejected.
This appears similar to https://github.com/openssl/openssl/issues/5081.
The documentation does state:

Note that if a CRL is provided for any certificate authority in a trust chain, a CRL must be provided for all certificate authorities in that chain.

However, in this scenario a CRL is provided for all certificate authorities in the chain (as the root CA is not part of the trust chain), and even if I include a CRL issued by the root CA, I see the same error.
Repro steps:
Configuration and test files are available in crl-intermediate.tar.gz.

Run Envoy with the provided configuration (also listed below in the Config section):

docker run --rm -it -p 9901:9901 -p 10000:10000 -v .:/certs:ro envoyproxy/envoy:v1.27-latest -c certs/envoy.yaml

Attempt to access the configured route, providing a non-revoked client certificate/key:

$ curl --cacert server.cert.pem --cert client.cert.pem --key client.key.pem https://localhost:10000/
curl: (56) LibreSSL SSL_read: error:1404C418:SSL routines:ST_OK:tlsv1 alert unknown ca, errno 0

Admin and Stats Output:

/stats
/clusters
/routes (this endpoint serves a 404)
/server_info

Config:
This is the same as the envoy-demo.yaml file, but with a TLS transport_socket added to the filter chain:
static_resources:

  listeners:
  - name: listener_0
    address:
      socket_address:
        address: <IP_ADDRESS>
        port_value: 10000
    filter_chains:
    - filters:
      - name: envoy.filters.network.http_connection_manager
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
          stat_prefix: ingress_http
          access_log:
          - name: envoy.access_loggers.stdout
            typed_config:
              "@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StdoutAccessLog
          http_filters:
          - name: envoy.filters.http.router
            typed_config:
              "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
          route_config:
            name: local_route
            virtual_hosts:
            - name: local_service
              domains: ["*"]
              routes:
              - match:
                  prefix: "/"
                route:
                  host_rewrite_literal: www.envoyproxy.io
                  cluster: service_envoyproxy_io
      transport_socket:
        name: envoy.transport_sockets.tls
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.DownstreamTlsContext
          require_client_certificate: true
          common_tls_context:
            tls_certificates:
            - certificate_chain:
                filename: certs/server.cert.pem
              private_key:
                filename: certs/server.key.pem
            validation_context:
              crl:
                filename: certs/intermediate.crl.pem
              trusted_ca:
                filename: certs/intermediate-ca.cert.pem

  clusters:
  - name: service_envoyproxy_io
    type: LOGICAL_DNS
    # Comment out the following line to test on v6 networks
    dns_lookup_family: V4_ONLY
    load_assignment:
      cluster_name: service_envoyproxy_io
      endpoints:
      - lb_endpoints:
        - endpoint:
            address:
              socket_address:
                address: www.envoyproxy.io
                port_value: 443
    transport_socket:
      name: envoy.transport_sockets.tls
      typed_config:
        "@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext
        sni: www.envoyproxy.io

Logs:

[2023-08-22 20:01:30.684][19][debug][conn_handler] [source/extensions/listener_managers/listener_manager/active_tcp_listener.cc:157] [Tags: "ConnectionId":"1"] new connection from <IP_ADDRESS>:48252
[2023-08-22 20:01:30.691][19][debug][connection] [source/extensions/transport_sockets/tls/cert_validator/default_validator.cc:323] verify cert failed: X509_verify_cert: certificate verification error at depth 1: unable to get certificate CRL
[2023-08-22 20:01:30.691][19][debug][connection] [source/extensions/transport_sockets/tls/ssl_socket.cc:373] [Tags: "ConnectionId":"1"] Async cert validation completed
[2023-08-22 20:01:30.691][19][debug][connection] [source/extensions/transport_sockets/tls/ssl_socket.cc:247] [Tags: "ConnectionId":"1"] remote address:<IP_ADDRESS>:48252,TLS error: 268435581:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED
[2023-08-22 20:01:30.691][19][debug][connection] [source/common/network/connection_impl.cc:250] [Tags: "ConnectionId":"1"] closing socket: 0
[2023-08-22 20:01:30.691][19][debug][connection] [source/extensions/transport_sockets/tls/ssl_socket.cc:247] [Tags: "ConnectionId":"1"] remote address:<IP_ADDRESS>:48252,TLS error: 268435581:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED
[2023-08-22 20:01:30.691][19][debug][conn_handler] [source/extensions/listener_managers/listener_manager/active_stream_listener_base.cc:121] [Tags: "ConnectionId":"1"] adding to cleanup list

Call Stack:
n/a

cc: @ggreenway

@ggreenway Thanks for triage. I wanted to work on this issue so started looking into this.
IIUC from code, envoy depends on openssl for this and as mentioned by @kenjenkins - the issue exists in openssl as well xref: https://github.com/openssl/openssl/issues/5081
May you please help guide me on how we could attempt a fix at envoy?

Envoy uses BoringSSL, not OpenSSL. The two are related, but not the same.
I don't have time right now to dig into how to fix this; sorry.

@kanurag94, I think the relevant code within BoringSSL is somewhere around here: https://boringssl.googlesource.com/boringssl/+/ab45f42e8e7340df605f378ee03c4800db2709f3/crypto/x509/x509_vfy.c#795


Move help button in a better position

User was not able to find it and complained about the lack of a help section

Done in commit


Metadata cleanup for V2.0

Reference list of all issues
I am not firm in SQL. Thus here a list of actions for some of the items listed in https://github.com/acdh-oeaw/arche-schema/pull/3#issuecomment-775360599

Property https://vocabs.acdh.oeaw.ac.at/schema#isPartOf with domain https://vocabs.acdh.oeaw.ac.at/schema#PlaceOrPublicationOrRepoObject is used in incompatible classes: https://vocabs.acdh.oeaw.ac.at/schema#DisseminationServiceParameter 6

-> exchange https://vocabs.acdh.oeaw.ac.at/schema#isPartOf with https://vocabs.acdh.oeaw.ac.at/schema#relation (If I understood you right you changed that anyway?)

Property https://vocabs.acdh.oeaw.ac.at/schema#hasDepositor with domain https://vocabs.acdh.oeaw.ac.at/schema#RepoObject is used in incompatible classes: https://vocabs.acdh.oeaw.ac.at/schema#Project 1

-> remove https://vocabs.acdh.oeaw.ac.at/schema#hasDepositor from that project

Resource 30304

too many values (2) for property https://vocabs.acdh.oeaw.ac.at/schema#hasFormat and lang
-> keep "audio/x-wav"

Resource 35808

too many values (4) for property https://vocabs.acdh.oeaw.ac.at/schema#hasExtent and lang en
-> should be "100910000000 tokens, 40159000 documents, 305580000 paragraphs, 667000000 sentences"@en (merge all four values into one, separated by ', '
-> Same applies to acdh:hasExtent for Resources 3619, 36918, 36543 and 38513 (all contain "AMC Austrian Media Corpus" in acdh:hasTitle)

Resource 36543

too many values (2) for property https://vocabs.acdh.oeaw.ac.at/schema#hasFormat and lang
-> keep "text/xml"

More will follow on Monday

Property https://vocabs.acdh.oeaw.ac.at/schema#isPartOf used in incompatible classes: https://vocabs.acdh.oeaw.ac.at/schema#DisseminationServiceParameter

Yes, this is done already, e.g. https://github.com/acdh-oeaw/arche-docker-config/blob/arche/initScripts/dissServices.ttl#L47

remove https://vocabs.acdh.oeaw.ac.at/schema#hasDepositor from that project
Done

So far everything cleaned up, please reopen when new orders come.

For the entities in ARCHE that have rdf:type = https://vocabs.acdh.oeaw.ac.at/schema#Collection and rdf:type = https://vocabs.acdh.oeaw.ac.at/schema#TopCollection the first (Collection) should be removed. Otherwise the biblatex dissemination service won't work properly.

Just for that we need to deploy GUI adjusted to make use of acdh:TopCollection.
As it's already the case on minerva, I dropped acdh:Collection from top collections there but I'm afraid it's still not the case on apollo.

It seems the GUI is also halfway updated on Apollo. E.g. https://arche.acdh.oeaw.ac.at/browser/oeaw_detail/105578 shows up in the root view and only has acdh:hasTopCollection assigned to it.
(I'm a bit confused about the versions in use on our instances)

Fixed on apollo as well after Norbert confirmed GUI on apollo can deal with TopCollections

A few more bulk tasks:

Property https://vocabs.acdh.oeaw.ac.at/schema#hasLifeCycleStatus with domain https://vocabs.acdh.oeaw.ac.at/schema#Container is used in incompatible classes: https://vocabs.acdh.oeaw.ac.at/schema#Resource 1739

-> can be removed from these Resources without any replacement

Property https://vocabs.acdh.oeaw.ac.at/schema#hasCompleteness with domain https://vocabs.acdh.oeaw.ac.at/schema#Collection is used in incompatible classes: https://vocabs.acdh.oeaw.ac.at/schema#Resource 1730

-> can be safely removed for those Resources where the value is 'The resource is finished and the file is final.'

Property https://vocabs.acdh.oeaw.ac.at/schema#hasHosting with domain https://vocabs.acdh.oeaw.ac.at/schema#RepoObject is used in incompatible classes: https://vocabs.acdh.oeaw.ac.at/schema#Publication 59 and https://vocabs.acdh.oeaw.ac.at/schema#Project 1

->  can be removed from these Resources without any replacement

Applied

Property https://vocabs.acdh.oeaw.ac.at/schema#isMetadataFor with domain https://vocabs.acdh.oeaw.ac.at/schema#Metadata is used in resources of incompatible classes:

https://vocabs.acdh.oeaw.ac.at/schema#Resource 4 (39632, 39825, 40033, 48503)

These are all CMDI records for AMC with a wrong class attached. Changing their class to https://vocabs.acdh.oeaw.ac.at/schema#Metadata

I think we can close this, can we?


⚠ Samsung has degraded performance

In 972bc51, Samsung (https://samsung.com) experienced degraded performance:

HTTP code: 200
Response time: 2798 ms

Resolved: Samsung performance has improved in b4086e7.


[feature request] support for multiple authors per feed entry

Hello,
the Atom 1.0 specification allows multiple  nodes per entry and it would be nice if newsboat would become aware of this (currently only the first encountered author node is parsed). In particular:

support aggregation of multiple authors in article lists, so that for example "Author A, Author B, Author C" can be displayed in the author column of a multi-author entry. This could for example be achieved by introducing an 'A' flag for articlelist-format (while 'a' continues to only display the first author)
display all authors on separate lines in article view
take into account all  nodes when filtering per author, i.e. the expression is first matched against all  nodes separately and then aggregated by OR ("positive" matching, i.e. =, =~, # etc.) or AND ("negative" matching, i.e. !=, !~, !#)

Hi! What version of Newsboat are you running?

support aggregation of multiple authors in article lists, so that for example "Author A, Author B, Author C" can be displayed in the author column of a multi-author entry

This has been done in Newsboat 2.20.

display all authors on separate lines in article view

People highlight the article header and rely on the "Author: " prefix, so I'm hesitant to introduce such a change. Do you have an argument for it?

take into account all nodes when filtering per author

Well, we already packed all the authors into the "author" attribute, so the best you can do is use regular expressions instead of equality, something along the lines of (^|, )Author name(, |$) (untested!) Would that be sufficient for your needs?

My apologies, I'm actually on Newsboat 2.21 but my "test" feed was fetched a long time ago with a version before support for multiple authors. So a simple feed refresh made all authors appear (and my problems disappear).
Also, keeping all authors on a single line as currently done is actually much better than adding them on separate lines (each line prepended by "Author: ") .
Sorry again!


Renamed callbacks/base.py to callbacks/callback.py and all other inst…

…ances
What does this PR do?
Fixes #11973
Does your PR introduce any breaking changes? If yes, please list them.
Before submitting

[ ✔] Was this discussed/approved via a GitHub issue? (not for typos and docs)
[ ✔] Did you read the contributor guideline, Pull Request section?
[ ✔] Did you make sure your PR does only one thing, instead of bundling different changes together?
[ ] Did you make sure to update the documentation with your changes? (if necessary)
[ ] Did you write any new necessary tests? (not for typos and docs)
[ ] Did you verify new and existing tests pass locally with your changes?
[ ] Did you list all the breaking changes introduced by this pull request?
[ ] Did you update the CHANGELOG? (not for typos, docs, test updates, or internal minor changes/refactorings)

PR review
Anyone in the community is welcome to review the PR.
Before you start reviewing make sure you have read Review guidelines. In short, see the following bullet-list:

[✔ ] Is this pull request ready for review? (if not, please submit in draft mode)
[ ✔] Check that all items from Before submitting are resolved
[✔ ] Make sure the title is self-explanatory and the description concisely explains the PR
[ ] Add labels and milestones (and optionally projects) to the PR so it can be classified

Did you have fun?
yess
Make sure you had fun coding 🙃

Hi @PushanAgrawal are you planning on finishing this PR?

Closing for https://github.com/PyTorchLightning/pytorch-lightning/issues/11973#issuecomment-1116903756.


Allow vanilla serialisation/deserialisation of discriminated unions

Fixes #130, #131

Current handling requires that subclasses of type annotated with discriminated_union_of_subclasses are Pydantic dataclasses, which I will add to the docstring.
Types that want to have their schema updated when a new instance of a class decorated with discriminated_union_of_subclasses must also either be Pydantic dataclasses or BaseModels.
The FastAPI schema for the routes into the service does not update when a new subclass is created, nor do any types that refer to types that refer to a discriminated union.
If Pydantic exposed some way of propagating that a schema that is used in the schema of a model has updated, so the schema of the model must also update, then _TaggedUnion could remove all handling of references and just rebuild_dataclass(self._baseclass)

I've made an issue for that last part, but I don't think it will gain much traction as I think creating runtime models often goes against the purpose of validation
https://github.com/pydantic/pydantic/issues/10091


Allow ATA owner to be off the curve

I have been working on an integration that allows a program to accept payment using Solana Pay.
When getting the payer and recipient ATA, Solana Pay SDK uses the default value for allowOwnerOffCurve which happens to be false. This makes it a bit harder if one wanted to integrate Solana Pay with a program, e.g. when a PDA is the owner of the recipient account. Is there any reason not to change the default behavior to allow Token owners off the curve?
I believe an existing workaround is to have an owner on the curve and use the Approve instruction and delegate the full amount to the PDA. It's a bit clumsy though.

Sending tokens to programs isn't a design goal of Solana Pay transfer requests. More importantly, changing the createTransaction function in the SDK isn't going to change how wallets that support Solana Pay actually create transactions from the URL, so I'm afraid this PR won't do anything.
However, you can accomplish this (and any other kind of custom transaction) with transaction requests. See #77 and #117 which are going to be merged within a few days, and are already supported in Phantom, Solflare, and Glow (in beta/TestFlight pending app store review).


[move-prover] Enforce update invariants for mutable-ref parameters of public functions

This enforces update (and pack/unpack) invariants for mutable ref parameters of a public function on exit. To make this happen, on entry to the public function we save the before-value behind the reference and compare it with the after-value on exit. As with borrowing, this mechanism is extended to pack/unpack. Most of the code is similar with lifetime based invariant enforcement, only that the scope of the mutation is now shortened to execution of the function. This treatment is logically consistent because as long as the mut ref is passed around outside of the module, it can't be mutated unless calling a public function of the module again.
The treatment of calling public functions from local functions isn't yet totally clear and left out in this PR.
A test case which pretty much resembles the MarketCap use case has been added as mut_ref_accross_modules.move.
Motivation
Global specifications.
Have you read the Contributing Guidelines on pull requests?
Yes
Test Plan
New test.
Related PRs
NA

@bors-libra r=shazqadeer

:pushpin: Commit 5e52df0 has been approved by shazqadeer

:hourglass: Testing commit 5e52df044a98659d94843505a844dc673171d057 with merge d85ded58835bd45de444654e531b5e820fd20b09...

:broken_heart: Test failed - checks-circle_commit_workflow

@bors-libra retry

:hourglass: Testing commit 5e52df044a98659d94843505a844dc673171d057 with merge 5a3b7e50bfa2cd08e1541e481d64d98f0967fa3a...

:sunny: Test successful - checks-actions_land_blocking_test, checks-circle_commit_workflow
Approved by: shazqadeer
Pushing 5a3b7e50bfa2cd08e1541e481d64d98f0967fa3a to master...


⚠ Bofrost.fr has degraded performance

In a364681, Bofrost.fr (https://www.bofrost.fr) experienced degraded performance:

HTTP code: 200
Response time: 1626 ms

Resolved: Bofrost.fr performance has improved in 2b24081 after 20 minutes.


[WIP] Enable gravity-site service configuration through ClusterConfiguration resource

Description

This PR enables the configuration of gravity-site service through the ClusterConfiguration resource.
Type of change

New feature (non-breaking change which adds functionality)

Linked tickets and other PRs

Refs https://github.com/gravitational/gravity/issues/1931

TODOs

[ ] Self-review the change
[ ] Write tests
[ ] Perform manual testing
[ ] Write documentation
[ ] Address review feedback

Testing done

Default gravity-site config:
[vagrant@node-1 ~]$ sudo kubectl describe svc gravity-site -n kube-system
Name:                     gravity-site
Namespace:                kube-system
Labels:                   app=gravity-site
Annotations:              service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: 3600
                          service.beta.kubernetes.op/aws-load-balancer-internal: <IP_ADDRESS>/0
Selector:                 app=gravity-site
Type:                     LoadBalancer
IP:                       <IP_ADDRESS>
Port:                     web  3009/TCP
TargetPort:               3009/TCP
NodePort:                 web  32009/TCP
Endpoints:                <IP_ADDRESS>:3009
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

cluster-config.yaml
kind: ClusterConfiguration
version: v1
spec:
  global:
    featureGates:
      AllAlpha: true
  gravityControllerService:
    type: NodePort
    annotations:
      "cloud.google.com/load-balancer-type": "Internal"
      "service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout": "4000"

Verify gravity-site service configuration is updated when updating cluster configuration
Verify gravity-site service configuration is updated on install
Verify gravity-site service configuration is updated on upgrade

Closing this as it is no longer a priority.


Pin fab.

Add the property to the button does not react to the move list

Just don't attach your button to a list, there is no need to add an extra property.

Was the need to dynamically pin button and then release.


Topbar menu includes links for all past versions of a crate

Steps to reproduce:

Visit https://docs.rs/libc/0.2.139/libc/constant.ABMON_5.html
Open the crate menu
Look at the "VERSIONS" section

Expected result:
It contains a handful of recent versions, or the latest version in each major version sequence.
Actual result:
It contains all of the past versions! This results in this page being 101kB in size.

A solution about this could to get this list only when the menu is opened and make an endpoint on the server to query it. What do you think about this approach?

I like that idea but for a different reason: it would mean we could set a Last-Modified header on the page based on its build dates, since the versions list would no longer be changing based on other versions being released.

Oh well, if both back-end and front-end gets an advantage out of it, I guess it's a good idea. :laughing:

Consider how the UI is actually designed, with the list of versions inside a scrolling sub-panel in the mega dropdown. Does anyone actually want to scroll through hundreds of versions in that tiny little window? Or would you rather get to use your whole screen for it?

I'm actually not sure to understand what you mean there. Do you suggest actually putting the version numbers into a real dropdown instead with a button "go to this version"?

It requires shipping the JavaScript to actually populate the list. That's probably smaller than the list of libc versions, but most crates aren't libc. JS-based lazy loading is a pessimization on crates with only a few versions.

We could have a threshold like "if we have less than X versions, then we directly render the versions into the HTML, otherwise we include the script to load them". The JS itself would be pretty small since it only requires to be triggered on a given even, send an AJAX query and then populate the list.

We could move the "platforms" dropdown into the crate dropdown, freeing up some space for a standalone "versions" dropdown.
As an FYI / addition: the "docs.rs crate page" also has a list of versions (in the sidebar) and it has the same problem: https://docs.rs/crate/libc/latest

Though putting the version numbers into a real dropdown sounds like a good idea, yeah. The important idea that I was trying to get across is that the current UX is inadequate for large numbers of versions, regardless of how good the implementation is.

Seems like everyone agrees on that. :)

Sure, but that's probably not worth the extra complexity, and doesn't help with the Last-Modified HTTP header implementation. My version doesn't help either, though.

Last-Modified HTTP header implementation is just the last time the crate was updated, not really difficult to find nor to implement considering we have this information. Still more than what we currently have though indeed.

We could move the "platforms" dropdown into the crate dropdown, freeing up some space for a standalone "versions" dropdown.

Do we have statistics of usage of specific platform versus specific version? I think it'd be helpful to have these numbers before modifying things.

As an FYI / addition: the "docs.rs crate page" also has a list of versions (in the sidebar) and it has the same problem: https://docs.rs/crate/libc/latest

A dropdown to fix them all. :D

I believe depending on the motivation for this change we could have different solutions.
Is the motivation page-size? Than making the dropdown async would help. Though seeing that we will cache the pages in the CDN + gzip compression, the difference is probably quite small.
Or is it UX? Then it probably boils down to: which versions does a user typically switch to? only between major/minor, and the latest patch is good enough? Or between the most recent patch releases? Here we don't have any data (yet).

We could move the "platforms" dropdown into the crate dropdown, freeing up some space for a standalone "versions" dropdown.

Do we have statistics of usage of specific platform versus specific version? I think it'd be helpful to have these numbers before modifying things.

I like that idea but for a different reason: it would mean we could set a Last-Modified header on the page based on its build dates, since the versions list would no longer be changing based on other versions being released.

Since we can also have yanks or crate/release-deletes, IMO this is not 100% true. The CDN invalidations only help with invalidating the pages in the case of caching the pages in the CDN, and not with the automatic last-modified based caching in the browser ( from a discussion in #1560).
some data:
there are 363 crates with more than 100 releases.
top 20, releases per crate:
 air-interpreter-wasm           |  1199
 debugzzzone                    |   830
 astrolab-smart-coffee-types    |   810
 rustc-ap-rustc_data_structures |   714
 rustc-ap-rustc_errors          |   706
 rustc-ap-serialize             |   659
 myutil                         |   644
 swc_ecmascript                 |   636
 rustc-ap-syntax_pos            |   617
 sctpx                          |   615
 rustc-ap-syntax                |   606
 rustc-ap-rustc_target          |   593
 swc_bundler                    |   536
 rustc-ap-arena                 |   521
 rustc-ap-rustc_cratesio_shim   |   517
 indy                           |   503
 indy-sys                       |   493
 swc_core                       |   480
 swc_ecma_transforms            |   475
 advent-of-code                 |   461

( about the visited pplatform/version graphs: this only shows us the amount of visited, not who used which dropdown or access method to get there)

The platform and the version are visible in the URL (although not that easy to parse I suppose in this case). I hoped that we had information about the number of URLs targeting a specific platform and URLs targeting a specific version.

we currently don't have that specific information collected, and we don't have request logs yet where we could parse it.

Ah that's too bad. Is it worth adding you think?

number of URLs targeting a specific platform and URLs targeting a specific version.
Is it worth adding you think?

I think not. It would not help decide on the appropriate UI change here. The question is: "how often do people navigate between versions of a crate's documentation?" That's different from "how often do people load a non-latest version of a crate's documentation?" The latter in particular is affected by search engines directing people to specific versions, and blog posts and other web pages linking directly to specific versions.

I like that idea (lazy-loading version list) but for a different reason: it would mean we could set a Last-Modified header on the page based on its build dates, since the versions list would no longer be changing based on other versions being released.

Since we can also have yanks or crate/release-deletes, IMO this is not 100% true. The CDN invalidations only help with invalidating the pages in the case of caching the pages in the CDN, and not with the automatic last-modified based caching in the browser ( from a discussion in https://github.com/rust-lang/docs.rs/issues/1560).

Yanks, crate deletes, and release deletes all affect two things:

the versions list.
the warning icon that says "this is not the latest version."

If we make the versions list not a part of the page, we could also tweak the warning icon code to be lazy-loaded via a separate (non-cacheable, non-blocking) request.

We now have lazy loading which helps with performance, but not yet with the UX part.
When we would think about limiting the versions we show in this dropdown, which would be the best choices?
The last X patch-versions?
or something semver-based? (the latest patch version for the last X minor versions?)

I thought about grouping versions into a collapsible section by bigger version number. Not sure if it'd be helpful or not though...

How about time-based? The 10 most recently published versions, with a "see all" link at the bottom that goes to the crate details page?
For that matter, the crate details page displays versions in a small box that gets cramped with many versions. Perhaps there should be a dedicated tab for displaying the list of versions? That would also allow room for additional details on a per-version basis, similar to how the crates.io versions tab works. For instance, we might want to show the publication date, plus fully written-out text for "documentation failed to build" or "this version was yanked."


[HOLD] [$1000] "Get secure link"(Personal information Step 3 of 5) page's data is disappeared when resize the browser

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

Action Performed:

Open website
Click to Avatar (settings) > Workspaces > Any Workspace > Cards > Connect Bank Account > Connect manually > Reach 3rd step (Passport & Driver's License) > Select Passport or Driver License >  Get Secure Link btn
Resize the browser

Expected Result:
"Get secure link"(Personal information Step 3 of 5) page's data shouldn't be disappeared when resize the browser
Actual Result:
"Get secure link"(Personal information Step 3 of 5) page's data is disappeared when resize the browser
Workaround:
Can the user still use Expensify without this being fixed? Have you informed them of the workaround?
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android / native
[ ] Android / Chrome
[ ] iOS / native
[ ] iOS / Safari
[x] MacOS / Chrome / Safari
[ ] MacOS / Desktop

Version Number: 1.3.36-2
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
screen-capture (3).webm
https://github.com/Expensify/App/assets/43996225/3511ba7a-e2a0-4649-9894-928e8f12adae
Expensify/Expensify Issue URL:
Issue reported by: @muxriddinmuqimov77
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1688382201123319
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~0189835f2cbc119f38
Upwork Job ID:<PHONE_NUMBER>289750528
Last Price Increase: 2023-07-04

I suspect this is related to #20404. I've seen other bugs with similar behavior put on hold to see if fixing the underlying bug will resolve all of these.

Proposal
Please re-state the problem that we are trying to solve in this issue.
There are two issues here:

Onfido page is reloaded when the window resized
The embedded Onfido page is hidden after resized with a width under 600px

What is the root cause of that problem?

StackNavigator change isSmallScreenWidth prop that can cause the component re-mounted. A better explanation can be found here.
We customize onfido inner container height with a percentage to avoid cut-off here

https://github.com/Expensify/App/blob/15e547e3bceeb7bfe693f78fc8b90fdc28b1b32f/src/components/Onfido/index.css#L21-L24
I don't know why it's not hidden when we specify the height with px instead of %
What changes do you think we should make in order to solve the problem?
For the first issue, I think we should wait for this discussion result.
If we can separate the issue, then I can provide a solution for the second issue.
We can solve the second issue by adding flex-grow:1 to the onfido container.
the flexGrow1 property can be put directly into this div
https://github.com/Expensify/App/blob/15e547e3bceeb7bfe693f78fc8b90fdc28b1b32f/src/components/Onfido/BaseOnfidoWeb.js#L127
we can directly set style there or add and extract containerStyle props there if required
or we can also add it to the index.css.
#onfido-mount{
    flex-grow: 1;
}

What alternative solutions did you explore? (Optional)
We can set the height percentage as pixel here.

Proposal
Please re-state the problem that we are trying to solve in this issue.
Get secure link"(Personal information Step 3 of 5) page's data is disappeared when resize the browser
What is the root cause of that problem?
Interpretation of mobile width. In index.css we're making modal height 92% for mobile which is having media query for max-width: 600px but onfido uses media query of max-width: 479px if we resize the window to any size in between these width ranges we don't see the action buttons from onfido.
What changes do you think we should make in order to solve the problem?

We should follow the same media query onfido is following. Main reason for adding this height: 92% is to override the onfido making height: 100% but it only happening below screensize of 479px. To match with the same we should use same media query as onfido does.
https://github.com/Expensify/App/blob/41eb9ba94b7540e70b4a700cda98bbe7f586bdcf/src/components/Onfido/index.css#L19 We need to update the media query to max-width: 479px in this file.

What alternative solutions did you explore? (Optional)
NA

@parasharrajat where's the conversation heading, can you update here? Will put on hold for now!

Nice, so hold still applies, yes?

Still on hold

Still on hold! Moving to weekly

Hold - @parasharrajat any eta on when we can remove the hold?

on hold

on hold

on hold


[Bug]In Application Page->user is able to keep the Display name empty

Description
[What happened ] In Application Page->When user is able to keep the Display name empty
Steps to reproduce the behaviour:
1.In the application page
2.Click on User Name on left corner-
3.Click on edit Profile
4.Delete the  Display name
5.Click on Profile text
6.Verify the display of username displayed
expected result:
In Application Page->When user is should not be allowed to keep Display name empty
Actual Result:
In Application Page->When user is able to keep the Display name empty

Important Details
Version: Cloud
OS: Windows
Browser Chrome
Environment Release

@RakshaKShetty doesn't seem like there's any dangerous impact so lowering priority

I'd like to work on this.

@TheRakeshPurohit This issue has been fixed as part of another issue you can pick up some other issues to work on using good first label.


(feature) Ability to skip logging health end-points

Requirements
What
It would be great to have a configuration that will let us disable logging for the health check endpoints. I deployed the relay proxy in k8s, and as an org we generally disable logging for health check end-points.
I can help implement this.

@nimeshsubramanianv2 I agree with you that we don't want to log on those endpoints because it can be super noisy.
I think actually that it should be default behavior and only log if we are running the relay proxy in debug mode.
debug mode is when in the configuration of the relay proxy the field debug is set to true.
If you want to work on this feel free to open a PR, and please ping me (here or in slack) if you need any help.

Thank you, I'll try and get you a PR soon. I just wanted to run it by you first before I went about implementing it.

@nimeshsubramanianv2 will you work on it?
If not I can try to do it soon.

@nimeshsubramanianv2 It was a bit more work than I was expecting, but I have opened a PR #790.
If you want to have a look at the PR.
It will be released in the next version.


Declaring a var with interface type causes typescript to assume value can be undefined

TypeScript Version:  3.2.0-dev.201xxxxx
Done
Search Terms:
declare variable interface undefined
Code
interface ifc {
    a?:number[]
    b?:string
}

let x : ifc = {a:[1]};
//x.a = [1];        // no error if this line is uncommented
x.a.push(2);        // <<<<<<< TS2532: Object is possibly 'undefined'.
x.b = 'aaa';

Expected behavior:
No error with strictNullChecks
Actual behavior:
TS2532: Object is possibly 'undefined'.
Playground Link:
Enable strictNullChecks in options
http://www.typescriptlang.org/play/#src=interface ifc {
    a%3F%3Anumber[]
    b%3F%3Astring
}

let x %3A ifc %3D {a%3A[1]}%3B
%2F%2Fx.a %3D [1]%3B        %2F%2F no error if this line is uncommented
x.a.push(2)%3B        %2F%2F <<<<<<< TS2532%3A Object is possibly 'undefined'.
x.b %3D 'aaa'%3B

Duplicate #20219


Sync patients to user

Issue: https://github.com/resolvetosavelives/redapp/issues/16

[x] first_time: true should return records from beginning of time
[x] use latest_record_timestamp from request to compute records to send
[x] update patient's latest_record_timestamp when it's address or phone_number is updated
[x] send latest_record_timestamp with the response
[x] accept number_of_records as "batch size" from the request, send only those many records
[x] add API documentation
[x] setup config (dotenv?)
[x] test push + pull over http
[x] document caveats of design choices: sequencing using timestamps

Things to do/refactor [not in this PR]:

use form-object pattern to validate and process patient sync requests
rename updated_at and created_at for all entities within backend
we need to store age, and age_updated_at, to compute the current age.
patient_phone_numbers should be one to many, not many to many
merge the colony and village fields in address

@timcheadle how would you prefer to do configs, normally? Would you prefer we use dotenv? We have a default_batch_size we need to define somewhere. Technically, this is a constant that can be changed for an environment.

@ssrihari dotenv for sure. Usually I like to set up a .env.development that's checked into the repo and use .env.production for production. We'll make sure that .env and .env.production are in .gitignore

@timcheadle this PR is ready for review and merge.

Hey @timcheadle, we're building the form-object pattern changes in another branch, but that work would conflict with the other PRs that depend on this PR. I guess this is still a bit early in the project to expect PRs to be independent.
We'll still address any comments on master or in another PR.
-- Govind and Srihari


for where predicate assertion

Fixes #ISSUSE_ID.
Changes proposed in this pull request:

Pull Request Test Coverage Report for Build 286

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.007%) to 65.005%

Totals

Change from base Build 309:
0.007%

Covered Lines:
9247

Relevant Lines:
14225

💛  - Coveralls


ARTEMIS-2104 Added several tests in artemis-cli//MessageSerializerTest

Hello!
I wrote some tests in MessageSerializerTest file, please review it.
Added new cases:

export from anycast queue, then import to multicast topic where number of queues > 1
export from anycast queue, then import to multicast fqqn where number of queues > 1
export from multicast topic, then import to anycast queue (both address)
export from anycast queue, then import to multicast topic (both address)

Thank you!

a PR is not really a good place to ask questions.. is this supposed to show a bug.. or just help you understand it?

Can this be merged now?


Do conn_release_items when a TRANSMIT_HARD_ERROR occurs in the UDP protocol

In the UDP protocol, when an error other than EAGAIN or EWOULDBLOCK occurs during a transmit operation, it is switched to conn_read without any additional handling. I think this could lead to a situation where IO wraps and any half-uploaded items are not freed.

Thanks! I'll audit this and merge but it could take a while. If you can somehow add tests to prove the before/after that would speed up the process.


Unable to set and report the status of LPD correctly

Describe the bug
Transmissionic seems unable to set and report the status of LPD correctly, at least in transmission 3.0.
I am using transmission and transmissionic via this docker image.
To Reproduce
Steps to reproduce the behavior:

Go to Network in Server configuration, and toggle Local peer discovery(LPD) option ON, and save it.
Refresh Transmissionic's web page or restart the APP, check LPD option again, it will become OFF.
Check LPD via other remote APP or web, or restart transmission and directly check the settings.json, will find LPD is OFF. (Seems Transmissionic did not enable it correctly?)
Enable LPD by other APP or directly set in settings.json, restart transmission and use Transmissionic to check LPD option.
Transmissionic reports LDP is still OFF, but other APP reports that LDP has enabled.

Platform:

OS: Windows11 (Web), Android 11(Web and APP)
Browser: chrome, edge

https://github.com/6c65726f79/Transmissionic/blob/99b2f4900ef1490b3ae8d592b9c4ba9897f06f91/src/views/ServerConfig.vue#L339
I think I found the problem. A typo caused the problem.

Thanks for pointing this out and correcting it! You're right, there was a typo I hadn't noticed. The new version will be available in the next few weeks.

Fixed in v1.7.1, thank you again for your contribution!


Telemetry experience: Monitor the data we are getting now

What can we do to improve the data quality so we canuse it?

There was a new Beta release to include the errors of the app into AppInsights.
We need to turn this feature into one App and revisit. Suggestion is API meeting

@praveenkuttappan  has turned this on for the Informational meeting :)
We need to keep looking into how to make this information useful

@praveenkuttappan coudl you add the link of the AppInsights instance?


Fix copy / paste behavior when using Firefox or Edge (#51)

I took some time trying to fix the annoying copy / paste behavior observed when using Firefox or Edge browsers. As explained in issue #51, blank lines are inserted in text editors after each pasted line of code, which is pretty annoying.
Based on my understanding, this is due to different behaviors among browsers when copying
text from a multi-column based layout wrapped into a HTML pre element.
After numerous tryouts (notably using CSS tables instead of plain HTML ones), the only solution I found ensuring same copy/paste behavior for all browsers is the following. So instead of wrapping line numbers and code in a single table element, use the following approach instead:

render the lines number in a table with single column
render the lines of code in a div
wrap these in a div and make the table float left
adjust the left margin of the code div once inserted in the dom

With this approach, the annoying copy / paste behavior with Firefox and Edge goes away while obtaining the exact same rendering as before.
The only drawback I see with these changes is that they may break custom user scripts selecting hljs-ln-* element as the html layout has been slightly modified. Nevertheless, I have also improved the way to select line elements and documented it, so custom user scripts will not be difficult to fix.

FYI, you can test the effect of that PR here for instance: https://archive.softwareheritage.org/browse/origin/https://git.videolan.org/git/vlc.git/visit/2019-02-05T01:58:05/content/src/libvlc.c/
I deployed to production today an updated version of that web application I am working on including the proposed fixes.

Hi @anlambert thanks for the hard work!
But after check this PR on my debug samples, I got some side effects, see:

Also, broken line breaks:

Debug samples:
debug_html.zip

Hi @wcoder, thanks for pointing me to your debug examples. Maybe these should be committed somewhere in the repository for testing purposes ?
I have updated this PR fixing some of the reported issues. Turns out that for my tests, the bootstrap stylesheets was loaded. So I did not see that removing some CSS rules was implying side effects when bootstrap was not used. I also fixed some other issues spotted with your examples.
The complete diff of this update can be found below:
diff --git a/src/highlightjs-line-numbers.js b/src/highlightjs-line-numbers.js
index 670bc6e..1aec06a 100644
--- a/src/highlightjs-line-numbers.js
+++ b/src/highlightjs-line-numbers.js
@@ -27,13 +27,15 @@
         var css = d.createElement('style');
         css.type = 'text/css';
         css.innerHTML = format(
-            '.{0} table{float:left}' +
+            '.{0} table{float:left; border-collapse:collapse}' +
             '.{0} table td{padding:0}' +
-            '.{1}:before{content:attr({2})}',
+            '.{1}::before{content:attr({2})}' +
+            '.{3}::before{content: "\\200B"}', // force display of empty lines of code
         [
             TABLE_NAME,
             NUMBER_LINE_NAME,
-            DATA_ATTR_NAME
+            DATA_ATTR_NAME,
+            CODE_BLOCK_NAME
         ]);
         d.getElementsByTagName('head')[0].appendChild(css);
     }
@@ -64,14 +66,16 @@

     function lineNumbersBlock (element, options) {
         if (typeof element !== 'object') return;
-
         async(function () {
             element.innerHTML = lineNumbersInternal(element, options);
             // adjust left margin of code div as line numbers is a float left dom element
-            var codeMargin = element.querySelector('.' + NUMBERS_CONTAINER_NAME).offsetWidth;
-            var codeContainerStyle = 'margin-left:' + codeMargin + 'px';
-            var codeContainer = element.querySelector('.' + CODE_CONTAINER_NAME);
-            codeContainer.style.cssText = codeContainerStyle;
+            var lineNumbersContainer = element.querySelector('.' + NUMBERS_CONTAINER_NAME);
+            if (lineNumbersContainer) {
+              var codeMargin = lineNumbersContainer.offsetWidth;
+              var codeContainerStyle = 'margin-left:' + codeMargin + 'px';
+              var codeContainer = element.querySelector('.' + CODE_CONTAINER_NAME);
+              codeContainer.style.cssText = codeContainerStyle;
+            }
         });
     }

Nevertheless, there is still an issue in responsive mode when the document width is small (with mobile devices for instance). The height of a line number element can end up not synchronized with the one from the wrapped line of code (see images below, first one corresponds to my implementation, second one current release implementation). So this PR still needs some work.

I have just pushed an updated version of that PR fixing the responsive design issue detailed in my previous comment. Corresponding diff compared to last update is the following:
diff --git a/src/highlightjs-line-numbers.js b/src/highlightjs-line-numbers.js
index 1aec06a..dfdff76 100644
--- a/src/highlightjs-line-numbers.js
+++ b/src/highlightjs-line-numbers.js
@@ -13,6 +13,8 @@
         DATA_ATTR_NAME = 'data-line-number',
         BREAK_LINE_REGEXP = /\r\n|\r|\n/g;

+    var resizeHandlerSet = false;
+
     if (w.hljs) {
         w.hljs.initLineNumbersOnLoad = initLineNumbersOnLoad;
         w.hljs.lineNumbersBlock = lineNumbersBlock;
@@ -64,6 +66,15 @@
         }
     }

+    function adjustLineNumbersHeights(element) {
+      var lnNumbers = element.querySelectorAll('.' + NUMBERS_BLOCK_NAME);
+      var lnCode = element.querySelectorAll('.' + CODE_BLOCK_NAME);
+
+      for (var i = 0 ; i < lnNumbers.length; ++i) {
+        lnNumbers[i].style.height = lnCode[i].offsetHeight + 'px';
+      }
+    }
+
     function lineNumbersBlock (element, options) {
         if (typeof element !== 'object') return;
         async(function () {
@@ -75,6 +86,20 @@
               var codeContainerStyle = 'margin-left:' + codeMargin + 'px';
               var codeContainer = element.querySelector('.' + CODE_CONTAINER_NAME);
               codeContainer.style.cssText = codeContainerStyle;
+
+              // adjust each line number cell height to the one of the div containing
+              // the wrapped line of code and set a handler to execute this
+              // operation when the browser window gets resized.
+              adjustLineNumbersHeights(element);
+              if (!resizeHandlerSet) {
+                window.addEventListener('resize', function() {
+                  var hljsLnElts = document.querySelectorAll('.' + TABLE_NAME);
+                  for (var i = 0 ; i < hljsLnElts.length; ++i) {
+                    adjustLineNumbersHeights(hljsLnElts[i]);
+                  }
+                });
+                resizeHandlerSet = true;
+              }
             }
         });
     }

Let me known if you find other issues.

@wcoder , friendly ping to merge this one. I have just updated that PR to match your code formatting style (4 spaces indentation). I do not observe any particular regression after my last updates. If you have any doubts on my changes, you can test them live here: https://archive.softwareheritage.org/ . This is simply the largest public source code archive available so far, so you have some material here ;-)

Hi @anlambert, I'm very appreciated for your help! Fix looks nice.
But, after some playing with my debug HTML page, I saw one issue on firefox:
Height for code line differs height of number line (reproduced only in firefox), screenshot below:

At the same time, Chrome display the page without issues.
After some investigating, I saw this situation:

Height for the code element what we used (offsetHeight) not the equal real height of the rendered element. So, we accumulate an error at the sum.
Why it works fine for softwareheritage.org? I think because you have font-size or anything else sizes for code section.
When I have a simple page, to fix this issue, I have to declare additional style:
.hljs-ln-code,
.hljs-ln-numbers {
      line-height: 14px;
}

What do you think about this issue?

Hi @wcoder, I think you did not get right my last updates (surely because I pushed force my branch after amending commits). As you can see on that screenshot of my firefox, line heights are correct:

I attach your debug samples (hljsln_debug_samples.zip incuding the modified version of highlightjs-line-numbers, do you still observe the above issue ?

@anlambert the same issue on hljsln_debug_samples.
Firefox 65.0.1
macOS

@wcoder , I managed to reproduce your issue simply by playing with the zoom level for the current browsed page (I am working on Debian by the way).
You were right, the cause of the issue was the line-height CSS property not being consistent
between DOM elements rendering numbers and lines of code. To fix that, I added the following CSS rules in updated js code:
.hljs-ln-code,
.hljs-ln-numbers {
      line-height: 16px;
      line-height: 1rem;
}

Contemporary browsers will use the line-height: 1rem; property while (really) older ones will use line-height: 16px; as a fallback.
I also noticed a small issue by playing with your debug examples regarding the synchronization of line heights between numbers and code after resizing/zooming. In order for this process to work properly, it must be done once the lines of code have been rendered. So to avoid computation issues, I made this extra processing step asynchronous.
Corresponding diff compared to my last update is the following:
diff --git a/src/highlightjs-line-numbers.js b/src/highlightjs-line-numbers.js
index a200c60..3099d5e 100644
--- a/src/highlightjs-line-numbers.js
+++ b/src/highlightjs-line-numbers.js
@@ -29,15 +29,19 @@
         var css = d.createElement('style');
         css.type = 'text/css';
         css.innerHTML = format(
-            '.{0} table{float:left; border-collapse:collapse}' +
-            '.{0} table td{padding:0}' +
-            '.{1}::before{content:attr({2})}' +
-            '.{3}::before{content: "\\200B"}', // force display of empty lines of code
+            '.{0} table {float: left; border-collapse: collapse}' +
+            '.{0} table td {padding: 0}' +
+            '.{1}::before {content: attr({2})}' +
+            // force display of empty lines of code
+            '.{3}::before {content: "\\200B"}' +
+            // ensure consistent line heights in dom elements for numbers and code
+            '.{3},.{4} {line-height: 16px; line-height: 1rem}',
         [
             TABLE_NAME,
             NUMBER_LINE_NAME,
             DATA_ATTR_NAME,
-            CODE_BLOCK_NAME
+            CODE_BLOCK_NAME,
+            NUMBERS_BLOCK_NAME
         ]);
         d.getElementsByTagName('head')[0].appendChild(css);
     }
@@ -90,13 +94,16 @@
                 // adjust each line number cell height to the one of the div containing
                 // the wrapped line of code and set a handler to execute this
                 // operation when the browser window gets resized.
-                adjustLineNumbersHeights(element);
+                // execute this operation asynchronously once the code has beed rendered
+                async(adjustLineNumbersHeights(element));
                 if (!resizeHandlerSet) {
                     window.addEventListener('resize', function() {
-                        var hljsLnElts = document.querySelectorAll('.' + TABLE_NAME);
-                        for (var i = 0 ; i < hljsLnElts.length; ++i) {
-                            adjustLineNumbersHeights(hljsLnElts[i]);
-                        }
+                        async(function() {
+                            var hljsLnElts = document.querySelectorAll('.' + TABLE_NAME);
+                            for (var i = 0 ; i < hljsLnElts.length; ++i) {
+                                adjustLineNumbersHeights(hljsLnElts[i]);
+                            }
+                        });
                     });
                     resizeHandlerSet = true;
                 }

Everything seems to work as fine as before my changes now.

@wocder, as pointed by https://github.com/jkcclemens/paste/issues/108#issuecomment-471328864, there might be a simpler fix to that issue by processing the copied text through the Clipboard API.
However, this API is still in draft state by the W3C. Recent browsers support it while older ones will surely miss support for it. From my point of view, relying on the DOM is better to ensure wider compatibility across all browsers in the wild.
What is your opinion on this ?

@wcoder , I could not resist to test the Clipboard API approach ;-) I ended up with a much better solution than the current one IMHO. I have created #62 showcasing the results. From my point of view, this one
should be closed as the solution is quite too complex and there is still some rare side effects that still show up when resizing the browser window or playing with the zoom level.
What do you think ?

Hi @anlambert, thanks, very appreciate you for the contribution 🎉
I decided to merge your PR with the Clipboard API approach (it is future and Edge will be migrated to Chromium). Also, It will more painless.
I'm going to close this PR, maybe we will come back to it later.


Fix some typos

Found some typos in comments across the code base and fixed them.

Coverage decreased (-0.06%) to 93.717% when pulling 3bb31c84fd04ccde99dafff3ac0ef2567b98ad61 on asherf:lint into d242a31c9254ee3df74caeb99bebda502797f8cc on spulec:master.


Bumping versions for version update (0.1.13).

Platforms Impacted

[x] iOS
[x] macOS

Description of changes

iOS:
-- TableViewCell, PillButtonBar, SideBar and TabBar: Added support for pointer interaction on iPad.
-- TableViewCellFileAccessoryView: allows to set fixed width in order to force alignment when multiple rows have different number of buttons.
-- DrawerController: new configuration property to force the drawer to respect safe area limits.
-- BadgeView: Color updates/fixes to ensure proper minimum contrast ratio
-- CardView: new control added to the library
-- TableViewHeaderFooterView: fixed crash caused by setting selectedTextRange property.
-- Fixes to allow FluentUI consumption in Xcode 12.

mac:
-- Button: added support for combined use of images and title

Verification
Built and launched macOS and iOS demo apps.
Pull request checklist
This PR has considered:

[x] Light and Dark appearances
[ ] VoiceOver and Keyboard Accessibility
[ ] Internationalization and Right to Left layouts
[x] Different resolutions (1x, 2x, 3x)
[x] Size classes and window sizes (iPhone vs iPad, notched devices, multitasking, different window sizes, etc)

Microsoft Reviewers: Open in CodeFlow

Mac demo app?

Mac demo app?

I'll point out the icons here and mention the AppCenter that in the announcements.


[Autocomplete] options are not filtered when you use 'onInputChange' prop on a controlled Autocomplete

[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 😯
When you create a controlled component; using value to set the value and use onInputChange to get the new value, option list is not getting filtered. Options are alway showing the all options.

Expected Behavior 🤔
Expected behaviour is as we write on the input, options below should get filtered as on most of the examples under Autocomplete.

Steps to Reproduce 🕹

Here is the reproduced example of the bug.
Steps:

Create a controlled component using onInputChange and value
Write something on the input
Notice that options are not getting filtered as you write

Tech
Version

Material-UI
4.7.0

Material-UI Lab
v4.0.0-alpha.33

React
v16.12.0

https://github.com/mui-org/material-ui/issues/18492#issuecomment-557672174


[backend] Add Base Image Collections

This PR adds a CRUD for Base Image Collections, which is the starting point to support Base Images and OTA Campaigns.

Pull Request Test Coverage Report for Build c82f14e03ca2d8553e979c391b29fcf8f0eb9d9a-PR-229

0 of 0   changed or added relevant lines in 0 files are covered.
14 unchanged lines in 1 file lost coverage.
Overall coverage increased (+0.5%) to 81.039%

Files with Coverage Reduction
New Missed Lines
%

lib/edgehog_web/schema.ex
14
6.25%

Totals

Change from base Build 224147cfb4f7b60a4c8d88058eeb4ebdee05d25d:
0.5%

Covered Lines:
889

Relevant Lines:
1097

💛  - Coveralls

You may also update seeds.exs to create a new base_image_collection.


Extended precision for CarlsonRF

Also added BigFloat unit test for ellipticF that exercises this change.  Fixes Issue #9.  As shown in the new unit test, comparison with a Wolfram Alpha result computed to 160 digits shows that with setprecision(512) the ellipticF result is accurate to within 1.e-154 absolute error.

Thanks, very nice.
I don't like the argument names xin, yin, zin. Can we use x, y, z and overwrite them here:
(x, y, z, _) = promote(x, y, z, 1.0)

What is promote exactly?

promote returns the variables all "promoted" to a common type.  See discussion and examples here. The final argument (1.0) to promote is to handle the case when the inputs are all integers, which popped up in your unit tests (😄).  We definitely don't want to use the same variables on both sides of the promote call, as this would cause type instability and result in much slower execution time.  If you have some other preferred names for the input variables (or the output variables) I'm happy to oblige.
Note that the main issue was that the original code used the default, zero-argument eps method, which defaults to the machine epsilon appropriate for the Float64 type.  By passing eps a type, one gets the machine epsilon appropriate to a variable of that type.

@simonp0420 I did the changes (xin -> x, etc).

Codecov Report
Base: 84.07% // Head: 84.02% // Decreases project coverage by -0.05% :warning:

Coverage data is based on head (8c00b01) compared to base (a9891f8).
Patch coverage: 100.00% of modified lines in pull request are covered.

Additional details and impacted files
@@            Coverage Diff             @@
##           master      #10      +/-   ##
==========================================
- Coverage   84.07%   84.02%   -0.06%
==========================================
  Files           1        1
  Lines         603      601       -2
==========================================
- Hits          507      505       -2
  Misses         96       96

Impacted Files
Coverage Δ

src/EllipticFunctions.jl
84.02% <100.00%> (-0.06%)
:arrow_down:

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


#86 + disabled prop

Adds the disabled prop to turn off react-resizable without need to rerender a component.

I also implemented this function. #94


Operator failed to deploy helm chart with weird error

Type of question
Seeking help to debug
Question
What did you do?
I'm trying to deploy a helm chart with helm type Operator. When a CustomResource is created, operator failed to deploy the helm chart with unclear exception about the failure.
What did you expect to see?
Some valid information about the exception.
What did you see instead? Under which circumstances?
{     "level":"error",     "ts":1559309818.3805418,     "logger":"helm.controller",     "msg":"Failed to install release",     "namespace":"default",     "name":"swip",     "apiVersion":"charts.helm.k8s.io/v1alpha1",     "kind":"Swip",     "release":"swip-c616bz1xv9rr32l157xj5xj4f",     "error":"failed to roll back failed installation: no release provided: rendering template failed: reflect: Zero(nil)",     "stacktrace":"github.com/operator-framework/operator-sdk/vendor/github.com/go-logr/zapr.(*zapLogger).Errorsrc/github.com/operator-framework/operator-sdk/vendor/github.com/go-logr/zapr/zapr.go:128\ngithub.com/operator-framework/operator-sdk/pkg/helm/controller.HelmOperatorReconciler.Reconcile\n\tsrc/github.com/operator-framework/operator-sdk/pkg/helm/controller/reconcile.go:165\ngithub.com/operator-framework/operator-sdk/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\tsrc/github.com/operator-framework/operator-sdk/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:215\ngithub.com/operator-framework/operator-sdk/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func1\n\tsrc/github.com/operator-framework/operator-sdk/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:158\ngithub.com/operator-framework/operator-sdk/vendor/k8s.io/apimachinery/pkg/util/wait.JitterUntil.func1\n\tsrc/github.com/operator-framework/operator-sdk/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:133\ngithub.com/operator-framework/operator-sdk/vendor/k8s.io/apimachinery/pkg/util/wait.JitterUntil\n\tsrc/github.com/operator-framework/operator-sdk/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:134\ngithub.com/operator-framework/operator-sdk/vendor/k8s.io/apimachinery/pkg/util/wait.Until\n\tsrc/github.com/operator-framework/operator-sdk/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:88" }
Environment

Operator base image:

quay.io/operator-framework/helm-operator:v0.6.0

operator-sdk version:

v0.6.0

Kubernetes version information:

Client Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.4", GitCommit:"c27b913fddd1a6c480c229191a087698aa92f0b1", GitTreeState:"clean", BuildDate:"2019-02-28T13:37:52Z", GoVersion:"go1.11.5", Compiler:"gc", Platform:"linux/amd64"} Server Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.4", GitCommit:"c27b913fddd1a6c480c229191a087698aa92f0b1", GitTreeState:"clean", BuildDate:"2019-02-28T13:30:26Z", GoVersion:"go1.11.5", Compiler:"gc", Platform:"linux/amd64"}

Kubernetes cluster kind:
kube-adm based setup (internal)

Additional context
I tried digging into the issue. Exception is exactly happening at https://github.com/operator-framework/operator-sdk/blob/master/pkg/helm/release/manager.go#L234. It would be helpful if someone can provide a debug build with much more verbose logging.

@adityabyreddy74 Breaking down the error message, we have two errors:

failed to roll back failed installation: no release provided
rendering template failed: reflect: Zero(nil)

The first error is a little bit misleading. The helm-operator will attempt to rollback the installation if it fails. In this case, the installation is failing, and then the rollback is also failing with the error "no release provided". Without a release name, that probably means there's nothing to rollback, so it looks like we could improve that logic.
The second error is what caused the installation failure. rendering template failed: reflect: Zero(nil) is saying that there was an issue rendering the release manifest with the combination of the chart and values provided by the CR. Are you able to run helm template with the same chart and value?

@adityabyreddy74 We improved the log messages for release failures in #1515, which should make the actual errors a bit clearer

@joelanford Thanks Joe.
The other issue was with our helm charts. Gotta dig deep into whats going wrong in there.


ResponseSerializer is actually a deserializer?

I'm sorry if this has been asked before, but the job of the ResponseSerializer and corresponding functions is actually to deserialize the incoming data right? So wouldn't that make the name incorrect?

This is a great question @krummler.
We've been discussing this in our Slack channel and we've decided to leave it as is. It could be both a serializer or deserializer depending on which way you look at it. Given the history of this naming convention spans over 4 years from AFN and AF, we've decided to leave the name as is to avoid any confusion.
Thank you for posing the question. Cheers.


update pycharm instructions

Update Pycharm instructions to run via module name #2535

I ran the pycharm-runconfig.png through https://tinypng.com/ and got the size down to 18KB (-67%)without any noticeable decrease in quality. It's probably for the best to keep images as small as possible.


Add integration tests for Tables: Delete, Get, List, ListSummaries

Please add integration tests for the following APIs:

https://docs.databricks.com/api/workspace/tables/delete
https://docs.databricks.com/api/workspace/tables/get
https://docs.databricks.com/api/workspace/tables/list
https://docs.databricks.com/api/workspace/tables/listsummaries

Duplicate of #483


Fix webpack errors

Local development has become a bit difficult when we migrated to Kolibri 0.16 alpha14, and even more when migrated to alpha15. This is because webpack is showing a overlay with multiple errors on each page reload. So we devs have to close 6 or 7 dialogs each time code changes.
There is no webpack configuration in kolibri-explore-plugin directly. Instead the configuration is picked from kolibri-tools. See WebpackBundleHook in https://kolibri-dev.readthedocs.io/en/develop/backend_architecture/plugins.html?highlight=plugin#example-implementation
We should make sure that the plugin has the same webpack version than Kolibri.

[ ] https://github.com/endlessm/kolibri-explore-plugin/pull/615

Sorry, let's do this again. Now it correctly sets the same versions as Kolibri alpha15: https://github.com/endlessm/kolibri-explore-plugin/pull/619

I guess works, nothing visible broke.


Quest Reward options not working

Quest rewards are not being auto-chosen when the options Sell Price or Item Level are activated (obviously it doesn't work with "disabled" either). I still have to choose manually.

This should be addressed in a382e4f. I'll need to test it though.


[package.json] npm (2.10.1) chokes on package.json when installing the examples

this fixed it:
"sane": "git://github.com/tadeuzagallo/sane#a029f8b04a",
"stacktrace-parser": "git://github.com/frantic/stacktrace-parser#493c5e5638",

Interesting, in a recent commit I changed this to specifically not include the git schema
@chumster - does npm i tadeuzagallo/sane#a029f8b04a work for you?

With latest npm 2.7.5 as well as 1.x

Closing because I didn't hear back from you


[FEAT] Suppress warnings

Is your feature request related to a problem? Please describe.
Non-critical warnings are being passed into my stderr and I don't see a way to suppress them.
Would it be possible to add a CLI flag so only critical errors are outputted?
Describe the solution you'd like
Somehow suppress LOGGER.warning calls when a certain CLI flag is set.
Additional context
N/A

Bingo, -q is indeed in there https://github.com/iBotPeaches/Apktool/blob/master/brut.apktool/apktool-cli/src/main/java/brut/apktool/Main.java#L66
My bad but I couldn't see it in the help/usage 🙃, Thanks!

I felt it was too much text in the usage to repeat verbosity/quiet each time. It hides under the -advance toggle.
➜  ~ apktool -advance
Apktool v2.7.0 - a tool for reengineering Android apk files
with smali v2.5.2-403e9037 and baksmali v2.5.2-403e9037
Copyright 2010 Ryszard Wiśniewski<EMAIL_ADDRESS>Copyright 2010 Connor Tumbleson<EMAIL_ADDRESS>Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0)

usage: apktool [-q|--quiet OR -v|--verbose]
 -advance,--advanced   prints advance information.
 -version,--version    prints the version then exits


Update to latest analyzer (0.27.4-alpha.14) and misc. analysis fixes.

brings in analyzer version (0.27.4-alpha.14) which corresponds to the current Dart SDK (1.18.0-dev.2.0)
updates analysis to use preferred API for embedder URI resolution
adds trampolines to State and StatelessWidget to allow for warning-free within-library @protected access (needed since we closed off access to @protected closures from outside subclasses)
turns off cache dependency tracking for analysis (in DDC this amounted to a 10% speed improvement)

cc @Hixie

So the problem with the trampoline thing here is that it defeats the performance benefit of taking the closures, as I understand it. cc @abarth.

Hmmmm, and the build is red to boot.  Investigating...

Correct.  We should add a trampoline to get the closure rather than to call it.

Note: the trampoline to get the closure should be on the base class (so that it itself is monomorphic)

Thanks for the feedbacks.  I updated the trampolines.  Let me know if I'm on the right track?
cc @abarth
In the meantime, I'll puzzle out why my assertion is tripping on travis.

The private is on the same class as the build method we were pulling before, but that's not the base class. Not sure if that's what @abarth meant or not.

LGTM
This is slightly slower than before, but ok for now.  I think the ideal solution is to fix https://github.com/dart-lang/linter/issues/254 and remove these (and the other) trampolines.

Thanks!  FWIW I bumped up the ask for a protected/strictProtected distinction in https://github.com/dart-lang/linter/issues/254 since this approach is clearly less than ideal.


Confirm a11y for accordion in simple menu

Probably duplicate of #895

Since it's mainly used for one menu item with multiple sub items within a list of single items, it's hard to do this in another way.  The menu as a whole should be tested with focus on a11y at some point to see if we can improve it.


[Minor][Doc] Improve the docs about how to correctly set configurations

What changes were proposed in this pull request?
Spark provides several ways to set configurations, either from configuration file, or from spark-submit command line options, or programmatically through SparkConf class. It may confuses beginners why some configurations set through SparkConf cannot take affect. So here add some docs to address this problems and let beginners know how to correctly set configurations.
How was this patch tested?
N/A

Test build #79273 has started for PR 18552 at commit b24ed6d.

Test build #79273 has finished for PR 18552 at commit b24ed6d.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/79273/
Test PASSed.

@jiangxb1987 @cloud-fan would you please help to review this doc fix, thanks! It just added some words to clarify how to correctly set configurations.

LGTM, merging to master!


When there are multiple values, index the first one instead of failing validation.

Description
When there are multiple values, index the first one instead of failing validation

Add Warning header when there are multiple values for indexed dicom tags
Change GetSingleValueOrDefault to GetFirstValueOrDefault
Update all validations to verify only the first value.

Related issues
Addresses AB#89792
Testing
All tests passed

Looks good - can you add some language to the QIDO portion of the conformance statement and maybe the extended query tag doc as well about only indexing the first value of a single valued data element that incorrectly has multiple values?


Remove pCollection from parameters

Makes no sense to pass a reference to the collection array. Also gives the developer access to a sensitive array and can cause many undesired things. This wasn't much of a feature and it should be removed.

This functionality has been added


Some doc fixes

Update sphinx doc year to 2023
Fix some typos in sphinx doc
Add symbolic links to two jupyter-notebooks examples

Remark:
make html was not completely successful.
I got an error related to use_numpy_matrix.
"WARNING: autodoc: failed to import function 'use_numpy_matrix' from module 'control'; the following exception was raised:"
I guess sphinx uses an old version of control for autodoc? ==> doc/conf.py ==> git describe?
However, I was not able to find the reason.

coverage: 94.627%. first build when pulling 0aefd5a77cd86cd5ad7c7d0d82e9f5f631286c70 on KybernetikJo:some-doc-fixes into bfdfbd566a03f1c8a8a6168311c658bc3e817487 on python-control:main.


Refactor max_connections to max_concurrency

...and some other minor changes

BlobBlock shouldn't have block_id as optional
mypy error in abort_copy
mypy error in append_block

Resolves #7512
Resolves #7507

Can one of the admins verify this patch?

It seems like the test failure is not related to rehydrate request..merging this
https://dev.azure.com/azure-sdk/public/_build/results?buildId=121935&view=ms.vss-test-web.build-test-results-tab&runId=4822112&paneView=debug&resultId=100550


Scrollbar

fixes: #358

This was displaying weirdly because TraceRequiredPanel was returning a Panel and so was AxisRequiredPanel. So there were two panels wrapped in one another.
I refactored this code a little so that AxisRequiredPanel is not needed and instead we can add extra conditions to the TraceRequiredPanel, along with extraEmptyPanel messages.
@nicolaskruchten ready for review

Remind me again under which conditions it's possible to have traces defined but not axes? Just pie charts?

pie, mapbox

💃


VSCode unresponsive for 1-2 seconds when switching between windows

Does this issue occur when all extensions are disabled?: Yes

VS Code Version: 1.85.2, x64.
OS Version: Fedora Linux 39 (Workstation Edition), Wayland, AMD GPU.

Steps to Reproduce:

Open 2 VSCode windows (maximized).
Open the first one, then switch to the second one. It will be unresponsive for 1-2 seconds.

Demo video:
https://github.com/microsoft/vscode/assets/58283675/35b992dd-edf1-4916-8d9c-d5f14684c9f4
Happens only with 2+ VSCode (or 2+ VSCode Insiders) windows. If I'd open a VSCode + VSCode Insiders - it's fine. Switching between different apps (VSCode + Firefox, for example) is also fine.
If I don't maximize windows and keep them in window mode, it's fine:
https://github.com/microsoft/vscode/assets/58283675/31e13b13-e98a-45f1-a774-a8f29ca0efab
What I tried and it didn't help:

Install VSCode Insiders. The same happens with 2 windows of VSCode Insiders, but not if one is VSCode and the other is VSCode Insiders. But it's not optimal because something will still lag with 3+ projects opened.
Disable hardware acceleration.
Disable all extensions.

Can you try to reproduce with our nightly insider builds? You can give our preview releases a try from: https://code.visualstudio.com/insiders/

Thanks for the video, this looks like a window manager or upstream issue to me.

The latest build of VSCode Insider suffers from the same problem.
Version: 1.86.0-insider
Commit: 9c5eabb378c9d18a0f712d1f22fe63df3f933ade
Date: 2024-01-30T03:55:53.004Z
Electron: 27.2.3
ElectronBuildId: 26495564
Chromium: 118.0.5993.159
Node.js: 18.17.1
V8: <IP_ADDRESS>-electron.0
OS: Linux x64 6.6.13-200.fc39.x86_64
https://github.com/microsoft/vscode/assets/58283675/a66ba124-30f2-4476-be4b-ace0911e14ff

Didn't find one. I've tried KDE instead of GNOME DE, and the problem didn't occur there. But I tested it very briefly, so not 100% sure.
For now, I'm waiting for a Fedora 40 to be stable with a new version of GNOME, and I hope it will resolve the problem with a VS Code.

I've upgraded to Fedora 40 (GNOME 46). The issue persists.
Tinkered with it a bit, and found out that VSCode launches in XWayland instead of Wayland. When launching VSCode or VSCode insiders with flags to launch in Wayland (something like code --enable-features=UseOzonePlatform --ozone-platform=wayland --enable-features=WaylandWindowDecorations), lags when switching between windows doesn't appear anymore. But there's no way to lock these options when launching from the terminal (in ArchLinux there is a ~/.config/code-flags.conf file), only to edit the .desktop file.
Another issue is that I can't pin the app in the Dash to Panel when the VSCode launches with the options I've mentioned above, as it treats it as a different application. So the experience is not optional on that front.
Is there any other way to force VSCode to launch in Wayland instead of XWayland consistently from the terminal and desktop launch?

Switched to KDE Plasma 6 (Fedora) instead of GNOME and the issue is gone out of the box.

closing per above comment


Unable to add bendpoints with initbendpoints

Hi
I am unable to add bend points by init bend points. Trying to achieve something like that in the image added:

But now able to achieve. Please help
http://plnkr.co/edit/Ry88ZxN6qt6pkjmkHDxx?p=preview

@kunalganglani you need to specify bendPointPositions as object.
bendPointPositions: [{x:500,y:225}, {x:500,y:675}]

You also did not include jquery which is required by the extension.
Check the demo here: http://plnkr.co/edit/3bZWk3RW877JNOM9PI4U?p=preview

is there a way to add these bend points dynamically, rather than specifying as the edge data,
also please let me know if i can lock the edges, to prevent user from bending the edge.

@kunalganglani @gs-kganglani you can use bendPositionsFunction option.


Allow array as JSON result (The action did not produce a valid JSON response: [])

Environment details:

Bluemix

Steps to reproduce the issue:

Run action

function main(params) {
	return [];
}

Provide the expected results and outputs:
[]

Provide the actual results and outputs:
{
  "error": "The action did not produce a valid JSON response: []"
}

Additional information you deem important:

returning empty {} works fine

function main(params) {
	return {};
}

I ended up with this workaround but it is kind of ugly to put it into every action that is returning JSON from REST API call ...
    if(json.constructor.name === 'Object') {
      resolve(json);
    } else { // openwhisk fails if response in not JSON
      resolve({ 'result' : json});
    }

Actions by definition must return an JSON object - it is incorrect to return anything else.
Your action may appear to return a JSON array (or any legal JSON value) if you use a web action, e.g., to return { body: []} instead.
I don't see us relaxing this restriction otherwise - it's fundamentally part of the action definition (dictionary in, dictionary out) and permits action composition.

OK - it just makes for ugly code to check and convert output from REST API calls inside action (and I already need to check if output is JSON in first place ...)
Example:
function main(parameters) {
 return new Promise(function(resolve, reject) {
var request = require("request");

var options = { method: 'GET',
  url: 'http://api.wunderground.com/api/%7Bkey%7D/conditions/q/%7Bstate%7D/%7Bplace%7D' };

request(options, function (error, response, body) {
  if (error) {
    reject(error);
  } else {
    var json = {};
    try {
      json = JSON.parse(body);
    } catch (e) {
      var len = Math.min(body.length, 10);
      var bodyStr = body.substring(0, len);
      json = { 'msg': bodyStr };
      console.log('body=' + bodyStr);
    }
    if(json.constructor.name === 'Object') {
      resolve(json);
    } else { // openwhisk fails if response in not JSON object {}
      resolve({ 'result' : json});
    }
 }
});

 })
}


[ansible/artifactory] refactored Nginx role (DRY).

PR Checklist
[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]

[x] Title of the PR starts with installer/product name (e.g. [ansible/artifactory])
[ ] CHANGELOG.md updated
[ ] Variables and other changes are documented in the README.md

What this PR does / why we need it:
There were two roles in master that basically did the same thing and duplicated a lot of code:

artifactory_nginx
artifactory_nginx_ssl

I rewrote artifactory_nginx so it behaves just like the other two (which were mutually exclusive in use). Also I added a way to install the Nginx module 1.20 (or newer) from the Yum repo's configured on the machine. This is helpful in on-premises deployments where every proxy whitelist item needs permission from security.
Which issue this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close that issue when PR gets merged): fixes #
Partial fix for #323
Special notes for your reviewer:

@bbaassssiiee Thanks for the PR.

Fix for #323

@bbaassssiiee Thanks for the PR.

Actually this reduces the amount of code to maintain.


Duplicate IResolvers definitions breaks build

Description
Graphqlgen overrides the declaration of IResolvers from the graphql-tools package in the generated graphqlgen.ts file. This causes an error when you try to compose a schema from two packages that both use graphqlgen.
Each package will have a declaration like so:
// @ts-ignore
declare module 'graphql-tools' {
    interface IResolvers extends Resolvers {}
}

Where Resolvers is a unique type generated within the package itself.
Since IResolvers will be defined in both packages, with different definitions, you get the following error at build time:
TSError: ⨯ Unable to compile TypeScript:
src/generated/graphqlgen.ts(8464,15): error TS2320: Interface 'IResolvers' cannot simultaneously extend types 'Resolvers' and 'Resolvers'.
  Named property 'Mutation' of types 'Resolvers' and 'Resolvers' are not identical.
src/generated/graphqlgen.ts(8464,15): error TS2320: Interface 'IResolvers' cannot simultaneously extend types 'Resolvers' and 'Resolvers'.
  Named property 'Query' of types 'Resolvers' and 'Resolvers' are not identical.

Steps to reproduce

Create a graphql service, using graphqlgen
Create a package, also using graphqlgen, that exports an executable schema

This package should be built with declaration files enabled

Import the package into your graphqlservice
Configure your service to mergeSchemas when starting your service
Try to build the service
You should get the error because each package now has a conflicting IResolvers definition

Note, I'm not actually even using these types. Their presence in graphqlgen.ts appears to be enough to cause the error.
Expected results
No error is thrown
Actual results
TSError: ⨯ Unable to compile TypeScript
Versions

graphqlgen: 0.6.0-rc9
OS name and version: OSX 10.14.3

I'm able to work around this by backing up the graphqlgen dependency for one of the two packages involved to a version that doesn't output the graphql-tools declaration.
However, the IResolvers interface is unusable in the main service because the imported package still contains a declaration for it, which is not correct for the service.
It seems like the IResolvers declaration may have been a bit aggressive. What problem is it solving exactly? Is there perhaps another way to accomplish the same thing?

Hey @jbreeden-splunk, the problem it addresses is #15
I don't have time to dive into the issue right now, but will try to loop back tonight.

Thanks for the quick response, @jasonkuhrt
If I've understood correctly, we're trying to allow graphqlgen resolvers to be compatible with graphql-tool's IResolvers interface, so that you can pass them to makeExecutableSchema and the like.
The problem with the chosen approach is that globally swapping the types of a 3rd party package with fundamentally incompatible types is always going to cause problems for larger apps. These apps are often composed of many packages making it impossible for graphqlgen to predict the full context under which the altered types are being used.
IMO a safer approach would simply be to make the types actually compatible. If the only problem is the missing index signature, we could simply add it.
I did see your note in #15:

The any-cast is a cheap workaround. I believe this is less evil than introducing index type into graphqlgen. Even semantically it’s rubberish. Resolvers object is not a black box index!

And I agree with the sentiment regarding the black box, but the fact is it is a black box to graphql-tools, and if you wish to be compatible I think it would be more appropriate to alter your own type definitions, rather than theirs.
If it's that much of a sticking point, I would recommend documenting the module declaration or type assertion workarounds, but not including them in the codegen with no way to disable it.
Hope that's somewhat helpful ¯\_(ツ)_/¯

@jbreeden-splunk thanks for sharing your perspective.
I appreciate your point. In general, it is what I thought and think too.
In practice, I would be interested in seeing a project that needs the unsafe version of IResolvers. Anyways, this issue is not about that.

This causes an error when you try to compose a schema from two packages that both use graphqlgen.

To my knowledge this is a novel use-case. Thanks for bringing it to light. I would like to understand it better.
Is the consuming project of these two packages itself a graphqlgen project?
I believe one solution may be to make it so that by default graphqlgen does not generate its own specification for IResolvers. If a user wants that, they explicitly set in their config, for example:
compatibleIResolvers: yes

Imagining we had this solution for a moment, in your case @jbreeden-splunk, would you enable the option in your project? If not, why?

Is the consuming project of these two packages itself a graphqlgen project?

Yes, it is. Basically I have a monorepo setup like this:
monorepo/
    packages/
        graphql-module
    services/
        graphql

graphql-module contains an executable schema for a portion of our schema, which is consumed by multiple applications, including the graphql service in this monorepo
graphql service contains a builtin executable schema, but also imports other modules and merges the schema before starting the server.

Both of these packages use graphqlgen to generate resolver type definitions, so they both contain the graphql-tools declaration in graphqlgen.ts.

I believe one solution may be to make it so that by default graphqlgen does not generate its own specification for IResolvers

That would work for me. If the option was there, I would probably leave it disabled for all packages and just perform the requisite type assertion when passing the schema to graphql-tools. Even in the root package, my merged resolvers object is not going to conform to the generated Resolvers interface, so I don't think it would be of any use.

That would work for me

Good to know, I think this is a reasonable approach for this project to take presently.
I also believe it should be opt-in, not opt-out, due to the leaky abstraction we both agree it represents.

I would probably leave it disabled for all packages and just perform the requisite type assertion when passing the resolvers to graphql-tools.

👍

Even in the root package

Out of curiosity and trying to understand your use-case better;

Does the root project introduce its own resolvers or its simply a pure merge of the sub-packges?
How does the root project manage its GQL SDL?

I will aim to have a fix for this merged and released by next Sunday.
Pull-requests welcome in the meantime.

Awesome, thanks for the help!

Does the root project introduce its own resolvers or its simply a pure merge of the sub-packages?

It has its own resolvers, in addition to merging in schema from sub-packages.

How does the root project manage its GQL SDL?

Right now it's just one big SDL file. We're looking at switching to resolver-first development with Nexus, but haven't yet.

@jasonkuhrt Just noticed the iresolvers-augmentation field in the docs: https://oss.prisma.io/graphqlgen/01-configuration.html
I tried to disable it, but graphqlgen yells at me saying it's unrecognized:
yarn run v1.13.0
$ graphqlgen
Invalid graphqlgen.yml file
 should NOT have additional properties. additionalProperty: iresolvers-augmentation
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Even though it is definitely present (in some form) in my graphqlgen package:
ack iResolversAugmentationEnabled
types.d.ts
12:    iResolversAugmentationEnabled: boolean;

index.js
108:        iResolversAugmentationEnabled: typeof codeGenArgs.config['iresolvers-augmentation'] === 'boolean'

generators/typescript/generator.js
54:    return "  " + renderHeader(args, { hasPolymorphicObjects: hasPolymorphicObjects }) + "\n\n  " + common_1.renderEnums(args) + "\n\n  " + renderNamespaces(args, interfacesMap, unionsMap, typeToInputTypeAssociation, inputTypesMap) + "\n\n  " + renderResolvers(args) + "\n\n  " + (args.iResolversAugmentationEnabled

It seems it's in there, but not fully implemented. Am I doing something wrong or are the docs just ahead of the actual release?
(Tested on version 0.6.0-rc9)

@jbreeden-splunk 🤦♂ right
I think that error comes from graphqlgen-json-schema?
Its updated though https://github.com/prisma/graphqlgen/search?utf8=✓&q=iresolvers-augmentation&type=
Are you using the latest version of it too (0.6.0-rc8)?

@jasonkuhrt
Hi I checked my schema.json file on graohql-json-schema under node_modules and seems like it doen't include iresolvers-augumentation propery.
{
  "$schema": "http://json-schema.org/draft-06/schema#",
  "title": "JSON schema for graphqlgen.yml files",
  "properties": {
    "language": {
      "type": "string",
      "oneOf": [{ "enum": ["typescript", "flow"] }]
    },
    "schema": {
      "type": "string"
    },
    "context": {
      "type": "string"
    },
    "models": {
      "type": "object",
      "properties": {
        "files": {
          "type": "array",
          "items": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "object",
                "properties": {
                  "path": {
                    "type": "string"
                  },
                  "defaultName": {
                    "type": "string"
                  }
                },
                "required": ["path"]
              }
            ]
          }
        },
        "override": {
          "type": "object",
          "patternProperties": {
            "^[a-zA-Z0-9]*$": {
              "type": "string"
            }
          }
        }
      },
      "additionalProperties": false
    },
    "output": {
      "type": "string",
      "description": "Path to main output file"
    },
    "resolver-scaffolding": {
      "description": "All output fields",
      "type": "object",
      "properties": {
        "output": {
          "type": "string",
          "description": "Path to scaffolded file for missing model definitions"
        },
        "layout": {
          "type": "string",
          "oneOf": [{ "enum": ["file-per-type"] }]
        }
      },
      "required": ["output", "layout"],
      "additionalProperties": false
    }
  },
  "required": ["language", "schema", "models", "output"],
  "additionalProperties": false
}

Version is here.
$ yarn list
...
├─<EMAIL_ADDRESS>│  ├─<EMAIL_ADDRESS>
Maybe graphqlgen-json-schema has not released yet?

Hey @joe-re just fyi this project isn't maintained anymore by me. I am working on nexus oriented tools now.


Git over ssh:// tracking issue

Status update
The following commits: 15c06855aa1116e023a003ca92ba322f4dd10f3e..0acdc2291bb07b0e30211f40c5a21c8f6947cb2a (diff) implement a very basic ssh server that git clients can clone from, but some more work is needed for it to be usable (including checking whether it is using the ssh protocol properly).
Note that git-shell is not present in git-for-windows, and therefore this will not be supported on windows.


With almost every online replay i try to watch it gives followinbg error

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

What's the file's content?

I'll check when I got time

It's not there, so that's the reason it can not be loaded

Any chance you are connected to the test server? Because I can watch any replay just fine.

I'll try again


Intellij

Coverage remained the same at 6.452% when pulling e2f2d2665e7af05032a199ae0835f14e8e6960f5 on intellij into 76e0ad219417df3f462d15c257337f63f10958f3 on master.

Coverage remained the same at 6.452% when pulling dd28053a28e831b359f8a995d24338881d9bb74a on intellij into 76e0ad219417df3f462d15c257337f63f10958f3 on master.

Coverage remained the same at 6.452% when pulling ce7339e9db19da7a36e417551d131a8f237ba630 on intellij into 76e0ad219417df3f462d15c257337f63f10958f3 on master.


Wilder's Moving Average

Hello,
See
https://www.incrediblecharts.com/indicators/wilder_moving_average.php
A number of popular indicators, including Relative Strength Index (RSI), Average True Range (ATR) and Directional Movement were developed by J. Welles Wilder and introduced in his 1978 book: New Concepts in Technical Trading Systems. Users should beware that Wilder does not use the standard exponential moving average formula.
Do we have WilderMA in talipp ? (not to be confused with WeightedMA)
Kind regards
PS: see also https://www.tradingview.com/script/wXtQeoOg/#:~:text=Wilder did not use the,where K %3D1%2FN.

Looking at
https://github.com/nardew/talipp/blob/ed5e0e10c986121b5762d4538649212ec05a9847/talipp/indicators/ATR.py#L58
$$output_{i} = \frac{output_{i-1} \cdot (period - 1) + TR_{i - 1}}{period}$$
with $k = \frac{1}{period}$
we have
$$output_{i} = output_{i-1} \cdot \frac{(period - 1)}{period} + \frac{1}{period} \cdot TR_{i - 1}$$
which is also
$$output_{i} = output_{i-1} \cdot (1 - \frac{1}{period}) + \frac{1}{period} \cdot TR_{i - 1}$$
and so
$$output_{i} = output_{i-1} \cdot (1 - k) + k \cdot TR_{i - 1}$$
So we can say that current talipp implementation at ATR is using Wilder's Moving Average for smoothing true range (which is fine!)
Maybe we could define such a MA in talipp and give user opportunity to use it's own MA for ATR calculation?

Maybe we should have an indicator called simply TrueRange which simply computes True Range of incoming bars and use a smoother as exposed in #146 to build ATR.

This would simplify CHOP code which currently uses ATR(1) but will use instead just TrueRange (because with period=1, k=1 and so $output_i = TR_{i-1}$

Wilder's MA and SMMA seems to be the exact same thing.
This code
https://github.com/nardew/talipp/blob/main/talipp/indicators/ATR.py#L53-L58
and https://github.com/nardew/talipp/blob/main/talipp/indicators/SMMA.py#L34-L40
could probably be refactored to use in ATR calculation SMMA


[Windows] Fix kubectl version in software report

Description
Fix for kubectl version in software report.
Related issue:
https://github.com/actions/virtual-environments/issues/5489
Check list

[x] Related issue / work item is attached
[ ] Tests are written (if applicable)
[ ] Documentation is updated (if applicable)
[ ] Changes are tested and related VM images are successfully generated

/azp run windows2019, windows2022