Unexpectedly found nil while implicitly unwrapping an Optional value

Unexpectedly found nil while implicitly unwrapping an Optional value

"react-native": "0.76.4",
 "react-native-text-input-mask": "^3.2.0",

+1
I confirm that I also encounter this error and cannot build the application.
React Native version 0.76.4

@nathangabriel27
Try it this way, it helped me
    var methodQueue: DispatchQueue {
        return bridge?.uiManager?.methodQueue ?? DispatchQueue.main
    }

@nathangabriel27 Try it this way, it helped me
    var methodQueue: DispatchQueue {
        return bridge?.uiManager?.methodQueue ?? DispatchQueue.main
    }

This fixes the error, but results in unexpected behaviour of application. Sometimes mask is applied and sometimes it doesn't

I can confirm I am also getting this error

Looks like it might be due to the new architecture changes https://reactnative.dev/blog/2024/10/23/the-new-architecture-is-here#new-native-modules


Cleanup after downloader refactor hotfix

This closes #11313 .
Acceptance: test sync and sync update, from URLs and 3rd party services. Keep an eye on Rollbar, you should not see errors regarding the import (if in doubt, ask)

Imported two files via URL and Dropbox, both of them with sync on.
Nothing on Rollbar after importing, forcing sync manually and syncing both documents every hour during all night.
Merging and deploying to produ.


Fix KeyError on ytmusic match album

Closes #60
Thanks for putting this together, saved me $5 from signing up for the online services that offer this. I encountered this KeyError while porting my music and thought I would fix it quickly

Thanks for the fix!


Countdown after "New Game" is tapped

This isn't really an issue but a request. I attempted to add this in to the game but was not able to go down the right path. Since you are more familiar with the project/code files, could you assist in adding a 3, 2, 1, Go! after a user taps the New Game on the main menu. I think the restart icon within the game is fine, but I think it would be nice to give a heads up when the game is initially about to start.
As always, thank you very much!!

Hi @damathews,
I think that the easiest way to that would be creating a NSTimer for that...
So, inside your  BEENewGameView.m file line 64 you can rename the function createNewGameWithParentScene: to startNewGameWithParentScene: in this way:
- (void) startNewGameWithParentScene:(SKScene *)parent
{
    [BEESessionHelper sharedInstance].currentScreen = BST_GAME;
    [BEESessionHelper sharedInstance].userScore = 0;
    [BEESessionHelper sharedInstance].isGameOver = NO;

    SKLabelNode *backLabel = [self createLabelWithParentScene:parent keyForName:@"back"];
    [self setLabelNode:backLabel position:CGPointMake(backLabel.frame.size.width / 2 + 10, parent.size.height - backLabel.frame.size.height - 10)];

    pointLabel = [SKLabelNode labelNodeWithFontNamed:[[BEESessionHelper sharedInstance] getLocalizedStringForName:@"font_style"]];
    pointLabel.fontColor = [SKColor blackColor];
    [parent addChild:pointLabel];
    [self setLabelNode:pointLabel position:CGPointMake(CGRectGetMidX(parent.frame), parent.size.height - backLabel.frame.size.height - 50)];
    pointLabel.fontSize = 80;

    __weak BEEPlayer *player = [BEEPlayer playerWithParent:parent];
    if (parent.size.height < 500)
    {
        player.yScale = 0.25;
        player.xScale = 0.25;
    }
    else
    {
        player.yScale = 0.35;
        player.xScale = 0.35;
    }

    [self.objArray addObject:player];

    __weak SKLabelNode *weakScoreLabel = pointLabel;
    [self.objArray addObject:weakScoreLabel];
}

Above that new function (as you still need to implement the function createNewGameWithParentScene:) you would redeclare the createNewGameWithParentScene: as following:
- (void) createNewGameWithParentScene:(SKScene *)parent
{
  if ([parent isKindOfClass:[GameScene class]])
  {
      self.parent = (GameScene *)parent;
       __weak BEENewGameView *weakSelf = self;
      [self.parent resetTimerDelegate];
      [self.parent.timerDelegateArr addObject:weakSelf];
  }

  // here it will fire from 1 to 1 second.
  NSTimer *myTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerDidFire:) userInfo:nil repeats:YES];
}

- (void) timerDidFire:(NSTimer *)timer
{
    self.counter -= 1; // self.counter is a global variable that starts with 3 (seconds), for example...

   // here you can show 3...2...1...go, depending on the self.counter var...

  if (self.counter == 0)
  {
     // reinitialize the self.counter var (in case that the user dies)
     self.counter = 3;
     [timer invalidate];

     // here you would call the function startNewGameWithParentScene:
     [self startNewGameWithParentScene:self.parent];
  }
}

I think that this should help.. if not, reach out to me again.
Thanks,
Luiz.

The last part received errors. Do I need to add an implementation or a Property?

Sorry, I thought the errors would have shown up in the screenshots.
Warning appeared under "// here it will fire from 1 to 1 second."
Errors appeared on "self.counter -= 1", " if (self.counter == 0)", and "self.counter = 3;"

Hi @damathews,
yeah.. you will need to implement a property called counter. Inside the same file, add it on line 24, as following:
@interface BEENewGameView ()

@property (nonatomic) NSMutableArray *objArray;
@property (nonatomic) NSArray *playerArray;
@property (nonatomic, weak) GameScene *parent;
@property (nonatomic) NSMutableArray *monsterArray;
@property (nonatomic) NSInteger count;

@end

Then, you will need to initialize it... so, inside the function createNewGameWithParentScene:, please add an initialization for it as:
- (void) createNewGameWithParentScene:(SKScene *)parent
{
  if ([parent isKindOfClass:[GameScene class]])
  {
      self.parent = (GameScene *)parent;
       __weak BEENewGameView *weakSelf = self;
      [self.parent resetTimerDelegate];
      [self.parent.timerDelegateArr addObject:weakSelf];
  }

  self.counter = 3;

  // here it will fire from 1 to 1 second.
  NSTimer *myTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerDidFire:) userInfo:nil repeats:YES];
}

It should work now... :)
Luiz.

One more thing is... you can even take the initialization of the property self.counter off (we can do it because now we are reinitializing inside the method createNewGameWithParentScene:) the method timerDidFire as below:
- (void) timerDidFire:(NSTimer *)timer
{
    self.counter -= 1; // self.counter is a global variable that starts with 3 (seconds), for example...

   // here you can show 3...2...1...go, depending on the self.counter var...

  if (self.counter == 0)
  {
     [timer invalidate];

     // here you would call the function startNewGameWithParentScene:
     [self startNewGameWithParentScene:self.parent];
  }
}

I will have to work with it more this weekend. The Timer is not being recognized so it does not show up at the start of the game, but it does delay 3 seconds. The error is at NSTimer *myTimer

Hi @damathews,
in fact there were some small problems... that happened because I only wrote the code in "my mind"... Now I tested on my Xcode, and so I generated a Gist for you.
Please see the code here

That's awesome. Thank you for your help. The timer works but it is not
being displayed. It's not really a big deal, but is this due to the
__Unused variable of
__unused NSTimer *myTimer = [NSTimer scheduledTimerWithTimeInterval:1.0
target:self selector:@selector(timerDidFire:) userInfo:nil repeats:YES];
On Thu, Apr 28, 2016 at 4:59 PM, Luiz Fernando Peres <
<EMAIL_ADDRESS>wrote:

Hi @damathews https://github.com/damathews,
in fact there were some small problems... that happened because I only
wrote the code in "my mind"... Now I tested on my Xcode, and so I generated
a Gist for you.
Please see the code here
https://gist.github.com/luizperes/7c4c34c0198e4949cb5d62f1b3e14fef
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
https://github.com/cornerstonecollege/beezy-bee/issues/11#issuecomment-215560659

Hi @damathews,
for that, you will need to have the countdown images (or make it using SKLabel)... I did not implement it because we do not have them in our project...
I think that you would show the new node inside the timerDidFire:...
try to find the line that has the comment: // here you can show 3...2...1...go, depending on the self.counter var...
There is a tutorial here for that... (I did not test it)
Thanks,
Luiz.

That's fine. I will work on it. Thank you so much for your help adding in
the code. That was really awesome!
On Thu, Apr 28, 2016 at 6:38 PM, Luiz Fernando Peres <
<EMAIL_ADDRESS>wrote:

Hi @damathews https://github.com/damathews,
for that, you will need to have the countdown images (or make it using
SKLabel)... I did not implement it because we do not have them in our
project...
I think that you would show the new node inside the timerDidFire:...
try to find the line that has the comment: // here you can show
3...2...1...go, depending on the self.counter var...
There is a tutorial here
https://makeapppie.com/2014/04/10/slippyflippy-1-1-how-to-make-a-countdown-timer-in-sprite-kit/
for that... (I did not test it)
Thanks,
Luiz.
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
https://github.com/cornerstonecollege/beezy-bee/issues/11#issuecomment-215583809


AnalogControlContinued-2.1.3.ckan contains wrong KSP version information

Please correct the following data in the AnalogControlContinued-2.1.3.ckan:
"ksp_version_min": "1.2.2",
"ksp_version_max": "1.3.0"
I guess because of this CKAN installs version 2.1.3 into KSP 1.2.2, which is wrong.
Correct metadata should be:
"ksp_version": "1.3.0",

This is happening because the AnalogControlContinued.version file shipped in the archive says 1.2.2.
Pull request to fix that: https://github.com/SerTheGreat/Analog-Control-continued/pull/1

Even if that is merged, it won't fix the .ckan file we have, I fear. Thus ^^


elements-angular: Evaluate standalone mode

Description
Angular now offers a standalone components approach as an alternative to the NgModule approach. Evaluate the feasibility and benefits of transitioning our Angular components to this new standalone format.
Key Considerations:

Assess the advantages of adopting standalone components in terms of development workflow, maintainability, and potential performance improvements.
Evaluate how the standalone components approach enhances the experience for consumers of our Angular components. Consider factors such as ease of integration, reduced dependencies, and improved flexibility.
Investigate whether Stencil, our component compiler, provides a seamless way to export components as standalone
Will our current InoElementsConfig still work with this new approach?

Acceptance Criteria

Provide a comprehensive report summarizing the benefits and drawbacks of adopting standalone components in Angular.
Formulate a clear recommendation on whether to transition to standalone components based on the evaluation.
If recommended, outline the steps and considerations for implementing standalone components. This should include any necessary updates to our Angular and Stencil configurations.

Evaluation of providing standalone mode for Angular

Stencil provides an export mode for standalone components

requires additional output target: dist-custom-elements

InoElementsConfig is supported but needs an extra provider export
Required a copy of all @Directive to set the standalone property

To reduce code duplications we can add a mew layer for shared code

The behavior of assets loading like icons changed

assets not copied to output automatically
assets loaded dynamically via assets path
might be a problem when integrate it

Beside this. when we provide this new approach following things we have to update:

Our integration guide
Add a migration guide to standalone mode

Mostly we can adapt from Ionic Framework

Draft PR for implementing standalone mode: https://github.com/inovex/elements/pull/1242

see resulted task in #1274 and #1274


Need maintainers for each topic

Hi,
We need one or two maintainers for each topic.
A maintainer acts as editors. She is responsible for making sure issues and change requests are looked at. She has the final say over what is included in the training material related to the topic. But, she is not responsible for writing training material content or deciding what lessons ought to exist, both coming from the community.
Are you interested? Do not be shy, everyone can do that :)
Please, answer this issue with your name, your email and the topic(s) you want to maintain
I will keep a track of all propositions (even if there is more than 2 persons for a topic):

Admin-corner

Hans-Rudolf<EMAIL_ADDRESS><EMAIL_ADDRESS>

NGS-QC<EMAIL_ADDRESS>NGS-mapping
ChIP-Seq

Friederike Dündar

Dev-Corner
Exome-Seq
Genome-Annotation
Galaxy Introduction
MethylC-Seq
RNA-Seq

Friederike Dündar

Thanks a lot,
Bérénice

I am happy to look after the 'Admin-corner'
Hans-Rudolf
<EMAIL_ADDRESS><EMAIL_ADDRESS>

Thanks :)
I added you

I can do ChIP-seq (and RNA-seq if needed)

For me it would be a pleasure to maintain the NGS-QC section =)
Markus Wolfien
<EMAIL_ADDRESS>

Thanks Markus! I added you! I guess we will the maintainers tm to the readme file of each training.

Hi everyone, what about adding a RAD-seq section topic ? If you think this is of interest, I can be a maintainer.

I will do stuff around the dev-corner

Hi Yvan. Feel free to add it this topic. I add you as possible maintainer.

@lecorguille I added you as possible maintainer

I will start working on bgruening/training-material/issues/59 = RNASeq assembly

I started filling the AdminCorner/Database_schema slide with content from the tutorial.

The conversation was restarted in #489


Mac: Watcher fails on folders with glob characters in name

VSCode Version: 0.10.11
OS Version: OS X 10.10.5 Yosemite

I don't know how to reproduce it, but a jsconfig.json file that was created on a plugin activation script didn't appear on VS Code, yet it did appear when I run ls on the folder.
After I went to the workspace settings in VS Code, something refreshed, and the file finally appeared.

I think it might be related to a folder name. Try this on a workspace on a folder:
/Users/workspaces/tests/myNewApp% $$ @! Tabs app/testsblah/ (This is a valid folder on my Mac)

This is: https://github.com/paulmillr/chokidar/issues/300

Would it be possible to automatically escape glob characters, so this would work as expected as in, instead of asking to watch:
/Users/workspaces/tests/myNewApp% $$ @! Tabs app/testsblah/
ask to watch something like:
/Users/workspaces/tests/myNewApp% $$ @! Tabs app/testsblah/
If this is not supported, could you at least show a warning when this happens:

Sorry, but VS Code doesn't work well with this folder because etc.... So the user will understand what's happening?

+1 for a warning, the escaping needs to be supported in chokidar

Still not working with these steps:

Open a folder named myNewApp% $$ @! Tabs app
Run echo "hi" > foo.txt in the terminal to create a file foo.txt
It doesn't show up in the file explorer until I press Refresh

If I do the same steps in a folder without special characters, the file shows up in the explorer right away.

Works for me, what are you doing differently?

Ok, that scenario works when I open the parent folder of 'myNewApp ...'. It doesn't work when I open 'myNewApp' itself. Should it?

Confirmed, reopening.

We should get rid of chokidar...

...we did.


It loads all images!!

I tried it and works good enough.
issue. There are 12 images in gallery, but it somehow counts images as 16 and loads even the logo in litebox. How can I avoid loading other images from the same page ?

Do you have a large range of css selectors, try a more precise selector that only select images in gallery
new ImgPreviewer(css selector,{options...})


Cleanups when dropping Django 1.6

When to do so hasn't been decided yet.

[ ] setup.py: Python 2.6 classifier and minimum Django version (south also?)
[ ] from __future__ import with_statement (for Python 2.6)
[ ] Replace SortedDict with collections.OrderedDict (need Python 2.7 min.)
[ ] cms.test_utils.compat (skipIf unittest2 stuff) (need Python 2.7 min.)
[ ] Usage of cms.utils.compat.DJANGO_1_6
[ ] Replace from django.utils.importlib with importlib (need Python 2.7 min.)

South can be removed when 1.6 will be dropped
Thanks for this great todo list

aggregated in https://github.com/divio/django-cms/issues/4580


TensorRT doesn't find Loras from subdirectories

As mentioned in the title, when trying to convert Loras into TensorRT format via TensorRT tab, in the dropdown where one is supposed to select the Lora, only Loras from the models/Lora directory are available for selection, and none from the subdirectories under that directory.
Without directories for organization, Lora management becomes very inconvenient.

Same issue here. Any fixes or workarounds?


wire pstake liquid-staking cosmos module.

1. Overview
wires

persistence-sdk/epochs
persistence-sdk/ibchooker
persistence-sdk/interchainquery
pstake-native/lscosmos

2. Implementation details

app wiring
ibchooker is wrapper around ibc-transfer
lscosmos is auth module for ica controller
lscosmos implements epoch hooks, ibchooker hooks.
lscosmos implements interchainquery callbacks

3. How to test/use

do txns of the modules
test upgrade

4. Checklist

[ ] test Upgrade works
[ ] All transactions work and are as expected
[ ] tag persistence-sdk
[ ] remove pstake-native "replace" in go.mod after it is opensourced and tagged
[ ] cleanup

5. Limitations (optional)

adding secondary auth module will be a little different

6. Future Work (optional)

closes #119


Prometheus feature native-histograms breaks targets with info metric types from being scraped.

I was updating fluxv2 and using this repo as a template, but i noticed in prometheus, that the kube-state-metrics target was showing the error "invalid metric type "info".  After some some local testing with a fork of the repo, I'm finding the native-histograms feature of prometheus seems to cause the problem. I have a branch here for testing this out.
https://github.com/defenestration/flux2-monitoring-example/tree/native-histograms
Heres a pr with the diffs from this repo from when i forked it if it helps https://github.com/defenestration/flux2-monitoring-example/pull/1/files
Realize this is probably an upstream issue, but wondering what the best work-around for this could be? Seems like the custom metric types may be best if set as Gauge instead perhaps?
I will continue to look on my own but figured it was worth filing an issue in case someone else had this problem too.

Seems like simply switching to Gauge type produces an error on kube-state-metrics:
E1121 19:38:35.721442       1 discovery.go:214] "failed to update custom resource stores" err="failed to create metrics factory for kustomize.toolkit.fluxcd.io_v1_Kustomization: resource_info: compiling metric: expected each.gauge to not be nil"

I was able to setup the gauges after looking at the kube-state-metrics docs
And have setup gauges based on the following.
https://github.com/defenestration/flux2-monitoring-example/blob/c7b36deb6cd53b0a857636e2f6db1d774823ca11/monitoring/controllers/kube-prometheus-stack/kube-state-metrics-config.yaml
The metric name is changed to gotk_resource_status since not sure it is 1:1 with the suggested alerts in the flux 2.1 docs.


WIP Enabling Flutter Gold on Luci

Description
This will enable Skia Gold testing on the Luci CI environments.
This will allow us to run golden file tests on luci for the framework as well as driver tests.
Status: Gold needs to be updated to support multiple CIs.
Related Issues
Fixes #49749
Fixes #49837
Related to: #49750
Tests
Added authentication tests for luci environment, as well as validation for comparator selection.
Checklist
Before you create this PR confirm that it meets all requirements listed below by checking the relevant checkboxes ([x]). This will ensure a smooth and quick review process.

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[x] I signed the CLA.
[x] I read and followed the Flutter Style Guide, including Features we expect every widget to implement.
[x] I read the Tree Hygiene wiki page, which explains my responsibilities.
[x] I updated/added relevant documentation (doc comments with ///).
[x] All existing and new tests are passing.
[x] The analyzer (flutter analyze --flutter-repo) does not report any problems on my PR.
[x] I am willing to follow-up on review comments in a timely manner.

Breaking Change
Did any tests fail when you ran them? Please read Handling breaking changes.

[x] No, no existing tests failed, so this is not a breaking change.

FYI @kjlubick and @blasten
This is still a work in progress. I need to validate a number of things first (marked with TODOs), and update the  recipe to have goldctl available first.

The luci recipes have been updated to contain goldctl, I've added the CQ+1 label to try executing a tryjob on luci. This is ready for review. :)
fyi @dnfield

Gold ingestion has not been updated to support multiple CIS (yet), mostly due to flu-like symptoms. Maybe Tuesday or Wednesday

Gold ingestion has not been updated to support multiple CIS (yet), mostly due to flu-like symptoms. Maybe Tuesday or Wednesday

Silly me! 🤦♀ I thought I was forgetting something. Get well soon!

Gold has the multiple CIS feature in production.

This is waiting for the luci configuration, and then the recipe, to be updated.

@cyanglaz and @blasten this is about ready to land. The expectation for driver tests needs to be decided. Since these tests are only run on post-submit, do you want the tree to turn red when a change lands? Feel free to share thoughts here.

@Piinks Great to hear! If the tree turns red and we approve the golden update, will the CI run again immediately? If so, I think the tree should turn red when a change lands.

@Piinks Great to hear! If the tree turns red and we approve the golden update, will the CI run again immediately? If so, I think the tree should turn red when a change lands.

If it's a devicelab test on https://flutter-dashboard.appspot.com/#/build it will not re-run automatically, but there is a button that can be clicked to re-run the check.
You could possibly implement a method in your test like in https://github.com/flutter/cocoon/pull/651, where instead of reporting a failure the test waits for triage to be completed, and sends a notification to let the author know.  Right now I don't know what that would require to complete, so we could plan to make that a follow up change.
WDYT?

@Piinks That sounds good!

@Piinks That sounds good!

Which one sounds good? 😆

oops, both sound good. I assume option 2 will take some time to happen? We can start with option 1.

Option 2 could be implemented in your test, after it returns you can check to see if Gold found changes. But we can touch base on that after this lands and when you are prepping your follow up change. :)
I am going to see about landing this on Monday. I will have to add a patch to cocoon to make sure the new gold check keeps both CIs in sync (that was my last concern here since we don't run luci jobs on every PR).

This is ready for review.
@cyanglaz I removed the ability for it to turn the tree red on master. We can implement this in the actual driver test use case, or make that change later. Currently there are other conditions where it may turn the tree red when we don't want it too, like when Cirrus denies decrypting the service account for first time contributors. That will not be an issue once we are off cirrus and running tests solely on luci. 😉


WRF Job Data Model

Describe the New Feature
Write code to save and manage WRF jobs submitted to the system for processing.
Define WrfJob data fields.
Save data in DynamoDB.
Implement CRUD operations for WRF jobs.
Write unit tests to provide good code coverage.
Acceptance Testing
Run unit tests with pytest.
Time Estimate
8h
New Feature Checklist

[ ] Complete the issue definition above, including the Time Estimate and Funding source.
Branch name: feature_<Issue Number>/<Description>
[ ] Complete the development and test your changes.
[ ] Add/update log messages for easier debugging.
[ ] Add/update tests.
[ ] Add/update documentation.
[ ] Push local changes to GitHub.
[ ] Submit a pull request to merge into develop.
Pull request: feature <Issue Number> <Description>
[ ] Define the pull request metadata, as permissions allow.
Select: Reviewer(s), Project, and Development issue
Select: Milestone as the next official version
[ ] Iterate until the reviewer(s) accept and merge your changes.
[ ] Delete your fork or branch.
[ ] Close this issue.

Closed with #59


Add yarn scripts for watching individual platforms for GUI connectivity example app

On my development workflow, I don't have Xcode installed (Ubuntu) and I am just building for android.
In package.json file in shared_backend directory, there's a line that says:
"build": "concurrently 'yarn:build:*' --kill-others-on-fail",
The --kill-others-on-fail flag sends a SIGTERM signal to other processes if one build process fails. Since I don't have Xcode installed, the following build process fails:
"build:ios": "gomobile bind -target ios,iossimulator -o output/SharedBackend.xcframework github.com/Jigsaw-Code/outline-sdk/x/examples/outline-connectivity-app/shared_backend",
This causes the other processes, including build:android to get killed.
As a result, the SharedBackend.aar &  SharedBackend-sources.jar files don't get generated.
Please see the yarn log below:
[shared_backend]: [ios] gomobile: -target="ios,iossimulator" requires Xcode
[shared_backend]: [ios] yarn run build:ios exited with code 1
[shared_backend]: --> Sending SIGTERM to other processes..
[shared_backend]: [android] yarn run build:android exited with code SIGTERM
[shared_backend]: [nodemon] app crashed - waiting for file changes before starting...

In Android Studio, the following error is thrown:
Null extracted folder for artifact: ResolvedArtifact(componentIdentifier=SharedBackend.aar, variant=local file, variantName=null, artifactFile=/home/amir/ICFP/outline-sdk/x/examples/outline-connectivity-app/shared_backend/output/SharedBackend.aar, isTestFixturesArtifact=false, extractedFolder=null, publishedLintJar=null, dependencyType=ANDROID, isWrappedModule=false, buildMapping={__current_build__=/home/amir/ICFP/outline-sdk/x/examples/outline-connectivity-app/app_mobile/android})

Potential solution
I tried removing the --kill-others-on-fail flag and it seemed to work. I am not sure about the repercussions of this and whether there's a better solution.

BTW, I am not able to choose Labels for issues. IMHO it would be helpful to setup a GitHub Porject for Connectivity GUI App (and potentially other SDK related sub-projects) so that relevant issues can be assigned to the right Project. Using Projects can also help with feature/milestone planning, organized under Project tab.

This PR addressed this issue
https://github.com/Jigsaw-Code/outline-sdk/pull/108
Thanks @daniellacosse :pray:


Central test area datastore repository

We need an efficient way to store and access a test area datastore. A test area datastore is essential to efficient development and testing of modules since most modules need to use data that is in a datastore. Currently I've been including two datastores in the 'test' directory of each package. In an 'initial_datastore' directory is a datastore with initial conditions. In the main directory is a datastore with the final conditions (after all package modules are run). The final datastore is then copied to the 'initial_datastore' folder for the next package being worked on. This results in a lot of duplicated data. It would take less space and perhaps be more efficient and less error-prone to read in the datastore.h5 file from the 'VERSPM' directory. This should be updated with the latest successful run of VERSPM. Might be good to have some functions to facilitate this and using the datastore in module testing.

This would require keeping a copy of the 'datastore.h5' file in the directory which we don't do now. It might also be good to keep a copy of the 'ModelState.Rda' file. This file makes it easier to read from the datastore. Having the test datastore would also be good for testing output and visualization functions and scripts.

Once VERPAT and VERSPM are complete, the output datastore would be a great resource for developing new modules.

this might be a good task for the pooled funds

I created a centralized datastore for VE-State test data in the sources/modules/Test_Data directory. The main reason for doing this now is that there is a lot of redundancy in storing test datastores in each of the module packages. While this isn't a problem for small test areas, it becomes a big problem for a large model area. I've altered the module test code in the VE-State modules so that it reads from and writes to this centralized datastore. It is a simple thing to do. This also advances the project towards the goal of creating centralized datastores that can be used for new module development and for regression testing. It would be simple to convert VE-RSPM and VE-RPAT datastores to centralized repositories as well since only some small changes to the test scripts are needed.
It would be a good idea to keep copies of all the def and input files for the test dataset in the same area to ensure replicability.

A trimmed down test will be needed for VE-State. The current test using Oregon data for 2010 and 2040 produces a datastore that is too big for GitHub.

Moving issues here - https://github.com/VisionEval/VisionEval-Dev/issues


async streaming methods on hub

Versions of Server-Side NuGet Packages:

Microsoft.AspNetCore.SignalR 1.0.0-preview1-final

Versions of Client-Side NuGet/NPM Packages:

<EMAIL_ADDRESS>

Are you using the C# client or the JavaScript client:

JavaScript

The Server you are using (Kestrel/HttpSysServer/IIS/IIS Express/Azure Web App/etc.):

Kestrel

The Operating System on the Server (Windows/Linux/macOS):

Windows

The Operating System on the Client (Windows/Linux/macOS):

Windows

The Browser on the client, if using the JavaScript client (IE/Chrome/Edge/Firefox/etc.):

Chrome

I was messing around with a typical ChatHub demo. On my hub class, I've defined a streaming method that returns a ChannelReader and an async non-streaming method that writes the passed argument to the channel. Things are working great.
Now, I had the idea to update the streaming method to return Task<ChannelReader> to make my hub interface more consistent for clients. However, this causes the following error:
Error: The client attempted to invoke the non-streaming 'StreamMessage' method in a streaming fashion.

Does SignalR really not support async streaming methods, or am I overlooking something obvious?
public class ChatHub : Hub
{
    private static Channel<string> s_channel = Channel.CreateUnbounded<string>();

    public async Task<ChannelReader<string>> StreamMessage()
    {
        await s_channel.Writer.WriteAsync("hello subscriber");

        return s_channel.Reader;
    }

    public async Task UpdateMessage(string message)
    {
        await s_channel.Writer.WriteAsync(message);
    }
}

This was fixed after preview1, if you want to try it out you can grab the latest dev bits https://github.com/aspnet/Home#daily-builds

Will this be available in the 2.1 stable release?

Of course!

Closing this as the issue has been resolved in the upcoming release.

@BrennanConroy, I thought about this some more and I'm not sure returning a Task<ChannelReader<>> makes sense. It seems like the caller might want the reference to the reader immediately in order to start listening for messages rather than wait on that reference while the server waits on data to write to the channel.

Consider the following streaming method:
public async Task<ChannelReader<string>> GetChatChannel()
{
    string chats = await GetRecentChatsAsync(); // takes a long time

    // everything below is continued once the task above completes
    var channel = Channel.CreateUnbounded<string>();

    await channel.Writer.WriteAsync($"Recent: {chats}");

    return channel;
}

Does this mean the caller of this method will have only a Task<ChannelReader<string>> for a "long time" until the recent chats are returned? In other words, the caller will not have a ChannelReader<string> to read current chats until after the recent chats are written to the channel?

The method you wrote could just as easily return a List<string>, you're not using the ChannelReader for asynchrony at all. You use a ChannelReader when you want to emit items as they arrive.
However, you bring up a good point. Consider this code:
public async Task<ChannelReader<string>> GetChatChannel()
{
    var channel = Channel.CreateUnbounded<string>();
    var message = await GetNextMessage(); // takes a long time
    await channel.Writer.WriteAsync(message);
    message = await GetNextMessage(); // takes a long time
    await channel.Writer.WriteAsync(message);
    message = await GetNextMessage(); // takes a long time
    await channel.Writer.WriteAsync(message);

    return channel;
}

That would result in the client waiting a long time, then getting all three messages immediately after (defeating the purpose of using a Channel). Since you didn't return the channel until the very end, it was filled up with messages before the server got the Reader in order to consume them. You'd want to kick off a background processor. Imagine you had some async work to do in order to set up for streaming, any then you wanted to stream messages as they arrived. Something like this would be closer to what you want:
public async Task<ChannelReader<string>> GetChatChannel()
{
    // Do some async things that must finish before ANY messages can be returned
    var userInfo = await GetUserInformationFromDatabase();

    var channel = Channel.CreateUnbounded<string>();

    // Kick off a background thing, but don't wait for it.
    _ = Task.Run(async () => {
        try {
            while(HasMessagesToStream(userInfo)) {
                await channel.Writer.WriteAsync(await GetNextMessage(userInfo));
            }
        } finally {
            // If you don't do this, the client will never realize the stream has ended!
            channel.Writer.Complete();
        }
    });

    // Return the read end of the channel to SignalR so it can pump items to the client.
    return channel.Reader;
}

(I would avoid using a Task.Run right there but it illustrates the point. In practice I'd suggest using a DI service or other component that can track and log the lifetime of these "streamers")

Interesting. Once channel.Writer.Complete() executes, how will messages that arrive later be handled? Does the client have to periodically invoke the GetChatChannel() to stay up-to-date with new streams? I was planing to keep the channel writer alive for the lifetime of the service. Are you suggesting in your code example that this would be a bad idea? What would be wrong with never ending the stream?

Interesting. Once channel.Writer.Complete() executes, how will messages that arrive later be handled?

They wouldn't be, if you need it to be alive then don't complete it.

Does the client have to periodically invoke the GetChatChannel() to stay up-to-date with new streams?

No, that's not a thing, you could build that into your own protocol though.

I was planing to keep the channel writer alive for the lifetime of the service. Are you suggesting in your code example that this would be a bad idea? What would be wrong with never ending the stream?

That's fine, nothing is wrong with that the lifetime. I'm wondering if there's any quirk with returning the same channel for everyone (multiple producers) /cc @stephentoub . You may want to use an IObservable here.

@davidfowl when you say "multiple producers" are you referring to the GetChatChannel and SendChat methods using the same writer? Or were you thinking that I was returning the channel to the caller and every caller had access to the writer? Note that the return type of the GetChatChannel method is a ChannelReader as there is an implicit conversion happening there.

Sorry, I meant multiple consumers not producers


Pin cargo-platform to 0.1.5 in zkvm-methods-std

An increased minimum required Rust version in the cargo-platform dependency has broken builds of the release-0.18 branch. As a result, PRs changing the website (e.g. https://github.com/risc0/risc0/pull/1314) as stuck since CI requires doc tests to be run against the release-0.18 branch.
This PR addresses this issue by updating the Cargo.lock file for risc0-zkvm-methods-std, and checking in that file. This matches how Cargo.lock is handled for risc0-zkvm-methods-guest, which is the no-std sibling of this package.

It looks like a number of unrelated issues exist in trying to run CI against release-0.18 at this point. Do we want to fix these issues, or do we want to merge this without CI checks?


Fix mypy issues in knapsack

We solve issues in knapsack found by
mypy discrete_optimization/knapsack

(essentially lack of typing or mistyping, or None not properly handled)
and other issues more generic (impacting other packages) highlighted by mypy errors in knapsack, essentially lack of return types.

LGTM, typing completed for all knapsack and other side modules.


Disable in responsvie

Hello!
This plugin sometime create problem in responsive design, and it is not needed in some case in responsive design.
So, It would be great if there were any option to disable it in responsive design.

Hi,
Currently, you can try to use destroy method to remove sticky effect.
element.stickit('destroy');

Hi,
You can use screenMinWidth and screenMaxWidth option in v0.2.0 for RWD now.
Please try it.

I use this:
    aside.stickit();

    $(window).on('load resize', function() {
        if ($(this).width() < 768) {
            aside.stickit('destroy');
        }
    });

Yes, you can use @rorc 's solution before v0.2.0.
If we can fix your problem, please close this issue, thanks.


feat: Add BSP package support for the ISM330 IMU on the DotBot and minimote

fixes #172

And you still have issues reported with the style check. You can run make format (requires a Linux or Mac computer). Maybe that can work on windows via WSL or MSYS shells.


Consider using chg rather than hgweb for getting hg logs and/or arbitrary hg commands

https://wiki.mercurial-scm.org/CHg is a Mercurial client written in C to avoid paying the startup cost of Python processes every time. On first run, it launches a Mercurial command server in the background (paying the Python startup cost once), but on future runs, it communicates with the still-running command server over Unix domain sockets. It's part of the standard Mercurial Debian package, not a third-party extension.
It might be possible to speed up retrieving Mercurial logs (for train-track graphs) quite a bit by replacing hgweb with a very simple server that listens on a TCP port and runs chg (command-line), passing the results back as an HTTP response. That would also make it easy to run arbitrary commands that hgweb doesn't provide, for example to allow rolling a project back to an earlier revision (chg clone -r rollback_target repo new_dir && mv repo backup_dir && mv new_dir repo).

This was implemented as part of #511.


Add check to override user lang choose if LOCALES is disabled

Refactored, add check and tests

CI: No security warnings found

CI: No security warnings found

CI: No security warnings found

CI: No security warnings found


🔧  chore(docs): Checkbox Storybook Page is broken

Current Behavior
https://design.baloise.dev/?path=/docs/components-form-checkbox--documentation
Expected Behavior
Failed to fetch dynamically imported module: https://design.baloise.dev/assets/bal-checkbox-ByyA2JXN.js
TypeError: Failed to fetch dynamically imported module: https://design.baloise.dev/assets/bal-checkbox-ByyA2JXN.js
Steps to Reproduce

Go to https://design.baloise.dev/?path=/docs/components-form-checkbox--documentation

Version
16.1.0
Browsers
No response
Device
No response
Code Reproduction URL
No response
Additional Information
No response
Code of Conduct

[X] I agree to follow this project's Code of Conduct

This looks like a storybook issue. Component seems to work fine therefore I close this issue


add dustmite based input minimizer

Before approving this MR, please play around a bit with the script. I want to make this as easy as possible to use.

I haven't played around with this yet, I recommend running shellcheck on all these scripts though. Also, is it possible to relax the bound on minimize.sh so that it doesn't require the 2nd and 3rd args to be quoted?

I'm essentially looking for something like a variadic argument in bash. $@ looks like it could do the job. Am investigating it while resolving the above comments.

"$@" sounds right, make sure you quote it.

It was $* (shellcheck helped there!)

I keep finding small errors. Hope you don't mind me not putting these in extra commits.

You may also want to add a helper script with cargo run --quiet -- --color never --max-errors 0 so you don't have to retype it for every condition.

You may also want to add a helper script with cargo run --quiet -- --color never --max-errors 0 so you don't have to retype it for every condition.

Not quite sure this is a good idea as it would either be in the conditions folder but not actually be a condition, or it would be next to minimizer.sh, further polluting the nice and clean setup. Debatable though, depends on where you want to put that helper.

it would be next to minimizer.sh, further polluting the nice and clean setup

I think this is fine, there's only 3 files there currently and we could make the script non-executable so it's even more clear. The main reason I want it is to reduce the maintenance burden if we ever change the way we run rcc.


No context in custom fetch code file in case of graphql handler

Describe the bug
In case of graphql handler if you pass custom fetch ( Path to a custom W3 Compatible Fetch Implementation), the context is not there.
code in yml file
- name: MyAPI
    handler:
      graphql:
        endpoint: https://some-endpoint/graphql
        schemaHeaders: ./src/schema-header/cmt-schema-header#schemaHeader
        customFetch: ./src/auth.js

code in ./src/auth.js

module.exports = function (url, args, context) {
    return import('node-fetch').then(({ default: fetch }) => {
        console.log("auth  args == ",  args);
        console.log("auth  url == ",  url);
        console.log("auth  context == ",  context);
        if(context && context.headers && context.headers.authorization){
            console.log("auth context.headers == ", context.headers);
            args.headers['Authorization'] = context.headers.authorization;
        }

        return fetch(url, args)
    }).catch(err =>{
        console.log("Error in auth.js fetch event");
        console.log(err);
    });
}

There should be context with all header and info as it is in for openapi handler but in actual I am receiving context as undefined

Why do you think third argument should be context?
Fetch is not responsible of GraphQL execution. It is seperate from GraphQL execution.

@ardatan So in the case of graphql handler we will never get context but in the case of openapi handler we will get right? if yes then I am not sure what else we can do with this cusomeFetch in graphql. In documentation same key is present in both openapi as well as graphql so I thought it is the same for both.

If you feel like this is not an issue, then please close this.

I have the same problem (with @graphql-mesh/graphql@0.20.0).
I'm receiving undefined not only at build time, but also when I exec GraphQL queries.

Hi!
Sorry but I'm not adding a lot here but just labeling it according to our new Contribution Guide and issue flow.
It seems already got into stage 0.
Now in order to advance to stage 1 we'll need a simple reproduction, maybe in code-sandbox?
Later to progress to stage 2, a failing test would be needed, would be great if someone could help progress the issues through the stages.
Thank you and sorry that this comment is not a complete solution (yet).

Closing this issue for now. Feel free to create a new one with a clear and minimal reproduction.


Different quiz show

I am trying to configure this for the "Cashshow," but I can't find the bearer token or user ID. I can only find user ID and device ID. I tried to configure it for another app that I could find a bearer token and user ID for and I was able to get it to work.

If there isn't a bearer token then maybe you can just open a connection to the WebSocket without using authorization. Try it.


[Feature Request] Support for looping with metadata tags (i.e. loopStart, loopEnd)

Would it be possible to implement looping audio similar to vgmstream, where tags for loopStart and loopEnd are stored in the track metadata?
vgmstream seems to have standardized ways for reading/adding loop points in OGG, WAV and FLAC files. (It also makes it pretty easy to convert from ADX into one of these other formats preserving the loop metadata.)
(While this is similar to #8 and #38, from what I can tell Outrun 2 SP on PS2 just has really really long audio files, which sucks for things like the Steam Deck with limited storage space if you want higher quality.)

Got something added to our flac reader for them, only tested it minimally but seems to be working fine.
I guess maybe the game should be able to turn off looping once you reach the final area though? Not really sure how to handle that yet, didn't actually see anything in Lindburgh that did anything like that...

Got something added to our flac reader for them, only tested it minimally but seems to be working fine.
I guess maybe the game should be able to turn off looping once you reach the final area though? Not really sure how to handle that yet, didn't actually see anything in Lindburgh that did anything like that...

Would ogg LOOP support also be possible?

Would ogg LOOP support also be possible?

Probably not likely with the current code, this is still using the games OGG decoder which I haven't really tried mapping out, would probably be possible to find the libogg version they used and name things that way, but would be some effort though.
Probably be better to replace our libflac usage with something that could handle multiple formats instead really, and force game to always use that
The vgmstream linked in OP could be useful but seems more focused toward wide support for formats over size/performance, wonder if there's something like that more focused on common audio formats (WAV/OGG/FLAC/MP3)


Fail to load service weatherapi  page for sample AspireWithJavaScript

Describe the issue:
After running the command azd up, click the  service weatherapi link in terminal output, the page load fails as follow:

Repro Steps:

Clone code.
Run command cd samples/AspireWithJavaScript.
Run command azd init.
Run command azd up.

Environment:

Azd version: azd version 1.11.0-beta.1-daily.4152592 (commit e2ff8ba7dcc5b3f7e883213a2315a8b275294def).
Aspire version: 8.2.1/8.0.100.
Sample: AspireWithJavaScript.
Branch: main.

Expected behavior:
The weatherapi service page can be loaded successfully.
@rajeshkamal5050, @vhvb1989 for notification.

@rajeshkamal5050, @vhvb1989 In the latest round of azd manual testing, this issue still exists.

Samples: AspireWithJavaScript.
Branch: Main.
Aspire version: 9.0.0.
Azd version: azd version 1.11.0-beta.1-daily.4276655 (commit e27d9e742c3fb3bffb8a58a891a09ce65f97db25).

That's expected as there are no routes/endpoints in the weather API project that respond to requests to the root (/). You need to browse to /weatherforecast instead.


feat : manual coverage implemented ValidParentheses: closes #7

In the ValidParentheses class.

added id branch tracking
added print-reached branches to the console in the Test file

Hey, try to implement your functionalities in your branch and then make a pull request to merge your branch into the coverage branch.


feat: linux performance

After a deeper investigation, the performance bottleneck experienced in our cloud deployment (much much slower than laptop) was successfully diagnosed and fixed.
Most of the time was being spent in SSL initializations, which is something we can avoid by doing this operation once and cloning the initialized context / http client across threads.

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


[BUG] Playwright not installing on Windows machine using a PAC setup script

Context:

Playwright Version: NuGet package version of playwright 1.21.0
Operating System: Windows 10 and Windows Server (different machines, same issue)
.NET version: .Net 5 and .Net 6
Browser: All
Extra: Proxy settings use a PAC file setup script in the Windows Proxy settings

Code Snippet
Help us help you! Put down a short code snippet that illustrates your bug and
that we can run and debug locally. For example:
        dotnet --version
        dotnet tool restore
        dotnet tool update --local Microsoft.Playwright.CLI
        Write-Host "Installing with DEBUG set to ps:install"
        $env:DEBUG = 'pw:install'
        dotnet tool run playwright install
        Write-Host "Installing with DEBUG set to https-proxy-agent:*"
        $env:DEBUG = 'https-proxy-agent:*'
        dotnet tool run playwright install

Describe the bug
When using a PAC file, which does include .azureedge.net, running playwright install times out with the errors below.
If I turn off "Use setup script" in windows, and add ;.azureedge.net to the proxy server exemptions, then the browers download successfully.
See error messages below, with different DEBUG values for two different install attemps:
Installing with DEBUG set to ps:install
2022-05-04T16:59:05.389Z pw:install downloading Playwright build of chromium v1000 - attempt #1
2022-05-04T16:59:05.390Z pw:install running download:
2022-05-04T16:59:05.390Z pw:install -- from url: https://playwright.azureedge.net/builds/chromium/1000/chromium-win64.zip
2022-05-04T16:59:05.390Z pw:install -- to location: C:\Users\SV-ALM~1.BUI\AppData\Local\Temp\playwright-download-chromium-win64-1000.zip
(node:13248) Warning: Setting the NODE_TLS_REJECT_UNAUTHORIZED environment variable to '0' makes TLS connections and HTTPS requests insecure by disabling certificate verification.
(Use node --trace-warnings ... to show where the warning was created)
2022-05-04T16:59:26.425Z pw:install attempt #1 - ERROR: connect ETIMEDOUT <IP_ADDRESS>:443
2022-05-04T16:59:26.425Z pw:install sleeping<PHONE_NUMBER>017453ms before retry...
2022-05-04T16:59:26.949Z pw:install downloading Playwright build of chromium v1000 - attempt #2
2022-05-04T16:59:26.949Z pw:install running download:
2022-05-04T16:59:26.949Z pw:install -- from url: https://playwright.azureedge.net/builds/chromium/1000/chromium-win64.zip
2022-05-04T16:59:26.949Z pw:install -- to location: C:\Users\SV-ALM~1.BUI\AppData\Local\Temp\playwright-download-chromium-win64-1000.zip
2022-05-04T16:59:47.955Z pw:install attempt #2 - ERROR: connect ETIMEDOUT <IP_ADDRESS>:443
2022-05-04T16:59:47.955Z pw:install sleeping<PHONE_NUMBER>086462ms before retry...
2022-05-04T16:59:48.648Z pw:install downloading Playwright build of chromium v1000 - attempt #3
2022-05-04T16:59:48.648Z pw:install running download:
2022-05-04T16:59:48.648Z pw:install -- from url: https://playwright.azureedge.net/builds/chromium/1000/chromium-win64.zip
2022-05-04T16:59:48.648Z pw:install -- to location: C:\Users\SV-ALM~1.BUI\AppData\Local\Temp\playwright-download-chromium-win64-1000.zip
2022-05-04T17:00:09.657Z pw:install attempt #3 - ERROR: connect ETIMEDOUT <IP_ADDRESS>:443
2022-05-04T17:00:09.657Z pw:install FAILED installation Playwright build of chromium v1000 with error: Error: connect ETIMEDOUT <IP_ADDRESS>:443
Failed to install browsers
Error: Failed to download chromium v1000, caused by
Error: connect ETIMEDOUT <IP_ADDRESS>:443
at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1161:16)
Installing with DEBUG set to https-proxy-agent:*
(node:24528) Warning: Setting the NODE_TLS_REJECT_UNAUTHORIZED environment variable to '0' makes TLS connections and HTTPS requests insecure by disabling certificate verification.
(Use node --trace-warnings ... to show where the warning was created)
Failed to install browsers
Error: Failed to download chromium v1000, caused by
Error: connect ETIMEDOUT <IP_ADDRESS>:443
at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1161:16)

Same issue. Log below.
Also, the issue isn't with setting the proxy exactly, but with needing to exclude playwright.azureedge.net from the proxy.
Setting NODE_TLS_REJECT_UNAUTHORIZED=0
Installing with DEBUG set to ps:install
2022-05-06T11:40:10.622Z pw:install downloading Playwright build of chromium v1000 - attempt #1
2022-05-06T11:40:10.623Z pw:install running download:
2022-05-06T11:40:10.623Z pw:install -- from url: https://playwright.azureedge.net/builds/chromium/1000/chromium-win64.zip
2022-05-06T11:40:10.623Z pw:install -- to location: C:\Users\SV-ALM~1.BUI\AppData\Local\Temp\playwright-download-chromium-win64-1000.zip
(node:39408) Warning: Setting the NODE_TLS_REJECT_UNAUTHORIZED environment variable to '0' makes TLS connections and HTTPS requests insecure by disabling certificate verification.
(Use `node --trace-warnings ...` to show where the warning was created)
2022-05-06T11:40:31.791Z pw:install attempt #1 - ERROR: connect ETIMEDOUT <IP_ADDRESS>:443
2022-05-06T11:40:31.791Z pw:install sleeping<PHONE_NUMBER>2524486ms before retry...
2022-05-06T11:40:32.185Z pw:install downloading Playwright build of chromium v1000 - attempt #2
2022-05-06T11:40:32.186Z pw:install running download:
2022-05-06T11:40:32.186Z pw:install -- from url: https://playwright.azureedge.net/builds/chromium/1000/chromium-win64.zip
2022-05-06T11:40:32.186Z pw:install -- to location: C:\Users\SV-ALM~1.BUI\AppData\Local\Temp\playwright-download-chromium-win64-1000.zip
2022-05-06T11:40:53.197Z pw:install attempt #2 - ERROR: connect ETIMEDOUT <IP_ADDRESS>:443
2022-05-06T11:40:53.197Z pw:install sleeping<PHONE_NUMBER>213042ms before retry...
2022-05-06T11:40:53.788Z pw:install downloading Playwright build of chromium v1000 - attempt #3
2022-05-06T11:40:53.788Z pw:install running download:
2022-05-06T11:40:53.789Z pw:install -- from url: https://playwright.azureedge.net/builds/chromium/1000/chromium-win64.zip
2022-05-06T11:40:53.789Z pw:install -- to location: C:\Users\SV-ALM~1.BUI\AppData\Local\Temp\playwright-download-chromium-win64-1000.zip
2022-05-06T11:41:14.794Z pw:install attempt #3 - ERROR: connect ETIMEDOUT <IP_ADDRESS>:443
2022-05-06T11:41:14.795Z pw:install FAILED installation Playwright build of chromium v1000 with error: Error: connect ETIMEDOUT <IP_ADDRESS>:443
Failed to install browsers
Error: Failed to download chromium v1000, caused by
Error: connect ETIMEDOUT <IP_ADDRESS>:443
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1161:16)
Installing with DEBUG set to https-proxy-agent:*
(node:53440) Warning: Setting the NODE_TLS_REJECT_UNAUTHORIZED environment variable to '0' makes TLS connections and HTTPS requests insecure by disabling certificate verification.
(Use `node --trace-warnings ...` to show where the warning was created)
Failed to install browsers
Error: Failed to download chromium v1000, caused by
Error: connect ETIMEDOUT <IP_ADDRESS>:443
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1161:16)

Moving upstream since this is not a Playwright for .NET issue.


[Misc] Under what condition can workspace be shared?

What's on your mind?
We have multiple workspaces with sagemaker, rstudio etc. I can access some of them but not others (a "forbidden" message appeared). I checked the documentation and could not find any information on how workspaces can be shared among users. Can anyone point me to documentation on sharing workspaces among users? More specifically, under which conditions that I can access to workspaces created by other users?
Versions (please complete the following information):

Release Version installed [e.g. v5.2.7]

Here is the User Guide. The workspace is accessible within the project boundary.

@janeyuaws I already read the documentation but it is not clear on the permission issue. Maybe I have missed something obvious?
On page 12:

You can connect to workspaces that you have access to.

This does not say the conditions on which I have access to a workspace. Also, how do I know if I have access to a workspace? Why do not the system only list the workspaces that I have access to? Right now, the only way to tell is to try to connect.

If the `restrict AdminWorkspaceConnect flag' is enabled, ... they are assigned to.

Where is this flag? I did not see such a flag when I create a workspace.

The workspace is accessible within the project boundary.

Do you mean that anyone who is associated with a project will be able to access any workspace associated with the project? This is clearly not the case during testing. As a matter of fact, we have two admin users associated with the same project, and one could access a workspace and another one could not, and we cannot find any obvious reason for the difference.

@BoPeng The workspaces you can have access to depends on workspace ownership (i.e. workspaces that you created) and your user role in the application.
Being an IT admin of the application allows you to access all workspaces, including those that you did not create. (Connection is allowed given your IP access has been permitted by the CIDR range entered for the workspace)
Researchers can only access workspaces that they created. Currently there isn't a way to "share" workspaces among researchers in SWB.
The restrictAdminWorkspaceConnection flag is set to false by default in the main/config/settings/.defaults.yml file. You can override this setting with your chosen value in your main/config/settings/<stage>.yml file, and redeploying the application.

Thanks for the clarification, so by default researchers cannot see others' workspaces. This is a huge problem and we may have to make most researchers the admin.
We have also had problems on admins failing to connect to workspaces. Let me see if IP address is the culprit. Note that CIDR settings are unavailable for some workspace types.

Thanks for the clarification, so by default researchers cannot see others' workspaces. This is a huge problem and we may have to make most researchers the admin.
We have also had problems on admins failing to connect to workspaces. Let me see if IP address is the culprit. Note that CIDR settings are unavailable for some workspace types.

Thank you for reaching out. Your request has been added to our backlog for research computing solutions. Our
team curates these requests for fit with our solutions vision on a regular basis. Please watch this space for new
updates. If you require immediate assistance, please reach out to your AWS account team. Please note that
security issues should be reported directly to AWS Security at<EMAIL_ADDRESS>


Wrong left margin with the label of a form-floating component

If I use a form-floating component inside a fieldset HTML element with row class, the left margin of the floating label is wrong.
Code example:
<fieldset class="row">

          <input class="form-control" type="text" id="txtName" placeholder=" "/>
          Name

...

My temporary solution was to include this CSS style in the head element of the page:
fieldset.row .form-floating > label {
    margin-left: calc(var(--bs-gutter-x) * 0.5);
}

I hope it helps.
Regards.

Our docs mention you cannot and should not blend grid classes with other components. Without seeing a live example, I'm assuming that's the issue. Drop the row class from the parent, or add another wrapping element.


IsVisible - Different behavior on Android/IOS vs. UWP

Above you say "Setting IsVisible to false will remove the element from the visual tree. The element will no longer take up space in layouts or be eligle to receive any kind of input event."
This however is only true on UWP, not on Android and IOS.  If you have an Entry as IsVisible=False, that entry will still be able to receive focus and input on Android and IOS which is correct behavior as setting to IsVisible to False does not mean the view is not present in visual tree, it is just not visible.
However, on UWP, that Entry will not be able to receive input nor Focus()

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

ID: 02e367c1-186f-129d-f2ec-614289d18f90
Version Independent ID: 3e93a555-cc22-0fa2-ce85-a30673149a58
Content: VisualElement.IsVisible Property (Xamarin.Forms)
Content Source: docs/Xamarin.Forms/VisualElement.xml
Product: xamarin
Technology: xamarin-forms
GitHub Login: @dotnet-bot
Microsoft Alias: dotnetcontent

This behavior has caused issues for me since I tend to develop on UWP and then test on iOS and Android. I use IsVisible to create screen popups my placing a control into a Row of a Grid.
Under UWP setting IsVisible to false, causes the popup to disappear and the underlying form receives user input. On iOS and Android, the Form behaves as if it is frozen since all user interaction are trapped by the overlaying 'invisible' form.
Have you found a way to make it work the same way on all platforms?
For now, I need to remove the item from the grid, or Move it our of the way ('TranslateTo').
It would be nice if the Material Visual feature in Xamarin 4.0.0 would allow IsVisible=false to behave the same way across platforms.

This behavior has caused issues for me since I tend to develop on UWP and then test on iOS and Android. I use IsVisible to create screen popups my placing a control into a Row of a Grid.
Under UWP setting IsVisible to false, causes the popup to disappear and the underlying form receives user input. On iOS and Android, the Form behaves as if it is frozen since all user interaction are trapped by the overlaying 'invisible' form.
Have you found a way to make it work the same way on all platforms?
For now, I need to remove the item from the grid, or Move it our of the way ('TranslateTo').
It would be nice if the Material Visual feature in Xamarin 4.0.0 would allow IsVisible=false to behave the same way across platforms.

Unfortunately, Xamarin requires so many hacks to work with
In my case an invisible entry field will not receive focus, so instead some other view will get it.  For example, I do scanning, so that invisible entry is used to scan a barcode and process it.  But the problem I face is that if I tap on a button, then scan will trigger that button even since focus stayed on that button instead to be moved to Entry.  I resolved my problem by making the Entry very small (0px) and visible on UWP, while making it invisible on Android, IOS (but here I had to set its size to 1px since 0px would not receive focus.  So, happy hacking with Xamarin

Did you guys find any solution on this issue?
On iOS and Android, in my case, the control that has IsVisible set to false, gets hidden but if I have anything below it, it's frozen. It seems to me like the visibility part works as expected but not the "The element will no longer take up space in layouts" part.

I'm going to close this issue here since this is already logged here https://github.com/xamarin/Xamarin.Forms/issues/6536
@bendincuta if you could add details to the above issue that would be helpful


[WIP] Vendor verification

What does this do / why do we need it?
This makes automated vendor verification a reality. There's a lot that goes along with that, but everything in this PR falls under that heading. The list is:

There are fields in each Gopkg.lock [[project]] indicating the pruning rules that were applied for that project
There's also a per-project digest field, which is computed on the basis of the pruned tree
inputs-digest is completely gone, replaced by a system that directly computes whether the current lock satisfies the inputs, rather than relying on a coarse-grained, merge conflict-inducing hash digest
input-imports was added to [solve-meta]; it is a list of all import and required from the input project
When writing out vendor, only the subset of projects that actually need to be written are written. There are a buncha cases there:

version changed
revision changed
source changed
package set changed
pruning options changed
hash changed/missing from vendor (can only happen if somebody manually monkeyed with vendor)

It's annoying that we have to have input-imports. Without an explicit list, though, we can't determine if there are were any imports removed from the current project without having to fully explore the import graph for the whole project, in order to definitively find orphaned/unimported packages. That's costly - in particular, it would mean that in CI, we'd have to have a populated cache in order to perform basic sync checks. This is by far the better option, as it means that we can fully check sync between all three states (manifest/code, lock, vendor) without needing anything other than the states themselves. It's all self-contained.
Remaining TODOs:

[x] Update current tests
[x] Text output for verify.LockSatisfaction; these will be written out as an explanation for why dep is choosing to solve
[ ] Bunch more tests to check permutations of deltas to make sure the DeltaWriter is on point
[ ] Update docs
[ ] a field in Gopkg.toml to allow skipping vendor verification on a per-project basis (?)
env var to allow using the old safewriter behavior, in the event of bugs (This is going to be prohibitively costly)

Couple notes about followup:

i'm gonna roll dep check in with this release, too, as it's almost trivial to implement overtop the foundation ofverify.LockSatisfaction. Separate PR, though. Will also roll dry run output into this.
The hashing algo needs to change to ignore symlinks. Also will be a follow-up PR, and i'll make the change without bumping the HashVersion, even though it will technically change the algorithm.

What should your reviewer look out for in this PR?
Couldn't point to anything in particular; this is a long time coming, and there's a lot to it. If i had time to break it down further, i would, but we'll need to let there be a bit of a bumpy ride...
Which issue(s) does this PR fix?
fixes #121
fixes #1276
fixes #1496

This is great. Went through the dep changes and it makes sense.
Couldn't go through all the GPS changes.
Since this removes inputs-digest, I've added https://github.com/golang/dep/issues/1496 to the fixes list.

@darkowlzz awesome, thank you!

Between this and @jmank88's caching work, i saw cockroachdb runs drop from ~120s -> ~3s.

OK, in we go!


186757 read me

Updated readme for some of the extensions to update the features and add new information about newly added features.

Love it!


Improve Azure DevOps Backend Example

Signed-off-by: Andre Wanlin<EMAIL_ADDRESS>Hey, I just made a Pull Request!
Added comments to example to help avoid confusion as to where lines need to be added.
:heavy_check_mark: Checklist

[x] A changeset describing the change and affected packages. (more info)
[x] Added or updated documentation
[ ] Tests for new functionality and regression tests for bug fixes
[ ] Screenshots attached (for UI changes)
[x] All your commits have a Signed-off-by line in the message. (more info)

@jhaals thanks, always looking forward to the improvements the team makes 😄


UI: Top navigation gone after wallet backup.

https://github.com/crypto-power/cryptopower/assets/34998433/bb480b06-303a-4d3c-be44-ed51fb42fdab

I can't reproduce, despite trying many ways

might have been resolved in https://github.com/crypto-power/cryptopower/pull/185

Oh yeah looks fixed on master, closing.


Consider reducing block size

Right now, NavCoin Block Size is up to 20MB.
When SegWit gets enabled, it will require reserving 3 times the block size for the witness data (making a total block weight of 80MB).
Reference: https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki
In the current NavCoin Blockchain there is no Block larger than 2MB.
Reducing the block size from 20MB should be considered.

Halving would skill leave a very large amount of room to grow. Also with the idea of dapps there will be a lot of of chain transactions so normal chain will not be a congested even if use picks up a lot.

While devs should have final say. Maybe a poll on slack or forums for new size?

Even halving to 10MB would let blocks to have a maximum 40MB size. That would make our network vulnerable to dos attacks. Personally I'd reduce block size to a value between 2MB and 4MB (8MB and 16MB including witness in the weight). I'd prefer to choose the lower value in the scale, with such a small block time (30secs) 2MB+witness are fairly enough to handle a big amount of transactions.But I'm also open to maintain a bigger block size due to historical reasons and possible community preferences.
A deeper discussion about this topic is needed before taking a decision.

My vote is for 2mb as well.  That's 40mb worth of blocks every 10 mins. I think Bitcoin fits about 2000 tx's in a 1mb block, so assuming NAV is the same, that still gives NAV about 130 tx/sec without segwit.

a lot of discussion on  the slack #general channel. With all the info I agree 2MB would work best and it will NOT need a hard fork.

I must add that I've been running the new 4.0 node with a limited 2MB block size for weeks without any issue.

Block size reduced to 2MB


GEODE-4743: Removed five dead classes.

Remove classes: DebuggerSupport, SingletonCallable, SingletonValue, StackTraceCollector, DebuggerUtils.
Remove commented-out code that mentions one of these classes
Remove commented-out code from surrounding area.
Remove test that has been ignored since 2008.

Thank you for submitting a contribution to Apache Geode.
In order to streamline the review of the contribution we ask you
to ensure the following steps have been taken:
For all changes:

[x] Is there a JIRA ticket associated with this PR? Is it referenced in the commit message?

[x] Has your PR been rebased against the latest commit within the target branch (typically develop)?

[x] Is your initial contribution a single, squashed commit?

[x] Does gradlew build run cleanly?

[ ] Have you written or updated unit tests to verify your changes?

[ ] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?

Note:
Please ensure that once the PR is submitted, you check travis-ci for build issues and
submit an update to your PR as soon as possible. If you need help, please send an
email to<EMAIL_ADDRESS>

If you clean up SingletonValue you should update geode-core/src/main/resources/org/apache/geode/internal/sanctioned-geode-core-serializables.txt:org/apache/geode/internal/util/SingletonValue$ValueState,false too.

Prechckin green.


add way to export settings in a way they can be copied into the arduino code

https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/writeText

Arduino code is an annoying format compared to just exporting a json that can also be more easily imported


Please add support for "_report._dmarc"

Creating a DMARC-policy for a domain, with rua/ruf reports to another domain is a commonly made mistake (even though commercial DMARC-report handler services have covered this with wildcards).
Would it be possible to extend the functionality of your great tool with support for this? So when a policy is made for domain example.nl, with a rua of mailto:example.com, the tool could signal this and perhaps even suggest the solution.
See: https://datatracker.ietf.org/doc/html/rfc7489#section-7.1

Hi! You're right - you don't ask for the target domain, but it might still make sense to add some kind of notice to make the user aware of this common mistake. So, under 'result' I had: "v=DMARC1; p=quarantine<EMAIL_ADDRESS>But such a record would only be valid for the example.nl domain. If I had intended to use it for the example.com domain, it would have failed, unless a TXT example.com._report._dmarc.example.nl exists (in example.nl), containing "v=DMARC1".
Perhaps you can add a few words along those lines?

I think you make a valid point, I'll look into it. Thanks for the suggestion!

Hoi Marco, check out the screenshot in #2 and let me know if this is what you where thinking of.

It's better, but I could imagine that the information is insufficient for an average user. Perhaps it is possible to add a question mark icon that gives a popup with some more elaborate information? Like: _als example.com niet de domeinnaam is waarvoor u dit DMARC-record wil gebruiken, dan moet u in de DNS-instellingen van example.com ook nog een verwijzing opnemen de vorm van een TXT record met als inhoud: uw.domein._report.dmarc "v=DMARC1" (sommige DMARC-service bedrijven doen dit automatisch voor hun klanten). Obviously 'example.com' is dynamic in this text (like it should be and probably is in the screenshot).


Unresolved dependency when creating application

See this Stack Overflow post.
[info] Loading project definition from /Users/macarse/Documents/scalatest/project/plugins
[info] Updating {file:/Users/macarse/Documents/scalatest/project/plugins/}default-dd299a...
[warn]  module not found: org.scala-tools.sbt#sbt-android-plugin_2.9.1;0.6.0-SNAPSHOT
[warn] ==== typesafe-ivy-releases: tried
[warn]   http://repo.typesafe.com/typesafe/ivy-releases/org.scala-tools.sbt/sbt-android-plugin_2.9.1/0.6.0-SNAPSHOT/ivys/ivy.xml
[warn]   -- artifact org.scala-tools.sbt#sbt-android-plugin_2.9.1;0.6.0-SNAPSHOT!sbt-android-plugin_2.9.1.jar:
[warn]   http://repo.typesafe.com/typesafe/ivy-releases/org.scala-tools.sbt/sbt-android-plugin_2.9.1/0.6.0-SNAPSHOT/jars/sbt-android-plugin_2.9.1.jar
[warn] ==== local: tried
[warn]   /Users/macarse/.ivy2/local/org.scala-tools.sbt/sbt-android-plugin_2.9.1/0.6.0-SNAPSHOT/ivys/ivy.xml
[warn]   -- artifact org.scala-tools.sbt#sbt-android-plugin_2.9.1;0.6.0-SNAPSHOT!sbt-android-plugin_2.9.1.jar:
[warn]   /Users/macarse/.ivy2/local/org.scala-tools.sbt/sbt-android-plugin_2.9.1/0.6.0-SNAPSHOT/jars/sbt-android-plugin_2.9.1.jar
[warn] ==== public: tried
[warn]   http://repo1.maven.org/maven2/org/scala-tools/sbt/sbt-android-plugin_2.9.1/0.6.0-SNAPSHOT/sbt-android-plugin_2.9.1-0.6.0-SNAPSHOT.pom
[warn]   -- artifact org.scala-tools.sbt#sbt-android-plugin_2.9.1;0.6.0-SNAPSHOT!sbt-android-plugin_2.9.1.jar:
[warn]   http://repo1.maven.org/maven2/org/scala-tools/sbt/sbt-android-plugin_2.9.1/0.6.0-SNAPSHOT/sbt-android-plugin_2.9.1-0.6.0-SNAPSHOT.jar
[warn] ==== Scala-Tools Maven2 Repository: tried
[warn]   http://scala-tools.org/repo-releases/org/scala-tools/sbt/sbt-android-plugin_2.9.1/0.6.0-SNAPSHOT/sbt-android-plugin_2.9.1-0.6.0-SNAPSHOT.pom
[warn]   -- artifact org.scala-tools.sbt#sbt-android-plugin_2.9.1;0.6.0-SNAPSHOT!sbt-android-plugin_2.9.1.jar:
[warn]   http://scala-tools.org/repo-releases/org/scala-tools/sbt/sbt-android-plugin_2.9.1/0.6.0-SNAPSHOT/sbt-android-plugin_2.9.1-0.6.0-SNAPSHOT.jar
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: org.scala-tools.sbt#sbt-android-plugin_2.9.1;0.6.0-SNAPSHOT: not found
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[error] {file:/Users/macarse/Documents/scalatest/project/plugins/}default-dd299a/*:update: sbt.ResolveException: unresolved dependency: org.scala-tools.sbt#sbt-android-plugin_2.9.1;0.6.0-SNAPSHOT: not found
Project loading failed: (r)etry, (q)uit, (l)ast, or (i)gnore?

Still fails for me.  Do I need to update g8 or do some other update?  See below:

Template for Android apps in Scala

package [my.android.project]: com.zoomabug.neverforget
name [My Android Project]: Never Forget
main_activity [MainActivity]: MainMenuActivity
api_level [10]: 9

Applied jberkel/android-app.g8 in never-forget

$ sbt
[info] Loading project definition from D:\Workspaces\NeverForget\never-forget\project\plugins
[info] Updating {file:/D:/Workspaces/NeverForget/never-forget/project/plugins/}default-c389a1...
[warn]  module not found: org.scala-tools.sbt#sbt-android-plugin;0.6.0-SNAPSHOT
[warn] ==== typesafe-ivy-releases: tried
[warn]   http://repo.typesafe.com/typesafe/ivy-releases/org.scala-tools.sbt/sbt-android-plugin/scala_2.9.1/sbt_0.11.0/0.6.0-SNAPSHOT/ivys/ivy.xml
[warn]   -- artifact org.scala-tools.sbt#sbt-android-plugin;0.6.0-SNAPSHOT!sbt-android-plugin.jar:
[warn]   http://repo.typesafe.com/typesafe/ivy-releases/org.scala-tools.sbt/sbt-android-plugin/scala_2.9.1/sbt_0.11.0/0.6.0-SNAPSHOT/jars/sbt-android-plugin.jar
[warn] ==== local: tried
[warn]   C:\Users\Jeff\.ivy2/local/org.scala-tools.sbt/sbt-android-plugin/scala_2.9.1/sbt_0.11.0/0.6.0-SNAPSHOT/ivys/ivy.xml
[warn]   -- artifact org.scala-tools.sbt#sbt-android-plugin;0.6.0-SNAPSHOT!sbt-android-plugin.jar:
[warn]   C:\Users\Jeff\.ivy2/local/org.scala-tools.sbt/sbt-android-plugin/scala_2.9.1/sbt_0.11.0/0.6.0-SNAPSHOT/jars/sbt-android-plugin.jar
[warn] ==== public: tried
[warn]   http://repo1.maven.org/maven2/org/scala-tools/sbt/sbt-android-plugin_2.9.1_0.11.0/0.6.0-SNAPSHOT/sbt-android-plugin-0.6.0-SNAPSHOT.pom
[warn]   -- artifact org.scala-tools.sbt#sbt-android-plugin;0.6.0-SNAPSHOT!sbt-android-plugin.jar:
[warn]   http://repo1.maven.org/maven2/org/scala-tools/sbt/sbt-android-plugin_2.9.1_0.11.0/0.6.0-SNAPSHOT/sbt-android-plugin-0.6.0-SNAPSHOT.jar
[warn] ==== Scala-Tools Maven2 Repository: tried
[warn]   http://scala-tools.org/repo-releases/org/scala-tools/sbt/sbt-android-plugin_2.9.1_0.11.0/0.6.0-SNAPSHOT/sbt-android-plugin-0.6.0-SNAPSHOT.pom
[warn]   -- artifact org.scala-tools.sbt#sbt-android-plugin;0.6.0-SNAPSHOT!sbt-android-plugin.jar:
[warn]   http://scala-tools.org/repo-releases/org/scala-tools/sbt/sbt-android-plugin_2.9.1_0.11.0/0.6.0-SNAPSHOT/sbt-android-plugin-0.6.0-SNAPSHOT.jar
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: org.scala-tools.sbt#sbt-android-plugin;0.6.0-SNAPSHOT: not found
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]
[warn]  Note: Some unresolved dependencies have extra attributes.  Check that these dependencies exist with the requested attributes.
[warn]          org.scala-tools.sbt:sbt-android-plugin:0.6.0-SNAPSHOT (sbtVersion=0.11.0, scalaVersion=2.9.1)
[warn]
[error] {file:/D:/Workspaces/NeverForget/never-forget/project/plugins/}default-c389a1/*:update: sbt.ResolveException: unresolved dependency: org.scala-tools.sbt#sbt-android-plugin;0.6.0-SNAPSHOT: not found
Project loading failed: (r)etry, (q)uit, (l)ast, or (i)gnore?

did you do a publish-local with sbt_011 ?

Thanks, this fixed it.  It wasn't clear that this was still necessary after the sbt_011 branch was added.  I also added an explicit step on the README to clarify.


CIP-0021 Transformation Breaks Script Integrity

CIP-21 describes how hardware wallets require transactions to be formatted in order to be signed by them. cardano-cli does not produce transactions that satisfy this CIP so the tx.body file must be transformed after being created (docs). However, the cardano-hw-interop-library linked in this CIP actually breaks transactions using smart contracts with more complicated redeemers. I opened the corresponding github issue here. The flow is effectively:

Build the transaction with cardano-cli.
Transform the transaction with cardano-hw-cli transaction transform which internally uses the cardano-hw-interop-library.
Sign the transformed transaction.
Submit the signed transformed transaction.

If there are any smart contracts using complicated redeemers in the transaction, step 4 will always fail with a ScriptIntegrity error. It seems to be the transformation step that is breaking the transaction. You can even do the transformation on transactions being signed by CLI keys and you will still get the ScriptIntegrity submission error. This bug makes it impossible to use cardano-hw-cli to sign these transactions since it requires all transactions to be transformed to satisfy this CIP. I'm not aware of other libraries that enable users to transform and then sign transactions with hardware wallets.
I can't find any mention of redeemers in this CIP so I am now wondering if there is a piece missing from this CIP's Specification. Redeemers use CBOR as well, but the CBOR in the redeemer specifies which action is being taken with that script. Redeemers should NOT be forced to comply with this CIP. Altering the redeemers to "make the integers as small as possible" will actually change what that script will do! I think the ScriptIntegrity error is highlighting that the transformation is changing the redeemers since the integrity hash is a hash of the script + datum + redeemer used for a specific script execution (cddl spec). I think this CIP needs to be updated to explain what should happen with redeemers.
(If the CIP editors do not think this is an appropriate topic for CIP Issues, feel free to close this issue.)

The problem is an will always be that cli does not produce transactions with data in canonical order. HW Wallets have a memory limitation and are therefor not capable of loading whole sets into the memory for checks. So do find duplicated inputs for example, canonical order for HW Wallets is mandatory. Cli refused to switch to canonical order years ago.

So i wonder if this can be somehow taken into account for the redeemer issue you pointed out.

No, it can't. The order of the data for datums and redeemers has internal meaning to smart contracts. There is no such thing as "canonical order" for datums and redeemers. If you change the order of these elements, you will change the behavior of the smart contracts. AFAIK this is what the ScriptIntegrity error means; the transformation is fundamentally changing the behavior of the smart contract being executed. Standardizing datums and redeemers would likely kill a significant number of smart contract use cases because each use case is likely unique enough to require unique datums and redeemers.
I think the simple fix is to just not transform the datums and redeemers. The rest of the transaction can still be standardized. I don't see how this would negatively impact hardware wallet verification.

@fallen-icarus @gitmachtl I think it will help to get some wallet dev visibility on this & have added (as we do with issues sometimes) to the next CIP meeting agenda (https://github.com/cardano-foundation/CIPs/issues/871).
It seems pretty well documented here so far & I'm glad to see it progressing but I think in addition to raising the red flag at the meeting we also want to alert the affiliated Wallets Working Group about this (cc @Ryun1 @Crypto2099).

This seems like a related issue. Perhaps the script data hash just needs to be recalculated after the transformation. I don't know enough typescript to really know what is happening in cardano-hw-interop-lib. As long as the smart contracts behave the same way after the transformation as they did before, I'd be fine with it. IMO this CIP needs to be updated to explain whatever solution is chosen.

So i wonder if this can be somehow taken into account for the redeemer issue you pointed out.

No, it can't. The order of the data for datums and redeemers has internal meaning to smart contracts. There is no such thing as "canonical order" for datums and redeemers. If you change the order of these elements, you will change the behavior of the smart contracts. AFAIK this is what the ScriptIntegrity error means; the transformation is fundamentally changing the behavior of the smart contract being executed. Standardizing datums and redeemers would likely kill a significant number of smart contract use cases because each use case is likely unique enough to require unique datums and redeemers.
I think the simple fix is to just not transform the datums and redeemers. The rest of the transaction can still be standardized. I don't see how this would negatively impact hardware wallet verification.

ok, but only the order of datums and redeemers, not the order of inputs and outputs?
@refi93 can you check if hw-cli is reordering the redeemer/datum while running the transform command?

ok, but only the order of datums and redeemers, not the order of inputs and outputs?

Correct. The internal ordering of the datums and redeemers should be left alone as well. Again, though, I'm not sure what the transformation is actually doing.

As was mentioned, the canonical encoding of some tx elements is essential for HW wallets security. The reason why CIP-21 requires canonical encoding of the entire tx is mostly practical I believe - usually, CBOR libraries expose only a boolean flag whether the entire structure should be encoded canonically or not. This is also the case of the cbor dependency of cardano-hw-interop-lib. Since there isn't a more granular API, re-encoding only a part of the transaction canonically is very difficult/impossible without implementing much of the CBOR logic.
The specific attributes that determine canonicality are listed here. I'm not experienced with smart contracts - can someone please reliably confirm or deny that a script can access this info? E.g.:

Is there a guarantee that when a datum contains a map, the script will be able to obtian the exact order of keys used in the serialized CBOR bytestring representation of the map? (Note that this is not the order of array elements - those are not affected by canonicalization.)

From the initial comment:

Altering the redeemers to "make the integers as small as possible" will actually change what that script will do!

Note that this doesn't mean changing the value of the integer, it only specifies one of the several ways how to encode the same integer according to CBOR specs. Can the script determine which encoding was used, or is the integer value the only information it sees?

The possible outcomes are:

A smart contract cannot access the details of the datums/redeemers CBOR encoding. In that case, I believe that cardano-hw-interop-lib could reserialize the entire tx canonically and subsequently recalculate and replace the script data hash, like we do with auxiliary data hash.
The canonicality can be detected by a smart contract. I don't know what to do in this case.

I think it is better to have smart contract compiler devs answer these questions. They'll know a lot more than me. I am personally using aiken so I will tag them. @rvcas @MicroProofs @KtorZ

As was mentioned, the canonical encoding of some tx elements is essential for HW wallets security. The reason why CIP-21 requires canonical encoding of the entire tx is mostly practical I believe - usually, CBOR libraries expose only a boolean flag whether the entire structure should be encoded canonically or not. This is also the case of the cbor dependency of cardano-hw-interop-lib. Since there isn't a more granular API, re-encoding only a part of the transaction canonically is very difficult/impossible without implementing much of the CBOR logic.
The specific attributes that determine canonicality are listed here. I'm not experienced with smart contracts - can someone please reliably confirm or deny that a script can access this info? E.g.:

Is there a guarantee that when a datum contains a map, the script will be able to obtian the exact order of keys used in the serialized CBOR bytestring representation of the map? (Note that this is not the order of array elements - those are not affected by canonicalization.)

So cbor maps from datums and redeemers come in to smart contracts as a list of pairs based on user order. They are not reordered. So if you reordered a datum's map canonically that would make a tx that would fail in phase 1 since the hash of the cbor of the datum would not match the onchain cbor datum for a given input if that input was using a datum hash. There are likely other issues that would be present like invalid budget calculations after reordering maps.

Also currently the onchain would allow the datum to have maps that have multiples of the same item. So best to leave the serialization of datums and redeemers alone.

The reason why CIP-21 requires canonical encoding of the entire tx is mostly practical I believe - usually, CBOR libraries expose only a boolean flag whether the entire structure should be encoded canonically or not. This is also the case of the cbor dependency of cardano-hw-interop-lib. Since there isn't a more granular API, re-encoding only a part of the transaction canonically is very difficult/impossible without implementing much of the CBOR logic.

@davidmisiak What about a non-typescript executable/dependecy? Haskell has the cborg library which I believe does have a more granular API:

cborg targets cases where precise control over the CBOR object structure is needed such as when working with externally-specified CBOR formats.
-- quote from cborg documentation

The serialise library is built upon the cborg library. I have not used either library, but perhaps they can be used to build a more granular transformation tool.

The main issue seems to be that CIP21 specifies that lists should have definite lengths. But as far as I understand from my discussions with @KtorZ, the inside of plutus Data should be offlimit for CIP21 because there are specific strict rules about how plutus Data should be encoded. In particular lists in Data are encoded as definite length if 0 length, but indefinite length otherwise.
So in general, I think CIP21 should not touch the inside of plutus Data, to make sure it stays encoded as expected.

@mpizenberg and I were investigating this issue some more and found the redeemer is changed from an indefinite-list to a definite-list as part of the transformation (in compliance with this CIP). This is the redeemer before:
         82                                                 #       array(2)
            d8 79                                           #         tag(121)
               9f                                           #           array(*)
                  d8 7a                                     #             tag(122)
                     9f                                     #               array(*)
                        58 1c                               #                 bytes(28)
                           c0f8644a01a6bf5db02f4afe30d60497 #                   "\xc0\xf8dJ\x01\xa6\xbf]\xb0/J\xfe0\xd6\x04\x97"
                           5e63dd274f1098a1738e561d         #                   "^c\xdd\'O\x10\x98\xa1s\x8eV\x1d"
                        ff                                  #                 break
                  ff                                        #             break

and this is it after:
         82                                                 #       array(2)
            d8 79                                           #         tag(121)
               81                                           #           array(1)
                  d8 7a                                     #             tag(122)
                     81                                     #               array(1)
                        58 1c                               #                 bytes(28)
                           c0f8644a01a6bf5db02f4afe30d60497 #                   "\xc0\xf8dJ\x01\xa6\xbf]\xb0/J\xfe0\xd6\x04\x97"
                           5e63dd274f1098a1738e561d         #                   "^c\xdd\'O\x10\x98\xa1s\x8eV\x1d"

Plutus Data uses indefinite lists which is in violation of this CIP. I found this note discussing why indefinite-lists are sometimes used for plutus Data. I don't know if this is a situation where the script hash just needs to be re-calculated (and possibly budgets updated).

The Script Data hash would need to be recalculated.
What checks does the hardware wallet perform on a transaction and why? I feel like the ledger would catch any mistakes made by invalid transaction signing.

Hum, it’s weird, I thought Plutus Data had very strict rules, but I just tried to do the same lock-unlock 2ada example, first with indefinite length encoding of the redeemer d8799f4d48656c6c6f2c20576f726c6421ff then with definite length encoding d879814d48656c6c6f2c20576f726c6421 and both worked preview with my ledger nano x, signing via eternl. Here is the first one: https://preview.cardanoscan.io/transaction/0f5ca9dce62f97c7c1ad1064b246649f002d83874c9d86f70149de4191b38159?tab=contracts
Here is the second one: https://preview.cardanoscan.io/transaction/90706202b45cf9cfb45d402804c5c4015b1660745162e9c7e00f5651ef7748fc?tab=contracts
So on that case, it seems recomputing the script data hash was sufficient, and it worked for both definite/indefinite lengths encoding of the redeemer Data for my hardware wallet ledger nano x.

So for the sake of completeness, I just did another test, where I encoded the list of inputs with indefinite length. And this time I got an error from eternl saying Ledger produced a different txHash. Please contact support to help improve Ledger support. So it does seem like the LNX hardware wallet needs definite length encoding for the Tx in general, but not for the inside of Plutus Data.

I’m no Haskell expert but according to the plutus Data decoders here https://github.com/IntersectMBO/plutus/blob/b086464584f2684658633b375283994dbe04bef8/plutus-core/plutus-core/src/PlutusCore/Data.hs#L190
It seems I was wrong about the specific encoding requirements.
I mean everything EXCEPT bytes longer than 64bytes will be fine with definite length encoding. So if your redeemers are changed from indefinite to definite by a cip21 compliant postprocess, it’s not a problem, but you will need to recompute the script data hash.
So at least the specific issue you were having @fallen-icarus are solvable by recomputing the script data hash.
Now regarding other transformations like deduplication or re-ordering of elements accessible from a plutus contract. As Micro said, it will cause some issues. So leaving the redemers and datums unchanged is a possibility for hardware wallet wallets, then that would be ideal.
And in fact, the introduction of the CIP21 spec only mentions restrictions about the transaction body, because that’s the part which is signed by hardware wallets.

Consequently, a HW wallet only provides witness signatures, and the transaction body which was signed has to be reconstructed by the client.

So my guess is the hardware wallets do not inspect the WitnessSet part of the transaction. And consequently, there is no good reason to transform that part of the transaction with CIP21 post-processing tools like cardano-hw-cli.

Surely, the cardano-hw-cli and other transformation tools are meant to be used before attempting to sign a transaction? Then, the only remaining "problem" left is the computing of the script integrity hash, which ought to be the responsibility of the cardano-hw-cli IMO; so this issue shall rather be moved there or simply, the tool fixed via a PR.