Migration from vault.pkiSecret.SecretBackend to vault.Mount results in resource replacement

What happened?
Customer wanted to upgrade this vault provider from pre-5.0 to 5.0.0 (or higher). In v5.0.0, it includes v4 of the upstream TF provider which has the vault_pki_secret_backend resource removed in favor of vault_mount. The TF migration guide has an example on how to replace the old resource with the new one:
resource "vault_mount" "pki-example" {
  path        = "pki-example"
  type        = "pki"
  description = "This is an example PKI mount"

  default_lease_ttl_seconds = 3600
  max_lease_ttl_seconds     = 86400
}

Source: https://registry.terraform.io/providers/hashicorp/vault/latest/docs/guides/version_3_upgrade#deprecated-resource
Now, the type property is a new property, which in our case leads to the problem.
Customer updates their Pulumi code from:
pulumi_vault.pkisecret.SecretBackend("test-root-ca", path="pki/root-ca")

to
pulumi_vault.Mount("test-root-ca", path="pki/root-ca", type="pki", opts=ResourceOptions(aliases=["(old urn)"]))

Pulumi wants to replace the resource:
+-vault:index/mount:Mount: (replace)
    [id=(redacted id)]
    [urn=(redacted urn)]
    [provider: (redacted urn]
  + type: "pki"

This is probably due to the type being set as a "new" property, while this is just needed to complete the setup of the migrated resource.
Steps to reproduce

Use a pre-v5 provider to create the old vault.pkiSecret.SecretBackend resource.
Upgrade the provider to V5 or beyond
Update the code and replace the old type with the new type like in the section above
Run pulumi preview to see Pulumi suggest to replace the resource

Expected Behavior
Pulumi should update the type of the resource to vault.Mount in the state and record it is a pki type mount.
Actual Behavior
Because the type is set, and it wasn't set before, this is recorded as a breaking change and Pulumi suggests to replace the Mount resource.
Output of pulumi about
No response
Additional context
No response
Contributing
Vote on this issue by adding a 👍 reaction.
To contribute a fix for this issue, leave a comment (and link to your pull request, if you've opened one already).

Hi @ringods
Sorry for the silence here - we started discussing this in engineering at the end of last week
Paul

@ringods Is this issue still useful or should we close it? It's been in awaiting-feedback for a while, but I'm not sure what we are waiting for.

I have a customer running into this same issue.

After digging into this a bit, the referenced terraform doc does not appear to be saying things are automatically migrated. It's just showing what an analogous Mount resource would look like.
Here are steps that can be used to do the migration:
NOTE: You can do these steps using version 4.6.0 of the provider and then once everything is looking good, you can upgrade to 5.13.0.

Add the retain_on_delete=True resource option to the existing SecretBackend resource.

See: https://www.pulumi.com/docs/concepts/options/retainondelete/

Run pulumi up to get the setting into state.
Add a Mount resource to your code that uses the same variable name and resource name and properties as the original SecretBackend resource.
For that new Mount resource include the import resource option pointing to the path of the original SecretBackend resource.

See: https://www.pulumi.com/docs/concepts/options/import/

Comment out or otherwise remove the original SecretBackend resource from the code.
Run pulumi preview to confirm that although the old resource is going to be deleted (but retained) and a new mount resource created, nothing is being replaced or changed due to the new Mount resource.
Run pulumi up to update the state
Remove the import resource option
Run pulumi up again to update the state

If for some reason your use-case is not compatible with the above sequence you can use these steps instead.
Of course, since it includes modifying the state file directly, care must be taken.

Starting with the current stack containing the SecretBackend resource export the stack state (e.g. pulumi stack export --file stack.json)
Find the SecretBackend resource(s) and ADD "type": "pki" to the "outputs" section of the resource(s)
import the modified state (e.g. pulumi stack import --file stack.json)
Now modify the Pulumi program such that you:

Add a Mount resource that aliases the URN for the SecretBackend resource.

USE the same variable and resource name as the old SecretBackend resource so downstream references still work.

You can find the URN in Pulumi Cloud or in the state file.
For example:

mount_pkisecret = vault.Mount("pkiMountExample",
   default_lease_ttl_seconds=43200,
   description="My PKI Backend",
   max_lease_ttl_seconds=43200,
   path="pki2",
   type="pki",
   opts=pulumi.ResourceOptions(
       aliases=["urn:pulumi:STACKNAME::PROJECTNAME::vault:pkiSecret/secretBackend:SecretBackend::pkiMountExample"],
   )
)

Comment out or otherwise remove the old SecretBackend resource
Run pulumi preview to validate that the SecretBackend and/or Mount resources are not replaced.
Run pulumi up to update state with the change.
Remove the alias
Run pulumi up


Implement CoerceUnsized for Unique

It's implemented for raw pointers, references, boxes, Rc, Arc, NonZero, and Shared. Is there a specific reason it can't be implemented for Unique?
As it stands, you can't actually reimplement something like Box the same way the standard library does. Somehow, even though a Box is just a wrapper around Unique, it can be coerced to an unsized type due to some compiler magic.
The following is paraphrased from the Box source, but does not compile:
use std::marker::Unsize;
use std::ops::CoerceUnsized;
use std::ptr::Unique;

pub struct MyBox<T: ?Sized>(Unique<T>);

impl<T: ?Sized+Unsize<U>, U: ?Sized> CoerceUnsized<MyBox<U>> for MyBox<T> {}

fn main() { }

This should be easy to implement now. I think it was previously blocked on #1234.


Going to /settings in an archived room causes console error

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:

Go to an archived room
write /settings in the url bar
Notice the console error

Expected Result:
The user should not be able to go the settings and there should be no console error
Actual Result:
The user is able to open settings and there is a console error
Workaround:
unknown
Platforms:

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

[ ] MacOS / Chrome / Safari

Version Number: 1.2.65-0
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:
https://user-images.githubusercontent.com/43996225/217066470-d25b6e68-2570-41f0-aee5-335d307db61e.mov
https://user-images.githubusercontent.com/43996225/217066796-094da1a1-4d18-4837-84a9-75e4e70f8a7f.mp4
Expensify/Expensify Issue URL:
Issue reported by: @esh-g
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1675597625635249
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01f69b8cb1f43b51d2
Upwork Job ID:<PHONE_NUMBER>435490816
Last Price Increase: 2023-02-06

Triggered auto assignment to @tjferriss (Bug), see https://stackoverflow.com/c/expensify/questions/14418 for more details.

Bug0 Triage Checklist (Main S/O)

[ ] This "bug" occurs on a supported platform (ensure Platforms in OP are ✅)
[ ] This bug is not a duplicate report (check E/App issues and #expensify-bugs)

If it is, comment with a link to the original report, close the issue and add any novel details to the original issue instead

[ ] This bug is reproducible using the reproduction steps in the OP. S/O

If the reproduction steps are clear and you're unable to reproduce the bug, check with the reporter and QA first, then close the issue.
If the reproduction steps aren't clear and you determine the correct steps, please update the OP.

[ ] This issue is filled out as thoroughly and clearly as possible

Pay special attention to the title, results, platforms where the bug occurs, and if the bug happens on staging/production.

[ ] I have reviewed and subscribed to the linked Slack conversation to ensure Slack/Github stay in sync

I don't think this has anything to do with the specific steps executed here. But fixing it will need to be Internal cause it's related to the content security policy. It's happening on production too. I can look into it.

Job added to Upwork: https://www.upwork.com/jobs/~01f69b8cb1f43b51d2

Triggered auto assignment to Contributor Plus for review of internal employee PR - @thesahindia (Internal)

Sorry I am going to remove @thesahindia from this issue. I don't think there will be any changes to review.

Happening because of the inline script here:
<script defer="defer">"use strict";(self.webpackChunknew_expensify=self.webpackChunknew_expensify||[]).push([[759],{56031:(e,t,n)=>{n.d(t,{Z:()=>r});const r={dark:"#0b1b34",black:"#000000",blue:"#0185ff",blueHover:"#B0D9FF",floralwhite:"#fffaf0",orange:"#FF7101",pink:"#F68DFE",green:"#03D47C",greenHover:"#00C271",greenPressed:"#35DD96",greenDisabled:"80E9BD",red:"#F25730",redHover:"#DE4822",redPressed:"#F57959",redDisabled:"#F8AA97",yellow:"#FED607",transparent:"transparent",greenAppBackground:"#061B09",greenHighlightBackground:"#07271F",greenBorders:"#1A3D32",greenIcons:"#8B9C8F",greenSupportingText:"#AFBBB0",white:"#E7ECE9",blueLink:"#5AB0FF",blueLinkHover:"#B0D9FF",greenDefaultButton:"#184E3D",greenDefaultButtonHover:"#2C6755",greenDefaultButtonPressed:"#467164",greenDefaultButtonDisabled:"#8BA69E",midnight:"#002140",gray1:"#FAFAFA",gray2:"#ECECEC",gray3:"#C6C9CA",gray4:"#7D8B8F",oldRed:"#fc3826",oldRedHover:"#e13826",oldRedDisabled:"#fea29a"}},76958:(e,t,n)=>{n.d(t,{Z:()=>o});var r=n(56031),a={appBG:r.Z.greenAppBackground,highlightBG:r.Z.greenHighlightBackground,border:r.Z.greenBorders,borderFocus:r.Z.green,icon:r.Z.greenIcons,iconMenu:r.Z.green,iconHovered:r.Z.white,iconSuccessFill:r.Z.green,iconReversed:r.Z.greenAppBackground,textSupporting:r.Z.greenSupportingText,text:r.Z.white,link:r.Z.blueLink,linkHover:r.Z.blueLinkHover,buttonDefaultBG:r.Z.greenDefaultButton,buttonDisabledBG:r.Z.greenDefaultButtonDisabled,buttonHoveredBG:r.Z.greenDefaultButtonHover,buttonPressedBG:r.Z.greenDefaultButtonPressed,danger:r.Z.red,dangerHover:r.Z.redHover,dangerPressed:r.Z.redHover,warning:r.Z.yellow,success:r.Z.green,successHover:r.Z.greenHover,successPressed:r.Z.greenPressed,transparent:r.Z.transparent,overlay:r.Z.greenHighlightBackground,inverse:r.Z.white,shadow:r.Z.black,componentBG:r.Z.greenAppBackground,hoverComponentBG:r.Z.greenHighlightBackground,activeComponentBG:r.Z.greenBorders,sidebar:r.Z.greenHighlightBackground,sidebarHover:r.Z.greenAppBackground,heading:r.Z.white,textLight:r.Z.white,textDark:r.Z.greenAppBackground,textReversed:r.Z.greenAppBackground,textBackground:r.Z.greenHighlightBackground,textMutedReversed:r.Z.greenIcons,textError:r.Z.red,offline:r.Z.greenIcons,modalBackdrop:r.Z.greenHighlightBackground,modalBackground:r.Z.greenAppBackground,cardBG:r.Z.greenHighlightBackground,cardBorder:r.Z.greenHighlightBackground,spinner:r.Z.greenSupportingText,unreadIndicator:r.Z.green,placeholderText:r.Z.greenIcons,heroCard:r.Z.blue,uploadPreviewActivityIndicator:r.Z.greenHighlightBackground,dropUIBG:"rgba(6,27,9,0.92)",dropTransparentOverlay:"rgba(255,255,255,0)",checkBox:r.Z.green,pickerOptionsTextColor:r.Z.midnight,imageCropBackgroundColor:r.Z.greenIcons};r.Z.black,r.Z.blue,r.Z.blueHover,r.Z.white,r.Z.gray1,r.Z.gray2,r.Z.white,r.Z.dark,r.Z.gray1,r.Z.white,r.Z.gray2,r.Z.blue,r.Z.gray3,r.Z.gray3,r.Z.dark,r.Z.green,r.Z.white,r.Z.gray4,r.Z.dark,r.Z.oldRed,r.Z.gray1,r.Z.white,r.Z.gray3,r.Z.gray2,r.Z.gray3,r.Z.gray3,r.Z.gray2,r.Z.gray2,r.Z.gray1,r.Z.gray2,r.Z.gray4,r.Z.green,r.Z.gray3,r.Z.blue,r.Z.gray1,r.Z.gray1,r.Z.gray1,r.Z.blue,r.Z.gray1,r.Z.gray1,r.Z.oldRed,r.Z.oldRedHover,r.Z.oldRedHover,r.Z.oldRedDisabled,r.Z.yellow,r.Z.green,r.Z.greenHover,r.Z.greenPressed,r.Z.transparent,r.Z.dark,r.Z.white,r.Z.dark;const o=a},39834:(e,t,n)=>{var r=n(93379),a=n.n(r),o=n(75033);a()(o.Z,{insert:"head",singleton:!1});const g=o.Z.locals||{};var s={injectType:"singletonStyleTag",insert:"head",singleton:!0};a()(g,s),g.locals;var l=n(76958);document.addEventListener("DOMContentLoaded",(function(){var e=0,t=!1,n=document.getElementById("splash"),r=document.querySelector(".splash-logo"),a=document.getElementById("root");n.style.backgroundColor=l.Z.appBG,document.querySelector("body").style.backgroundColor=l.Z.appBG,r.innerHTML='<?xml version="1.0" encoding="utf-8"?>\n\x3c!-- Generator: Adobe Illustrator 26.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  --\x3e\n<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\n\t viewBox="0 0 80 81" style="enable-background:new 0 0 80 81;" xml:space="preserve">\n<style type="text/css">\n\t.st0{clip-path:url(#SVGID_00000133515738354390477770000011007628954774516876_);}\n\t.st1{clip-path:url(#SVGID_00000101801061172099864470000010304357936332209807_);}\n\t.st2{fill:#03D47C;}\n\t.st3{fill:#008C59;}\n\t.st4{fill:#FFFFFF;}\n</style>\n<g>\n\t<defs>\n\t\t<rect id="SVGID_1_" width="80" height="80"/>\n\t</defs>\n\t<clipPath id="SVGID_00000109719144377725207580000013806727012004235438_">\n\t\t<use xlink:href="#SVGID_1_"  style="overflow:visible;"/>\n\t</clipPath>\n\t<g style="clip-path:url(#SVGID_00000109719144377725207580000013806727012004235438_);">\n\t\t<g>\n\t\t\t<defs>\n\t\t\t\t<rect id="SVGID_00000159430450497752522510000010196965817956746124_" width="80" height="80"/>\n\t\t\t</defs>\n\t\t\t<clipPath id="SVGID_00000039849557488091876660000011033855870603973786_">\n\t\t\t\t<use xlink:href="#SVGID_00000159430450497752522510000010196965817956746124_"  style="overflow:visible;"/>\n\t\t\t</clipPath>\n\t\t\t<g style="clip-path:url(#SVGID_00000039849557488091876660000011033855870603973786_);">\n\t\t\t\t<path class="st2" d="M54.1,28.2v-8.3H25.9v40.3h28.2v-8.3H36.3v-7.7h14.4v-8.5H36.3v-7.3H54.1z"/>\n\t\t\t\t<path class="st2" d="M40,6.5C40,6.5,40,6.5,40,6.5c7.1,0,13.7,2.2,19.2,6c1.4,1,3.3,0.9,4.5-0.3l0,0c1.3-1.3,1.3-3.5-0.3-4.7\n\t\t\t\t\tC56.8,2.8,48.7,0,40,0C17.9,0,0,17.9,0,40c0,8.7,2.8,16.8,7.5,23.3c1.1,1.5,3.3,1.6,4.7,0.3l0,0c1.2-1.2,1.3-3.1,0.3-4.5\n\t\t\t\t\tc-3.8-5.4-6-12-6-19.2C6.5,21.5,21.5,6.5,40,6.5C40,6.5,40,6.5,40,6.5L40,6.5z"/>\n\t\t\t\t<path class="st2" d="M73,17.4c-1.1-1.6-3.4-1.7-4.7-0.3l0,0c-1.2,1.2-1.3,3-0.4,4.4c3.5,5.3,5.6,11.7,5.6,18.5\n\t\t\t\t\tc0,6.8-2.1,13.4-5.8,18.8c-0.9,1.4-0.9,3.3,0.3,4.5l0,0c1.4,1.4,3.6,1.3,4.7-0.3c4.6-6.5,7.3-14.4,7.3-23\n\t\t\t\t\tC80,31.5,77.4,23.8,73,17.4z"/>\n\t\t\t\t<path class="st2" d="M40,73.5c-6.8,0-13.2-2.1-18.5-5.6c-1.4-0.9-3.3-0.8-4.4,0.4l0,0c-1.4,1.4-1.3,3.6,0.3,4.7\n\t\t\t\t\tc6.4,4.4,14.2,7,22.6,7c8.4,0,16.4-2.7,23-7.3c1.6-1.1,1.7-3.3,0.3-4.7l0,0c-1.2-1.2-3.1-1.3-4.5-0.3C53.5,71.3,47,73.5,40,73.5\n\t\t\t\t\tz"/>\n\t\t\t</g>\n\t\t</g>\n\t\t<path class="st3" d="M58,60h12c5.5,0,10,4.5,10,10l0,0c0,5.5-4.5,10-10,10H58c-5.5,0-10-4.5-10-10l0,0C48,64.5,52.5,60,58,60z"/>\n\t\t<path class="st4" d="M57.9,73.1c1.5,0,2.5-0.7,2.5-2c0-1-0.5-1.5-2-1.8l-0.8-0.2c-0.8-0.2-1-0.4-1-0.7c0-0.5,0.4-0.7,1.1-0.7\n\t\t\tc0.8,0,1.2,0.3,1.3,1h1.3c-0.1-1.3-0.9-2.1-2.5-2.1c-1.6,0-2.4,0.8-2.4,1.9c0,1,0.5,1.5,1.9,1.8l0.8,0.2c0.8,0.2,1,0.4,1,0.8\n\t\t\tc0,0.5-0.5,0.8-1.3,0.8c-0.9,0-1.4-0.4-1.4-1.1h-1.3C55.3,72.3,56.3,73.1,57.9,73.1z M63.9,73v-5.1h1.8v-1.2h-4.9v1.2h1.8V73H63.9\n\t\t\tz M66,69.8c0,2,1.3,3.3,3.1,3.3c1.7,0,3-1.2,3-3.2v-0.3h-2.9v1.1h1.6C70.5,71.6,70,72,69.2,72c-1.1,0-1.9-0.8-1.9-2.1\n\t\t\tc0-1.3,0.7-2.1,1.8-2.1c0.8,0,1.4,0.4,1.6,1.1H72c-0.3-1.4-1.4-2.2-2.9-2.2C67.3,66.6,66,67.9,66,69.8z"/>\n\t</g>\n</g>\n</svg>\n';var o=setInterval((function(){e+=250,t=a.children.length>0,e>=1500&&t&&(n.parentNode.removeChild(n),clearInterval(o))}),250)}),!1)},75033:(e,t,n)=>{n.d(t,{Z:()=>s});var r=n(94015),a=n.n(r),o=n(23645),g=n.n(o)()(a());g.push([e.id,"@media screen and (min-width: 480px) { \n    .splash-logo > svg { \n        width: 104px; \n        height: 104px; \n    }\n}\n@media screen and (max-width: 479px) { \n    .splash-logo > svg { \n        width: 52px; \n        height: 52px; \n    }\n}\n\n#splash {\n    position: absolute; \n    top: 0; left: 0; \n    right: 0; background-color: white; \n    width: 100%; \n    height: 100%; \n    display: flex; \n    justify-content: center; \n    align-items: center;\n}\n","",{version:3,sources:["webpack://./web/splash/splash.css"],names:[],mappings:"AAAA;IACI;QACI,YAAY;QACZ,aAAa;IACjB;AACJ;AACA;IACI;QACI,WAAW;QACX,YAAY;IAChB;AACJ;;AAEA;IACI,kBAAkB;IAClB,MAAM,EAAE,OAAO;IACf,QAAQ,EAAE,uBAAuB;IACjC,WAAW;IACX,YAAY;IACZ,aAAa;IACb,uBAAuB;IACvB,mBAAmB;AACvB",sourcesContent:["@media screen and (min-width: 480px) { \n    .splash-logo > svg { \n        width: 104px; \n        height: 104px; \n    }\n}\n@media screen and (max-width: 479px) { \n    .splash-logo > svg { \n        width: 52px; \n        height: 52px; \n    }\n}\n\n#splash {\n    position: absolute; \n    top: 0; left: 0; \n    right: 0; background-color: white; \n    width: 100%; \n    height: 100%; \n    display: flex; \n    justify-content: center; \n    align-items: center;\n}\n"],sourceRoot:""}]);const s=g}},e=>{e.O(0,[216],(()=>(39834,e(e.s=39834)))),e.O()}]);

which I think is related to the splash screen code.
Ok, I think this is actually a dupe of https://github.com/Expensify/Expensify/issues/246097
cc @techievivek @roryabraham to confirm.


Bootstrapping userbase through automated checks

Crev doesn't have enough reviews yet to make any sizeable real-world project fully "pass" the verification. I think this creates a vicious cycle: it's not useful yet, so few users use it, and because few users use it, it doesn't get enough reviews.
Therefore, I think it's necessary to find a way to break this cycle. Crev needs to give some useful assessment even for projects that don't have enough review coverage.
I know that for some users it's important to actually have 100% of dependencies fully manually reviewed. OTOH everyone else who's not using crev yet is checking 0% of their deps, so anything more than 0% is still an improvement.
Most users should be able to run cargo crev verify (or cargo crev someothercommand) in CI and have it give a useful yes/no answer already.
I'm suggesting that when crates don't have any reviews, we can still try to give some heuristic-based score:

Lean more on trusted owners. If a crate is published by a trusted owner, then let it pass.

Help adding trusted owners (e.g. cargo crev trust @username?)
Make cargo crev verify display who needs to be trusted in order to pass the verification.

Compute a risk score of each dependency based on multiple factors, e.g. does it use build.rs or proc-macros (these run code at build time, bypass static code analysis). Does it use unsafe/no_mangle/link? Is it popular, is it old, is it from a trusted author.

Report highest-risk crates and suggest reviewing them.
Let users automatically accept low-risk crates.

Thoughts:
Have cargo crev verify default to --level none/--redundancy 0 which would flag only the crates with known advisories/known bad reviews (? is that how it is now). Maybe there should be some --level value that is not a normal trust level but a "good enough if automated sanity checks pass"?
This "vicious circle" is a bit of a sad reality. Automatic checks are kind of useful, but a bit antithetic to the mission. :/ . Though I agree that having something for new users, is a reason to stick around and use the tool.
Maybe there could be just another result "column" for automatic sanity checks, with ability to ignore/force i in the end return code result. "automatic_scan_issues: Levelkind of thing.none- did not detect any issues,high` -something really wrong detected. Then we can implement bunch of different "linters" for old versions, not many users, trusted authors.

Just to inform you of the low numbers that I see on https://web.crev.dev/rust-reviews/.
There are only 67 reviewers that wrote 1222 reviews.
I found some other 75 crev repositories, but they are incomplete or obsolete or didn't write any review.
I think that reviewers need some guidelines on what and how to review.
There is a lot of different points-of-view about reviews.
I am personally interested in avoiding supply-chain attacks with "malicious intent" from some small crate deep inside a dependency tree. The vast majority of small crates does not need access to files or network. Without that, it is difficult to do malicious things.
We could check automatically for some "potential to be malicious":
access to any file (can read files or encrypt documents), access to network (can access the local network or send secrets to a web hub), unsafe code (can do literally anything), build.rs (could be dangerous even in compile time), proc-macros, no-mangle,..
The scenario that most interests me is: a good small crate had a lot of good versions, but suddenly it needs some new "malicious potential" in the new version? Why?
It should be possible to make a server that for every new crate version uses some already available tools like geiger to write a simple crev review. This crev repository could have the name "automated checks".  It could aggregate the results of many different tools to create a summary of "malicious potential". Developers could choose to trust it or not in their WoT. But they will quickly and easily find in one review all the automated info for a better decision. Faster than running any check locally.

There are only 67 reviewers that wrote 1222 reviews.

I'm quite positively surprised how many reviews they are. Considering how unrewarding it is, and that no one is paying these people, it's pretty amazing.
Generally, I still think that if the idea is to work, the bulk of reviews will come from organizations publishing reviews that are byproduct of their security teams and developers being paid to do it.

It should be possible to make a server that for every new crate version uses some already available tools like geiger to write a simple crev review.

I very much encourage an approach where independent actors publish machine-prepared reviews using whatever automation they think works (ML, AIs, whatever), and crev is what it was meant to be: just a format to exchange and authenticate such data.

just a format to exchange and authenticate such data.

I think crev needs more than this. Defaults are important. Standard recommended usage is important. User experience is important.
Currently all of these are not great. It's:

scavenge for people you trust (67 out of 16700 Rust users)
run several custom commands to set it up
run slow verify process that outputs a long list, but no clear conclusion

If someone creates a crev repo with results of automated scan, then using it will not be great. These results will be just generic CrevIds, without any special treatment in the UI. Users will either need to know that such special Crev account exists, and how to add it to their WoT. Or if a popular user trusts that repo, then all users who don't want automated checks will have to learn how to distust that Id or filter by trust levels and minimum number of reviews required. This is not easy. I know that for you it's "just" a few flags, but for others that's a learning curve.
Ideally, for users who want to ask "does this project contain malware?" crev should be answering clearly "yes"/"no"/"you need to review or trust this and that to be sure"

I think crev needs more than this.

crev maybe. But I'm not sure how much of this is worth packing in cargo-crev CLI.

Ideally, for users who want to ask "does this project contain malware?" crev should be answering clearly "yes"/"no"/"you need to review or trust this and that to be sure",

But it is really impossible to answer this question for a power user.
One can answer a question "does at least 2 people I somewhat trust think it's OK", and that's what cargo-crev is built around. There is no objective cutoff point where things become safe for everyone.
Users can just appeal to authority. So eg. https://lib.rs can set the bar to two reviewers in a curated WoT, and even include some metrics that crev does not crate, and display a nice big :heavy_check_mark: next to a crate name when it seems "good enough". What's even the point of bothering people with going to a CLI app? Maybe they could just upload a cargo.lock file and get a page with results, etc.
And generally, as things are going right now - everything is moving to "the cloud" and people expect not having to do much about anything. Github is analyzing deps via scans and matching security databases and so on, so any CLI-based tooling is always going to be by very necessity targeting power users, that want to do something extra.

IMO, there's no way around the fact that reviewing code manually is a lot of work, and there's barely enough motivation for people to work on their own open source projects, and most of it is gone when it comes to reviewing other people's code. It's not fun, takes a lot of fun, will not give you recognition or fame, not even all that useful (I mean ... 99.99% of the time the dependencies are at least not malicious).


Can you provide the visualization code

Excuse me, could you please provide me with the code for visualizing the results in your paper through online storage or other forms?

Thanks for your interest in this work. Please refer to https://github.com/SPengLiang/DID-M3D/issues/23 for the visualization.


Autocalculate arrow position

I see that the all slider plugins use the prev and next arrow by default, i like it.
I don't mean that is bas put text in side of arrow, i put the arrows but, we have to put the arrow position in the css.
I have to put two sliders in a same page, this means that i have put to different css rules, but, with the other sliders, i haven't do this because the plugin do this for me.
See:

Here is good, but, the next isn't good:

I think that will be that in the case of we put the arrows with navText, the plugin calculate the arrow's position for more dinamyc work :D

This is a pretty opinionated decision to make (and one I don't think we're prepared to make, at least at the moment).
There is a way to deal with your problem though. We support navContainerClass and navClass properties that allow you to set custom classes on the prev/next elements (and their parent). You set these when invoking the carousel, so if you have two different carousels, you just invoke them with different options if you need to style the navigation buttons differently. For an example of this, check this Codepen out.
Also, in your example images, it looks like you're just trying to vertically center the buttons in your carousel (and doing it with hard pixel/em/rem values). There are a couple ways to center stuff like that in modern browsers that are just the browser doing calculations on its own. One example of this is in the Codepen I posted above.
Hope this helps and thanks for your interest in the plugin.

Thank you very much man, i didn't know the translation method, thanks.

Only thing to keep in mind is browser support. It's supported in all the browsers for the last few years, but if you have to work with IE8, you'll need a different approach.


init-pod:  support helm wait and fix installation block when agent pods fails to run

robot cherry pick PR https://github.com/spidernet-io/spiderpool/pull/3732 from cyclinder,to branch release-v1.0,  action https://github.com/spidernet-io/spiderpool/actions/runs/10141288006  , commits 22b64d0e07ef03619788c92475019edb804a342a

merge by
https://github.com/spidernet-io/spiderpool/pull/3794


Where is the ./app

I can't seem to find it where to run the commands to see where the turn server is aiming, the issue I am still having with netplay seems to be with the turn server and setting it up correctly.

Does it default to port 3478 and does it set any login information?

No, it will pass those values as is to clients. If user and password are not set or empty client will also not set them: https://github.com/n-at/playtime/blob/master/assets/netplay.js#L1184


Update readme

Issue/Task Number: T481
Overview
This PR updates the readme and all other full text documentation.
Changes

Updated the main README.md
Moved a lot of the previous README.md content into separate own documents

Implementation Details
Here are some principles I set while making this version of the README.

The content is one-directional. Minimal or no skipping is required.
Each section in the main readme is half a laptop page in height or less.
Each section contains no more than 2 paragraphs.
Any decision branching is clearly stated with call to action (pick one, choose ..., etc.) before the branching options.
If content contains decision branches, the branches are in short 1-2 line bullet point. No more than 3 branches allowed.
Any longer content that are decision branches are clearly labeled in the title e.g. Option 1: ..., Option 2: ... (see Docker Setup page for example)
When branched off to another page, the reader can complete that page, and come back to continue right where they left off.

Usage
Read, read, read.
Impact
No DB or API changes.

Hey everyone. This is still a work in progress but I've put in quite some chunk of edit, and I don't want to proceed without getting some initial feedbacks. Please let me know if you have any opinions about the new main README.md.
The subsequent pages havn't really been edited yet, but at least you should see the correct flow from the README.md to other pages. Let me know if you have any suggestion be it structure or content wise!

Ready for review. I think this is the best I can do for now given the time already spent on it.


Live patch

This is some preliminary work to allow partially updating the edges while the service is active. We concluded that it is not necessary for now.  We can keep it or also start from scratch when we decide to implement it.

Okay, I'll mark it as a draft then, and we take it from there.


Set the version to 1.4.0

Codecov Report

Merging #42 into master will not change coverage.
The diff coverage is 0%.

@@           Coverage Diff           @@
##           master      #42   +/-   ##
=======================================
  Coverage   52.78%   52.78%
=======================================
  Files          13       13
  Lines         574      574
=======================================
  Hits          303      303
  Misses        222      222
  Partials       49       49

Impacted Files
Coverage Δ

cmd/cli/main.go
27.6% <0%> (ø)
:arrow_up:

Continue to review full report at Codecov.

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


fixed a possible json typo with "uri" instead of "url"

Description of the change

The google.generativeai.discuss.ChatResponse object when returned gives {'citation_sources': [{'start_index': , 'end_index': , 'uri': ]}
And I believe it should be url and was a typo that was missed
Motivation

I was trying out the api, and found this interesting feature where the api also returned the proper citiation, but found out that there was a typo in the same, so just a pr to fix it.
Type of change
Bug fix / Typo fix
Checklist

[X] I have performed a self-review of my code.
[X] I have added detailed comments to my code where applicable.
[X] I have verified that my change does not break existing code.
[X] My PR is based on the latest changes of the main branch (if unsure, please run git pull --rebase upstream main).
[X] I am familiar with the Google Style Guide for the language I have coded in.
[X] I have read through the Contributing Guide and signed the Contributor License Agreement.

Thanks, but this is supposed to be URI.


InvalidCastException :Unable to cast object of type *ViewModel to AvaloniaObject (11.0-preview4)

I was trying to upgrade to Avalonia 11.0 preview 4 and able to handle most of breaking change. But I had a weird exception when load a view (with ViewModel) into Window: When I set DataContext to an object of type MyViewModel, An exception is thrown:
System.InvalidCastException: 'Unable to cast object of type 'MyViewModel' to type 'Avalonia.AvaloniaObject'.'
I use FluentAvalonia's NavigationView as container and changes it's content according to selection.

The exception is not thrown immediately after the assignment of DataContext. It throws later, before the event "Loaded".
The exception is not thrown immediately after the assignment of NavigationView.Content
When I assign DataContext to null, the UI can be shown (with no content of course)
When I remove the assignment to change NavigationView.Content, there is no exception.

For some simple ViewModels (not inherited from AvaloniaObject) there is no issue.
Here is the stack trace when exception occurs, happened from 11.0-preview1 to 11.0-preview4. no issue on 0.10.18
Thanks in advance for any hints.
   at Avalonia.Markup.Xaml.MarkupExtensions.CompiledBindings.PropertyInfoAccessorFactory.CreateAvaloniaPropertyAccessor(WeakReference`1 target, IPropertyInfo property)
   at Avalonia.Data.Core.PropertyAccessorNode.StartListeningCore(WeakReference`1 reference)
   at Avalonia.Data.Core.ExpressionNode.StartListening()
   at Avalonia.Data.Core.ExpressionNode.set_Target(WeakReference`1 value)
   at Avalonia.Data.Core.ExpressionNode.StartListeningCore(WeakReference`1 reference)
   at Avalonia.Data.Core.ExpressionNode.StartListening()
   at Avalonia.Data.Core.ExpressionNode.set_Target(WeakReference`1 value)
   at Avalonia.Data.Core.ExpressionNode.StartListeningCore(WeakReference`1 reference)
   at Avalonia.Data.Core.ExpressionNode.StartListening()
   at Avalonia.Data.Core.ExpressionNode.set_Target(WeakReference`1 value)
   at System.Reactive.AnonymousSafeObserver`1.OnNext(T value)
   at Avalonia.Data.BindingBase.UpdateSignal.PropertyChanged(Object sender, AvaloniaPropertyChangedEventArgs e)
   at Avalonia.AvaloniaObject.RaisePropertyChanged[T](AvaloniaPropertyChangedEventArgs`1 change)
   at Avalonia.AvaloniaObject.InheritedPropertyChanged[T](AvaloniaProperty`1 property, Optional`1 oldValue, Optional`1 newValue)
   at Avalonia.AvaloniaObject.RaisePropertyChanged[T](AvaloniaPropertyChangedEventArgs`1 change)
   at Avalonia.AvaloniaObject.InheritanceParentChanged[T](StyledPropertyBase`1 property, AvaloniaObject oldParent)
   at Avalonia.AvaloniaObject.set_InheritanceParent(AvaloniaObject value)
   at Avalonia.StyledElement.Avalonia.Controls.ISetLogicalParent.SetParent(ILogical parent)
   at Avalonia.Controls.Primitives.TemplatedControl.ApplyTemplate()
   at Avalonia.Layout.Layoutable.MeasureCore(Size availableSize)
   at Avalonia.Layout.Layoutable.Measure(Size availableSize)
   at Avalonia.Controls.Grid.MeasureCell(Int32 cell, Boolean forceInfinityV)
   at Avalonia.Controls.Grid.MeasureCellsGroup(Int32 cellsHead, Size referenceSize, Boolean ignoreDesiredSizeU, Boolean forceInfinityV, Boolean& hasDesiredSizeUChanged)
   at Avalonia.Controls.Grid.MeasureOverride(Size constraint)
   at Avalonia.Layout.Layoutable.MeasureCore(Size availableSize)
   at Avalonia.Layout.Layoutable.Measure(Size availableSize)
   at Avalonia.Layout.LayoutHelper.MeasureChild(ILayoutable control, Size availableSize, Thickness padding, Thickness borderThickness)
   at Avalonia.Controls.Presenters.ContentPresenter.MeasureOverride(Size availableSize)
   at Avalonia.Layout.Layoutable.MeasureCore(Size availableSize)
   at Avalonia.Layout.Layoutable.Measure(Size availableSize)
   at Avalonia.Layout.Layoutable.MeasureOverride(Size availableSize)
   at Avalonia.Layout.Layoutable.MeasureCore(Size availableSize)
   at Avalonia.Layout.Layoutable.Measure(Size availableSize)
   at Avalonia.Layout.LayoutManager.Measure(ILayoutable control)
   at Avalonia.Layout.LayoutManager.ExecuteMeasurePass()
   at Avalonia.Layout.LayoutManager.InnerLayoutPass()
   at Avalonia.Layout.LayoutManager.ExecuteLayoutPass()
   at Avalonia.Threading.JobRunner.RunJobs(Nullable`1 priority)
   at Avalonia.Win32.Win32Platform.WndProc(IntPtr hWnd, UInt32 msg, IntPtr wParam, IntPtr lParam)
   at Avalonia.Win32.Interop.UnmanagedMethods.DispatchMessage(MSG& lpmsg)
   at Avalonia.Win32.Win32Platform.RunLoop(CancellationToken cancellationToken)
   at Avalonia.Threading.Dispatcher.MainLoop(CancellationToken cancellationToken)
   at Avalonia.Controls.DesktopApplicationExtensions.Run(Application app, CancellationToken token)
   at Program.AppMain(Application app, String[] args) in D:\Projets\Program.cs:line 78
   at Program.Main(String[] args) in D:\Projets\Program.cs:line 28

This issue was fixed with this PR https://github.com/AvaloniaUI/Avalonia/pull/9460
You can try nightly or wait for preview5


Need Identity Provider solution for an application on our internal web server

Hi - we have an internal web server with an application on it that requires OpenID Connect to authenticate users when they attempt to login both internally and external to our network. Do you have a product/solution for this? Thanks.

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

ID: 15942a1a-df5c-bbeb-a693-510aadede4b2
Version Independent ID: dd96db95-d230-9690-ab08-dfc6ceaff7f2
Content: Set up sign-up and sign-in with OpenID Connect - Azure Active Directory B2C
Content Source: articles/active-directory-b2c/active-directory-b2c-setup-oidc-idp.md
Service: active-directory
Sub-service: b2c
GitHub Login: @mmacy
Microsoft Alias: marsma

@jpitcherCMH  Thanks for your feedback! We will investigate and update as appropriate.

Hey @jpitcherCMH I'm not sure what you're requesting for. Azure AD supports the OIDC flow per the doc here : https://docs.microsoft.com/en-us/azure/active-directory/develop/v1-protocols-openid-connect-code
It sounds like you might be requesting some sort of VPN service where users can only login to your environment when they are either on local network or through a vpn to the local network. Which we do have an application proxy solution, refer to doc : https://docs.microsoft.com/en-us/azure/active-directory/manage-apps/application-proxy
Or possibly a solution such as this : https://docs.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-howto-site-to-site-resource-manager-portal
For implementation help please refer to solution providers endpoint and they will be able to help you further with implementation issues : https://www.microsoft.com/en-us/solution-providers


Need to capture console/screen for vsphere

Hi Guys,
I am trying to install virtual machine through pyvmomi (version : <IP_ADDRESS>6.6) using python (version : 2.7.3)
I need to input some boot parameters and based on that i need to input username, password and select other parameters from the menu displayed to start boot process
Can you please let me know which library/api's will help me in doing this? How can i achieve this thing.

Hi,
I want to do something similar mentioned by devpanky2014:
install new custom ISO which ask options, and based upon the option selected install appropriate OS type on the virtual machine.
How can i trigger keyboard action or say provide input for options while automating the ISO installation in the virtual machine?
thanks

pyVmomi doesn't provide a very usable API for capturing screenshots. There is createScreenshot, but you'll notice it just saves the png on the datastore of the VM.
You could try acquireTicket with webmks ticketType, which would return a uri for wss. I'm not sure if there are python packages that support mks over websockets. I noticed there is some javascript for html5 that supports it: https://developer.vmware.com/web/sdk/2.2.0/html-console.
Alternatively you could request a screenshot over http:
url = f"http://{host}/screen?id={moId}"
where if your vim.VirtualMachine object is vm, then
host = vm._stub.host
moId = vm._moId
You could use username/password basic auth for above request.
If you plan to frequently get screenshots, then the webmks mechanism will likely be much lower load on the system.

@prziborowski thanks!
this is the code I used
def screenshot(vm_name):
    requests.packages.urllib3.disable_warnings()
    ssl._create_default_https_context = ssl._create_unverified_context

    si = SmartConnect(host=vsphere_host, user=vsphere_user, pwd=vsphere_pwd)
    content = si.RetrieveContent()

    vm = get_vm_by_name(content, vm_name)
    screenshot_task = vm.CreateScreenshot_Task()

    # Wait for the task to complete
    while screenshot_task.info.state == vim.TaskInfo.State.running:
        continue

    # Check the task result
    if screenshot_task.info.state == vim.TaskInfo.State.success:
        screenshot_path = screenshot_task.info.result
        print(f"Screenshot saved to: {screenshot_path}")

    else:
        return (f"Failed to create screenshot. Reason: {screenshot_task.info.error.msg}")

    Disconnect(si)


Cannot delete a duplicate user

Expected Behavior
The lab lead should be able to delete a user account.
Current Behavior
It is possible to create a user account with the same username as a current user (yes, I messed up ...) and now one has two users with the same name; unsure if this will cause problems at another level but certainly can lead to issues assigning to the right one.
Thoughts:

Presumably we don't want to delete a user if they've made annotations. Not sure what to do then, probably renaming or 'deactivating' a given user would be needed?
Perhaps not letting lableads make duplicate users is the main fix here?

The deletion issue is something we can address in the future, but there is already validation for preventing duplicate users, so I'm not sure how you did this? I did as broad of testing for this as I could and I always got a preventative error message.
Cases I tested:

same name same role
same name different role
same name with different capitalization
same name with different capitalization and different role

Can you provide details on how exactly you got duplicate users?

I tried to add another duplicate user, and it rejects setup this time ...

🤯


Implement design doc changes

This PR handles https://github.com/ccao-data/model-sales-val/issues/125 and https://github.com/ccao-data/model-sales-val/issues/124.
Essentially I take the existing system and make changes such that it fits with these issues and the new design doc.
The biggest change here is that we remove sv_outlier_type and introduce 3 columns:

sv_outlier_reason1
sv_outlier_reason2
sv_outlier_reason3

In the existing set up, if we have an outlier that is classified , then sv_outlier_type() must be one of the following:

A price outlier defined by the dev_bounds: [2, 2] definition in params.yaml
Above price outlier + a characteristic reason determined in the outlier_type() function in glue/flagging_script_glue/flagging.py.
One of the ptax questions flagged and a price deviation from ptax_sd: [1, 1]defined in params.yaml

The following changes are implemented in order to maintain the existing specs and bring in the new structure. In sv_outlier_type() the price and characteristic outlier types are split into char_conditions/char_labels and price_conditions/price_labels.
For the three sv_outlier_reason$n columns, we populate them with the following order of priority

PTAX-203 Exclusion
Price label
Char label

Then, we assign the observation as an outlier only if sv_is_outlier1 is a price label or a ptax label. This allows us to retain sales validation information even if we don't want to technically classify the sale as an outlier. Here are some scenarios:
Scenario 1:

Outlier  Classification: True
sv_outlier_reason1 - High Price
sv_outlier_reason2 - High Price (sqft)
sv_outlier_reason3 - Non-person sale

Scenario 2:

Outlier  Classification: False
sv_outlier_reason1 - Non-person sale
sv_outlier_reason2 - Statistical anomaly
sv_outlier_reason3 - null

https://github.com/ccao-data/model-sales-val/pull/128#discussion_r1633546545 This was a great suggestion. I implemented a fix here: https://github.com/ccao-data/model-sales-val/pull/128/commits/38b99c7b1f3b252086e52623d33cec49de6acde0. You were right, but instead of sv_pricing we needed to check sv_which_price as that is where the sqft info is

Placing a template for an overarching outlier type data structure here. We can come back to this whenever we do a large re-factor of the pipeline.

OUTLIER_TYPES = [
    {
        "colname": "sv_ind_ptax_flag_w_deviation",
        "label": "PTAX-203 Exclusion",
        "condition": {
            # TODO: include cast to int
            "res": lambda df, context: df["ptax_flag_original"] & (
                (df[f"sv_price_deviation_{context['group_string']}"] >= ptax_sd[1])
                | (df[f"sv_price_deviation_{group_string}"] <= -ptax_sd[0])
                | (df[f"sv_price_per_sqft_deviation_{group_string}"] >= ptax_sd[1])
                | (df[f"sv_price_per_sqft_deviation_{group_string}"] <= -ptax_sd[0])
            ),
           "condo": lambda df: df["ptax_flag_original"] & (
                (df[f"sv_price_deviation_{group_string}"] >= ptax_sd[1])
                | (df[f"sv_price_deviation_{group_string}"] <= -ptax_sd[0])
            )
        },
        "determines_outlier": True,
    },
    {
        "colname": "sv_ind_price_high_price",
        "label": "High price",
        "condition": {
            "res": lambda df: (
                df["sv_pricing"].str.contains("High")
                & (df["sv_which_price"].str.contains("raw"))
            ),
            "condo": lambda df: df["sv_pricing"].str.contains("High"),
        },
        "determines_outlier": True,
    },
    {
        "colname": "sv_ind_price_low_price",
        "label": "Low price",
        "condition": {
            "res": (
                lambda df: df["sv_pricing"].str.contains("Low")
                & (df["sv_which_price"].str.contains("raw"))
            ),
            "condo":lambda df: df["sv_pricing"].str.contains("Low"),
        },
        "determines_outlier": True,
    },
    {
        "colname": "sv_ind_price_high_price_sqft",
        "label": "High price per square foot",
        "condition": {
            "res": lambda df: (
                df["sv_pricing"].str.contains("High"))
                & (df["sv_which_price"].str.contains("sqft")
            ),
        },
        "determines_outlier": True,
    },
    {
        "colname": "sv_ind_price_low_price_sqft",
        "label": "Low price per square foot",
        "condition": {
            "res": lambda df: (
                df["sv_pricing"].str.contains("Low"))
            & (df["sv_which_price"].str.contains("sqft")
            )
        },
        "determines_outlier": True,
    },
    {
        "colname": "sv_ind_char_short_term_owner",
        "label": "Short-term owner",
        "condition": lambda df: df["sv_short_owner"] == "Short-term owner",
        "determines_outlier": False,
    },
    {
        "colname": "sv_ind_char_family_sale",
        "label": "Family sale",
        "condition": lambda df: df["sv_name_match"] != "No match",
        "determines_outlier": False,
    },
    {
        "colname": "sv_ind_char_non_person_sale",
        "label": "Non-person sale",
        "condition": lambda df: df[["sv_buyer_category", "sv_seller_category"]].eq("legal_entity").any(axis=1),
        "determines_outlier": False,
    },
    {
        "colname": "sv_ind_char_statistical_anomaly",
        "label": "Statistical Anomaly",
        "condition": lambda df: df["sv_anomaly"] == "Outlier",
        "determines_outlier": False,
    },
    {
        "colname": "sv_ind_char_price_swing_homeflip",
        "label": "Price swing / Home flip",
        "condition":  lambda df: df["sv_pricing"].str.contains("High price swing")
        | df["sv_pricing"].str.contains("Low price swing"),
        "determines_outlier": False,
    },
]


On a HasMany relationship manager, when using a function to filter a list of options on a relationship list, when using "Create and Create Another", the second create overrides the Pivot Relation

Package
filament/filament
Package Version
2.9.7
Laravel Version
8.75
Livewire Version
2.9
PHP Version
8.1
Bug description
On a HasMany relationship manager, when using a function to filter a list of options on a relationship list, when using "Create and Create Another", the second create overrides the first Pivot Relation
https://user-images.githubusercontent.com/43570309/150422376-502f0c56-1690-4a02-9c58-6774aedfc2e5.mov

Steps to reproduce
No response
Relevant log output
No response

Fixed by #1320.


GH-41862: [C++][Dataset] Try out possible fix number 1

Rationale for this change

What changes are included in this PR?

Are these changes tested?

Are there any user-facing changes?

GitHub Issue: #41862

@github-actions crossbow submit -g cpp

According to @icexelloss this didn't fix the original issue, so I'm going to close this.


Upgrade to version 5.13.0

Description of the Change
upgrade to version 5.13.0
Verification Process
re-deployed Bitbucket container
Applicable Issues
no issues so far

Thanks for the update!


FTPS Not working?

Filezilla is able to connect to a machine, and I got curl working too, but I can't get connect in the library to work.
final ftp = FTPConnect(
  '<IP_ADDRESS>',
  port: 990,
  user: 'asdf',
  pass: 'asdfasdf',
  securityType: SecurityType.FTPS,
  timeout: 3,
);
await ftp.connect();

Depending on combination of settings it times out or gets a connection refused.
I didn't see a FTPS example in the lib/example folder either.  It does seem like your code attempts to do stuff for FTPS, and it's possible I'm configuring something wrong.

OK, I believe the library does the FTPS handshake wrong.  I'm making a PR now.

Fixed here:
https://github.com/salim-lachdhaf/dartFTP/pull/19

@salim-lachdhaf thanks for merging my code, hopefully it's helpful.
It would also be very helpful I think to note in docs somewhere that Android and iOS can't do ssl session re-use so even with my fixed code, FTPS won't work if the ftp server requires ssl session re-use.
While in the specific use case of FTPS, it increases security by ensuring it's the same party for the multiple sockets, in the context of Android/iOS it's not functionality that's provided and in terms of general networking allowing the ability to specify session parameters is considered insecure.

I think FTPS (FTP/SSL, implicit mode) is still broken. When testing with the Rebex-server, I get the following log-messages:

I/flutter ( 7550): [2024-06-21 11:29:29.900861] Connecting...
I/flutter ( 7550): [2024-06-21 11:29:30.098133] Connection established, waiting for welcome message...
I/flutter ( 7550): [2024-06-21 11:29:30.406971] < FTPReply =  [code= 220, message= 220-Welcome to test.rebex.net!
I/flutter ( 7550):     See https://test.rebex.net/ for more information and terms of use.
I/flutter ( 7550): 220 If you don't have an account, log in as 'anonymous' or 'ftp'.]
I/flutter ( 7550): [2024-06-21 11:29:30.407535] > PBSZ 0
D/EGL_emulation( 7550): app_time_stats: avg=16.43ms min=8.39ms max=102.42ms count=50
I/flutter ( 7550): [2024-06-21 11:29:30.715847] < FTPReply =  [code= 530, message= 530 Not logged in.]
I/flutter ( 7550): [2024-06-21 11:29:30.716216] > PROT P
I/flutter ( 7550): [2024-06-21 11:29:31.019078] < FTPReply =  [code= 530, message= 530 Not logged in.]
I/flutter ( 7550): [2024-06-21 11:29:31.019337] > USER demo
I/flutter ( 7550): [2024-06-21 11:29:31.328616] < FTPReply =  [code= 331, message= 331 Anonymous login OK, send your complete email address as your password.]
I/flutter ( 7550): [2024-06-21 11:29:31.329419] > PASS password
I/flutter ( 7550): [2024-06-21 11:29:31.637655] < FTPReply =  [code= 230, message= 230 User 'demo' logged in.]
I/flutter ( 7550): [2024-06-21 11:29:31.639396] Connected!
I/flutter ( 7550): [2024-06-21 11:29:31.644652] > TYPE I
D/EGL_emulation( 7550): app_time_stats: avg=12.89ms min=4.11ms max=38.16ms count=54
I/flutter ( 7550): [2024-06-21 11:29:31.956855] < FTPReply =  [code= 200, message= 200 TYPE set to I.]
I/flutter ( 7550): [2024-06-21 11:29:31.983377] > PASV
I/flutter ( 7550): [2024-06-21 11:29:32.285471] < FTPReply =  [code= 227, message= 227 Entering Passive Mode (194,108,117,16,4,13)]
I/flutter ( 7550): [2024-06-21 11:29:32.286609] > MLSD
I/flutter ( 7550): [2024-06-21 11:29:32.330847] < FTPReply =  [code= 150, message= 150 Opening 'BINARY' data connection.]
I/flutter ( 7550): [2024-06-21 11:29:32.667874] < FTPReply =  [code= 226, message= 226 Transfer complete.]

So, although, the connection is established, the first commands ("PBSZ 0" and "PROT P") produce an 530-error message, stating that the user is not logged in yet.

@rubencalje If your ftps server requires TLS session reuse then it is impossible to fix on Android and iOS.
This is because, for security on Android and iOS every connection gets a new key and that's all managed by Android.
For ftps, which has a separate command and data connection, it's actually important for security to use the same key so that it can be ensured that both connections are the same person.
But android and iOS didn't think of that use case I guess.
You can for example download any ftp(s) capable app of the app store and test if you can connect to your ftps server through that app.  If it works, then there may be a bug in this library.  If it does not work in any apps, there's probably a reason it doesn't work for yours.
I had to abandon my use case and move towards a different solution.

If you see native java solutions online for reusing session that utilize reflection, note that they won't actually work on Android, because android actually blocks many kinds of reflection that could be used to get around their security restrictions.


Remove 'centaurs' from US/UK complement pack

It's already in the UK pack with different capitalisation.

#162


Flannel VXLAN device not recreated when master device reappears

Expected Behavior
Flannel should watch for changes on the master device and recreate the flannel device when appropriate.
Current Behavior
When the flannel VXLAN device's master device disappears, the VXLAN device is automatically removed. If the master devices later reappears, the flannel device doesn't automatically come back up.
Steps to Reproduce (for bugs)
The master device can disappear for any of the following reasons:

ifdown/ifup on a VLAN device
ifdown/ifup on a LACP device
detach/attach (non-primary) interface in AWS EC2

Your Environment

Flannel version: quay.io/coreos/flannel:v0.9.0-amd64
Backend used (e.g. vxlan or udp): vxlan
Etcd version: quay.io/coreos/etcd:v3.2.9
Kubernetes version (if used): 1.8.3
Operating System and version: Ubuntu 16.04

I'm specifying the master device using flanneld --iface=<IP>.

Similar to #869


Libxml2 rebuild

{package} {version} {:snowflake:}
Destination channel: {Snowflake | defaults}
Links

{ticket_number}
Upstream repository
Upstream changelog/diff
Relevant dependency PRs:

...

Explanation of changes:

...

Linter check found the following problems:
ERROR conda.cli.main_run:execute(125): `conda run conda-lint /tmp/abs_b1_0kllbh8/clone` failed. (See above for error)
The following problems have been found:
===== WARNINGS =====

clone/recipe/meta.yaml:28: host_section_needs_exact_pinnings: Linked libraries host should have exact version pinnings.

===== ERRORS =====

clone/recipe/meta.yaml:16: pip_install_args: pip install should be run with --no-deps and --no-build-isolation.
===== Final Report: =====
1 Error and 1 Warning were found

Linter check found the following problems:
ERROR conda.cli.main_run:execute(125): `conda run conda-lint /tmp/abs_2ad3wcq8kp/clone` failed. (See above for error)
The following problems have been found:
===== WARNINGS =====

clone/recipe/meta.yaml:28: host_section_needs_exact_pinnings: Linked libraries host should have exact version pinnings.
===== Final Report: =====
0 Errors and 1 Warning were found


Pets: the pets name is grabbable

The names of the pets are grabbable.

Good catch! 👍 I just committed the fix to pets.js in the repo. The nametag should no longer be grabbable.


feat(nvidia/remapped-rows): suggest reboot/inspection on row remapping

@cardyok Let's keep them separate for now. In case nvidia-smi parsing fails, we need some fallback, and still need to know when nvidia-smi parsing fails.


"Wait for dids and publish to mqtt..."

Hi,
I have two issues:
#1 paho_mqtt has been updated to V2 and this is why it does not publish to mqtt anymore
I can downgrade paho with
pip install "paho-mqtt<2.0.0"
But when i do this I get issue
#2
I want to publish to MQTT with the following:
python3 E3onCANcollect.py -c can0 -dev e380 -r 592 -m localhost:1883:open3e -retain 592
When I do this I get the following message:
Wait for dids and publish to mqtt...
with no publishing to my MQTT broker

Hi @Donboxo,
regarding #1:

I used the same command line and it's working fine with paho-mqtt V1.6.1
pls. check if the E380 data is present on bus: candump can0 -tA | grep 250
pls. check if your mqtt broker is listening to the right topics. You may use mosquitto: mosquitto_sub -v -t open3e/#

regarding #2:

Thank you for the hint. I will update E3onCAN to paho-mqtt V2

Btw.: Did you know, there is an adpater for ioBroker available supporting E380 data collection? You my install from here or via Beta-Repository in ioBroker (search for e3oncan or viessmann).

Thanks so much!
With 1.6.1 it works now. I also forgot to include mqtt password...
Is there a way to increase the interval readout? I think it is at 250 ms at the moment and I want to set it to 1 s
I currently use the E380 readout only for including the Grid Power into evcc for my electric car, but in the future I will use ioBroker for data collection so thanks for the hint!

@Donboxo  Good to here it's working. I just pushed the update for paho-mqtt V2. Pls. run pip install -r requirements.txt after updating.

Is there a way to increase the interval readout?

That's not possible with present implementation. All incoming data is just forwarded to mqtt. If it's important four you, pls. place an issue. ioBroker adapter can do such limitation already.
Closing this issue.


Decouple message from replication buffer

I going to reuse this buffer in several kinds of messages.

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (c647f6d) 89.75% compared to head (a5c119a) 91.14%.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##           master     #115      +/-   ##
==========================================
+ Coverage   89.75%   91.14%   +1.38%
==========================================
  Files          15       15
  Lines         898      903       +5
==========================================
+ Hits          806      823      +17
+ Misses         92       80      -12

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Development server crashes after several successful saves

create-app                  | 22:15:34 0|ssr-frontend-create  | Warning: componentWillMount has been renamed, and is not recommended for use. See https://fb.me/react-unsafe-component-lifecycles for details.
create-app                  | 22:15:34 0|ssr-frontend-create  | * Move code from componentWillMount to componentDidMount (preferred in most cases) or the constructor.
create-app                  | 22:15:34 0|ssr-frontend-create  | Please update the following components: Form(DetailsPage)
create-app                  | 22:16:00 0|ssr-frontend-create  | <--- Last few GCs --->
create-app                  | 22:16:00 0|ssr-frontend-create  | [557:0x304e600]   124554 ms: Mark-sweep 1369.8 (1424.6) -> 1369.3 (1425.1) MB, 1088.2 / 0.0 ms  (average mu = 0.103, current mu = 0.006) allocation failure scavenge might not succeed
create-app                  | 22:16:00 0|ssr-frontend-create  | [557:0x304e600]   126209 ms: Mark-sweep 1370.3 (1425.1) -> 1369.8 (1425.6) MB, 1647.2 / 0.0 ms  (average mu = 0.046, current mu = 0.004) allocation failure scavenge might not succeed
create-app                  | 22:16:00 0|ssr-frontend-create  | <--- JS stacktrace --->
create-app                  | 22:16:00 0|ssr-frontend-create  | ==== JS stack trace =========================================
create-app                  | 22:16:00 0|ssr-frontend-create  |     0: ExitFrame [pc: 0x2c201b2dbe1d]
create-app                  | 22:16:00 0|ssr-frontend-create  |     1: StubFrame [pc: 0x2c201b2934b0]
create-app                  | 22:16:00 0|ssr-frontend-create  | Security context: 0x335aedc1e6c1 <JSObject>
create-app                  | 22:16:00 0|ssr-frontend-create  |     2: classNames [0x1c8b94412769] [/usr/src/app/apps/create/dist/server.js:~39185] [pc=0x2c201c5a9023](this=0x0d472f7292f9 <Object map = 0x33d5467d5d99>)
create-app                  | 22:16:00 0|ssr-frontend-create  |     3: arguments adaptor frame: 2->0
create-app                  | 22:16:00 0|ssr-frontend-create  |     4: ProgressBarSections(aka ProgressBarSections) [0xd472f713ba9] [/usr/src/app/apps/create/dist/server.js:~197747] [pc=0x2c201c...
create-app                  | 22:16:00 0|ssr-frontend-create  | FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
create-app                  | 22:16:00 0|ssr-frontend-create  |  1: 0x8fb090 node::Abort() [/usr/local/bin/node]
create-app                  | 22:16:00 0|ssr-frontend-create  |  2: 0x8fb0dc  [/usr/local/bin/node]
create-app                  | 22:16:00 0|ssr-frontend-create  |  3: 0xb0322e v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [/usr/local/bin/node]
create-app                  | 22:16:00 0|ssr-frontend-create  |  4: 0xb03464 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/usr/local/bin/node]
create-app                  | 22:16:00 0|ssr-frontend-create  |  5: 0xef74c2  [/usr/local/bin/node]
create-app                  | 22:16:00 0|ssr-frontend-create  |  6: 0xef75c8 v8::internal::Heap::CheckIneffectiveMarkCompact(unsigned long, double) [/usr/local/bin/node]
create-app                  | 22:16:00 0|ssr-frontend-create  |  7: 0xf036a2 v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [/usr/local/bin/node]
create-app                  | 22:16:00 0|ssr-frontend-create  |  8: 0xf03fd4 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/usr/local/bin/node]
create-app                  | 22:16:00 0|ssr-frontend-create  |  9: 0xf06c41 v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/usr/local/bin/node]
create-app                  | 22:16:00 0|ssr-frontend-create  | 10: 0xed00c4 v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationSpace) [/usr/local/bin/node]
create-app                  | 22:16:00 0|ssr-frontend-create  | 11: 0x117024e v8::internal::Runtime_AllocateInNewSpace(int, v8::internal::Object**, v8::internal::Isolate*) [/usr/local/bin/node]
create-app                  | 22:16:00 0|ssr-frontend-create  | 12: 0x2c201b2dbe1d
create-app                  | 22:16:01 0|ssr-frontend-create  | Aborted
create-app                  | 22:16:01 0|ssr-frontend-create  | error Command failed with exit code 134.
create-app                  | 22:16:01 0|ssr-frontend-create  | info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
create-app                  | 2020-11-11T22:16:01: PM2 log: App [ssr-frontend-create:0] exited with code [134] via signal [SIGINT]
create-app                  | 22:16:01 PM2                    | App [ssr-frontend-create:0] exited with code [134] via signal [SIGINT]
create-app                  | 2020-11-11T22:16:01: PM2 log: App [ssr-frontend-create:0] starting in -fork mode-
create-app                  | 22:16:01 PM2                    | App [ssr-frontend-create:0] starting in -fork mode-
create-app                  | 2020-11-11T22:16:01: PM2 log: App [ssr-frontend-create:0] online
create-app                  | 22:16:01 PM2                    | App [ssr-frontend-create:0] online
create-app                  | 22:16:01 0|ssr-frontend-create  | yarn run v1.22.4
create-app                  | 22:16:02 0|ssr-frontend-create  | $ pixeloven webpack start --client ./src/client/index.tsx --server ./src/server/index.ts --allow-externals --development --source-map=source-map --host <IP_ADDRESS> --path / --port 48080 --protocol https --static-asset-path create/static --namespace create
create-app                  | 22:16:06 0|ssr-frontend-create  | info 2020-11-11T22:16:06.319Z client code path has been discovered
create-app                  | 22:16:06 0|ssr-frontend-create  | info 2020-11-11T22:16:06.323Z client targeting web
create-app                  | 22:16:06 0|ssr-frontend-create  | info 2020-11-11T22:16:06.325Z server code path has been discovered
create-app                  | 22:16:06 0|ssr-frontend-create  | info 2020-11-11T22:16:06.326Z server targeting node
create-app                  | 22:16:07 0|ssr-frontend-create  | info 2020-11-11T22:16:07.556Z ---------- configuring development server ----------
create-app                  | 22:16:07 0|ssr-frontend-create  | info 2020-11-11T22:16:07.569Z mounting webpack development middleware
create-app                  | 22:16:07 0|ssr-frontend-create  | info 2020-11-11T22:16:07.571Z mounting error handler
create-app                  | 22:16:07 0|ssr-frontend-create  | info 2020-11-11T22:16:07.572Z ---------- connecting development server ----------
create-app                  | 22:16:07 0|ssr-frontend-create  | success 2020-11-11T22:16:07.582Z development server is listening at https://<IP_ADDRESS>:48080/
create-app                  | 22:17:18 0|ssr-frontend-create  | info 2020-11-11T22:17:18.786Z webpack completed build d89bea8e4079a0b1ddad in 70429ms
create-app                  | 22:17:18 0|ssr-frontend-create  | warn 2020-11-11T22:17:18.786Z This can impact web performance.
create-app                  | 22:17:18 0|ssr-frontend-create  | Assets:
create-app                  | 22:17:18 0|ssr-frontend-create  |   server.js (9.15 MiB)
create-app                  | 22:17:18 0|ssr-frontend-create  | warn 2020-11-11T22:17:18.786Z Entrypoints:
create-app                  | 22:17:18 0|ssr-frontend-create  |   main (9.15 MiB)
create-app                  | 22:17:18 0|ssr-frontend-create  |       server.js
create-app                  | 22:17:18 0|ssr-frontend-create  | warn 2020-11-11T22:17:18.787Z You can limit the size of your bundles by using import() or require.ensure to lazy load some parts of your application.
create-app                  | 22:17:18 0|ssr-frontend-create  | For more info visit https://webpack.js.org/guides/code-splitting/
create-app                  | 22:17:18 0|ssr-frontend-create  | warn 2020-11-11T22:17:18.787Z compiled with warnings
create-app                  | 22:17:25 0|ssr-frontend-create  | info 2020-11-11T22:17:25.315Z webpack completed build 58bb5f0435a8be128033 in 77586ms
create-app                  | 22:17:25 0|ssr-frontend-create  | warn 2020-11-11T22:17:25.315Z This can impact web performance.
create-app                  | 22:17:25 0|ssr-frontend-create  | Assets:
create-app                  | 22:17:25 0|ssr-frontend-create  |   create/static/js/main.58bb5f0435a8be128033.js (1.88 MiB)
create-app                  | 22:17:25 0|ssr-frontend-create  |   create/static/js/vendor~core-js.58bb5f0435a8be128033.js (557 KiB)
create-app                  | 22:17:25 0|ssr-frontend-create  |   create/static/js/vendor~main.58bb5f0435a8be128033.js (3.59 MiB)
create-app                  | 22:17:25 0|ssr-frontend-create  |   create/static/js/vendor~react.58bb5f0435a8be128033.js (1.04 MiB)
create-app                  | 22:17:25 0|ssr-frontend-create  | warn 2020-11-11T22:17:25.315Z Entrypoints:
create-app                  | 22:17:25 0|ssr-frontend-create  |   main (7.42 MiB)
create-app                  | 22:17:25 0|ssr-frontend-create  |       create/static/js/main~runtime.58bb5f0435a8be128033.js
create-app                  | 22:17:25 0|ssr-frontend-create  |       create/static/js/vendor~core-js.58bb5f0435a8be128033.js
create-app                  | 22:17:25 0|ssr-frontend-create  |       create/static/js/vendor~lodash.58bb5f0435a8be128033.js
create-app                  | 22:17:25 0|ssr-frontend-create  |       create/static/js/vendor~react.58bb5f0435a8be128033.js
create-app                  | 22:17:25 0|ssr-frontend-create  |       create/static/css/vendor~main.58bb5f0435a8be128033.css
create-app                  | 22:17:25 0|ssr-frontend-create  |       create/static/js/vendor~main.58bb5f0435a8be128033.js
create-app                  | 22:17:25 0|ssr-frontend-create  |       create/static/css/main.58bb5f0435a8be128033.css
create-app                  | 22:17:25 0|ssr-frontend-create  |       create/static/js/main.58bb5f0435a8be128033.js
create-app                  | 22:17:25 0|ssr-frontend-create  | warn 2020-11-11T22:17:25.315Z You can limit the size of your bundles by using import() or require.ensure to lazy load some parts of your application.
create-app                  | 22:17:25 0|ssr-frontend-create  | For more info visit https://webpack.js.org/guides/code-splitting/
create-app                  | 22:17:25 0|ssr-frontend-create  | warn 2020-11-11T22:17:25.315Z compiled with warnings

Looks like the source-map plugin is also causing the dev server to crash after a few saves.
21:04:50 0|ssr-frontend-unified-checkout | <--- Last few GCs --->

21:04:50 0|ssr-frontend-unified-checkout | [117:0x3f29690] 2715730 ms: Mark-sweep 1380.7 (1415.4) -> 1379.9 (1415.9) MB, 564.7 / 0.0 ms (average mu = 0.226, current mu = 0.006) allocation failure scavenge might not succeed

21:04:50 0|ssr-frontend-unified-checkout | [117:0x3f29690] 2716292 ms: Mark-sweep 1380.9 (1415.9) -> 1380.1 (1415.4) MB, 550.2 / 0.0 ms (average mu = 0.156, current mu = 0.021) allocation failure scavenge might not succeed

21:04:50 0|ssr-frontend-unified-checkout | <--- JS stacktrace --->

21:04:50 0|ssr-frontend-unified-checkout | ==== JS stack trace =========================================

21:04:50 0|ssr-frontend-unified-checkout | 0: ExitFrame [pc: 0xc1f616dbe1d]

21:04:50 0|ssr-frontend-unified-checkout | Security context: 0x22468109e6c1 <JSObject>

21:04:50 0|ssr-frontend-unified-checkout | 1: /* anonymous */ [0x133535186db9] [/usr/src/app/apps/unified-checkout/node_modules/source-map/lib/source-node.js:~342] [pc=0xc1f652ba360](this=0x287305c8d461 <GlobalObject Object map = 0x2b57762c06e1>,chunk=0x1ccb64c88531 <String[48]: _actions__WEBPACK_IMPORTED_MODULE_0__["default"]>,original=0x1fcaabe173a9 <Object map = 0xe29168dbc79>)

21:04:50 0|ssr-frontend-unified-checkout | 2: SourceNod...

21:04:50 0|ssr-frontend-unified-checkout | FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory

21:04:50 0|ssr-frontend-unified-checkout | 1: 0x8fb090 node::Abort() [/usr/local/bin/node]

21:04:50 0|ssr-frontend-unified-checkout | 2: 0x8fb0dc [/usr/local/bin/node]

21:04:50 0|ssr-frontend-unified-checkout | 3: 0xb0322e v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [/usr/local/bin/node]

21:04:50 0|ssr-frontend-unified-checkout | 4: 0xb03464 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/usr/local/bin/node]

21:04:50 0|ssr-frontend-unified-checkout | 5: 0xef74c2 [/usr/local/bin/node]

21:04:50 0|ssr-frontend-unified-checkout | 6: 0xef75c8 v8::internal::Heap::CheckIneffectiveMarkCompact(unsigned long, double) [/usr/local/bin/node]

21:04:50 0|ssr-frontend-unified-checkout | 7: 0xf036a2 v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [/usr/local/bin/node]

21:04:50 0|ssr-frontend-unified-checkout | 8: 0xf03fd4 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/usr/local/bin/node]

21:04:50 0|ssr-frontend-unified-checkout | 9: 0xf06c41 v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/usr/local/bin/node]

21:04:50 0|ssr-frontend-unified-checkout | 10: 0xed00c4 v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationSpace) [/usr/local/bin/node]

21:04:50 0|ssr-frontend-unified-checkout | 11: 0x117024e v8::internal::Runtime_AllocateInNewSpace(int, v8::internal::Object**, v8::internal::Isolate*) [/usr/local/bin/node]

21:04:50 0|ssr-frontend-unified-checkout | 12: 0xc1f616dbe1d

21:04:51 0|ssr-frontend-unified-checkout | Aborted

21:04:51 0|ssr-frontend-unified-checkout | error Command failed with exit code 134.```


Feature request: Report promise rejections

It would be greatly helpful if Sentry can report unhandled promise rejections from React Native. They are often caused by hard-to-find bugs.
bugsnag-react-native supports this feature. See documentation:
https://docs.bugsnag.com/platforms/react-native/configuration-options/#handlepromiserejections
And their code:
https://github.com/bugsnag/bugsnag-react-native/blob/660a2352113539f56e82b7cc14becb918c82f825/src/Bugsnag.js#L62-L72

Hey, thanks I will look into this.


update price sheet to crafting values - minecarts and rails

need to update the minecarts and rails and associated items' prices
this will include chests, hoppers, tnt, all furnaces, all the rails, which requires redstone pricing to be checked and setup as formulas

everything except the rails are completed

in order to finish these prices, I had to price redstone, which in turn made me price all the other ores, as below.  I increased gold to (iron x 2) from (iron x 1.75) to make the spread look better.  everything that costs more than iron is priced at iron plus a multiplier (2x, 3x, 5x, 7x), I also modified ancient debris to (ironore x 3).

name
value

coalore
6.00

diamondore
119.00

emeraldore
85.00

goldore
34.00

ironore
17.00

lapisore
85.00

netherquartzore
4.00

quartzore
4.00

redstoneore
51.00


Why the program gets stuck here?

It seems that there is no error here, could you please provide more information about this problem?

Thank you for answering! GPU communication error leads to the issue and I have fixed it.

It seems that there is no error here, could you please provide more information about this problem?

Thank you for answering! GPU communication error leads to the issue and I have fixed it.

It seems that there is no error here, could you please provide more information about this problem?

Thank you for answering! GPU communication error leads to the issue and I have fixed it.

OK~

It seems that there is no error here, could you please provide more information about this problem?

Thank you for answering! GPU communication error leads to the issue and I have fixed it.

I encountered the same problem, how did you solve it?