Change default logging level to Info

Recent PR (#1510) changed logging, and also introduced default logging
level. While it seemed like a good idea, it also introduced a lot of
confusion, because in logrus Println() is an alias to Info()
loglevel - so lots of messages were lost.
This change restores previous behavior in logging output.
Related: gruntwork-io/terragrunt#1529
Related: gruntwork-io/terragrunt#1530
Related: gruntwork-io/terragrunt#1531
Related: gruntwork-io/terragrunt#1532

@brikis98 just grep I'm afraid :). We can start with reviewing grep 'logger.Printf' * -R: Printf() is an alias to Info(), so all of those will be added

@brikis98 just grep I'm afraid :). We can start with reviewing grep 'logger.Printf' * -R: Printf() is an alias to Info(), so all of those will be added

Any chance you could do a grep and dump the list of log messages here? I can then quickly scan and see which should be changed to other log levels. I'm so booked right now, I don't even have time to figure out the right grep command to run!

Here's what I got from rg "(Info)|(Print)" and cutting out the extraneous ones. I probably could get more context for some of these where I only got the function with (, but am also a bit buried to do more than this.
options/options.go
230:            logger.Printf("error: %v\n", errors.WithStackTrace(err))

util/retry.go
14:             logger.Printf(actionDescription)

config/dependency.go
472:    terragruntOptions.Logger.Infof("Detected module %s is already init-ed. Retrieving outputs directly from working directory.", targetConfig)

shell/ptty_windows.go
29:             options.Logger.Printf("failed to get console mode: %v\n", err)
34:             options.Logger.Printf("failed to set console mode: %v\n", err)

shell/ptty_unix.go
30:                     terragruntOptions.Logger.Printf("Error closing pty: %s", closeErr)
48:                             terragruntOptions.Logger.Printf("error resizing pty: %s", inheritSizeErr)
62:                     terragruntOptions.Logger.Printf("Error restoring terminal state: %s", restoreErr)
74:             terragruntOptions.Logger.Printf("Error forwarding stdin: %s", copyStdinErr)

shell/run_shell_cmd.go
60:     terragruntOptions.Logger.Infof("Running command: %s %s", command, strings.Join(args, " "))
177:                            logger.Printf("Forward signal %v to terraform.", s)
180:                                    logger.Printf("Error forwarding signal: %v", err)

shell/prompt.go
28:             terragruntOptions.Logger.Infof("The non-interactive flag is set to true, so assuming 'yes' for all prompts")

cli/hclfmt.go
32:             terragruntOptions.Logger.Printf("Formatting terragrunt.hcl file at: %s.", targetFile)
36:     terragruntOptions.Logger.Printf("Formatting terragrunt.hcl files from the directory tree %s.", terragruntOptions.WorkingDir)
69:     terragruntOptions.Logger.Printf("Formatting %s", tgHclFile)
73:             terragruntOptions.Logger.Printf("Error retrieving file info of %s", tgHclFile)
79:             terragruntOptions.Logger.Printf("Error reading %s", tgHclFile)
86:             terragruntOptions.Logger.Printf("Error parsing %s", tgHclFile)

dynamodb/dynamo_lock_table.go
47:             terragruntOptions.Logger.Printf("Lock table %s does not exist in DynamoDB. Will need to create it just this first time.", tableName)
84:     terragruntOptions.Logger.Printf("Creating table %s in DynamoDB", tableName)
103:                    terragruntOptions.Logger.Printf("Looks like someone created table %s at the same time. Will wait for it to be in active state.", tableName)
131:            terragruntOptions.Logger.Printf("No tags for lock table given.")
136:    terragruntOptions.Logger.Printf("Adding tags to lock table: %s", tags)
186:                    terragruntOptions.Logger.Printf("Success! Table %s is now in active state.", tableName)
191:            terragruntOptions.Logger.Printf("Table %s is not yet in active state. Will check again after %s.", tableName, sleepBetweenRetries)
206:            terragruntOptions.Logger.Printf("Table %s already has encryption enabled", tableName)
213:    terragruntOptions.Logger.Printf("Enabling server-side encryption on table %s in AWS DynamoDB", tableName)
225:                    terragruntOptions.Logger.Printf("Looks like someone is already updating table %s at the same time. Will wait for that update to complete.", tableName)
243:    terragruntOptions.Logger.Printf("Waiting for encryption to be enabled on table %s", tableName)
252:                    terragruntOptions.Logger.Printf("Encryption is now enabled for table %s!", tableName)
256:            terragruntOptions.Logger.Printf("Encryption is still not enabled for table %s. Will sleep for %v and try again.", tableName, sleepBetweenRetries)

cli/version_check.go
50:     terragruntOptions.Logger.Printf("Terraform version: %s", terraformVersion)

configstack/running_module.go
252:            module.Module.TerragruntOptions.Logger.Printf("Module %s has finished with an error: %v", module.Module.Path, moduleErr)

configstack/stack.go
80:             terragruntOptions.Logger.Println(output)
87:                             terragruntOptions.Logger.Printf("%v%v refers to remote state "+

cli/debug.go
24:     terragruntOptions.Logger.Infof(

cli/download_source.go
36:     terragruntOptions.Logger.Printf("Copying files from %s into %s", terragruntOptions.WorkingDir, terraformSource.WorkingDir)
43:     terragruntOptions.Logger.Printf("Setting working directory to %s", terraformSource.WorkingDir)
52:             terragruntOptions.Logger.Printf("The --%s flag is set, so deleting the temporary folder %s before downloading source.", OPT_TERRAGRUNT_SOURCE_UPDATE, terraformSource.DownloadDir)
64:             terragruntOptions.Logger.Printf("Terraform files in %s are up to date. Will not download again.", terraformSource.WorkingDir)
107:            terragruntOptions.Logger.Printf("Working dir %s exists but contains no Terraform files, so assuming code needs to be downloaded again.", terraformSource.WorkingDir)
149:    terragruntOptions.Logger.Printf("Downloading Terraform configurations from %s into %s", terraformSource.CanonicalSourceURL, terraformSource.DownloadDir)

cli/cli_app.go
357:            terragruntOptions.Logger.Infof(
537:    terragruntOptions.Logger.Printf("Detected %d Hooks", len(hooks))
542:                    terragruntOptions.Logger.Printf("Executing hook: %s", curHook.Name)
548:                            terragruntOptions.Logger.Printf("Error running hook %s with message: %s", curHook.Name, possibleError.Error())
677:            terragruntOptions.Logger.Printf("Errors encountered running before_hooks. Not running '%s'.", description)
711:                            terragruntOptions.Logger.Printf("Encountered an error eligible for retrying. Sleeping %v before retrying.\n", terragruntOptions.Sleep)
925:    terragruntOptions.Logger.Infof("%s", stack.String())

remote/remote_state.go
67:     terragruntOptions.Logger.Printf("Initializing remote state for the %s backend", remoteState.Backend)
110:            terragruntOptions.Logger.Infof("Backend type has changed from %s to %s", existingBackend.Type, remoteState.Backend)
119:    terragruntOptions.Logger.Printf("Backend %s has not changed.", existingBackend.Type)

remote/remote_state_s3.go
128:            terragruntOptions.Logger.Printf("%s\n", lockTableDeprecationMessage)
179:            terragruntOptions.Logger.Printf("Backend type has changed from s3 to %s", existingBackend.Type)
196:                    terragruntOptions.Logger.Printf("Remote state configuration encrypt contains invalid value %v, should be boolean.", existingBackend.Config["encrypt"])
243:            terragruntOptions.Logger.Printf("%s\n", lockTableDeprecationMessage)
337:            terragruntOptions.Logger.Printf("WARNING: encryption is not enabled on the S3 remote state bucket %s. Terraform state files may contain secrets, so we STRONGLY recommend enabling encryption!", config.Bucket)
383:            terragruntOptions.Logger.Printf("WARNING: Versioning is not enabled for the remote state S3 bucket %s. We recommend enabling versioning so that you can roll back to previous versions of your Terraform state in case of error.", config.Bucket)
395:                    terragruntOptions.Logger.Printf("Looks like you're already creating bucket %s at the same time. Will not attempt to create it again.", config.remoteStateConfigS3.Bucket)
407:            terragruntOptions.Logger.Printf("Root access is disabled for the remote state S3 bucket %s using 'skip_bucket_root_access' config.", config.remoteStateConfigS3.Bucket)
413:            terragruntOptions.Logger.Printf("TLS enforcement is disabled for the remote state S3 bucket %s using 'skip_bucket_enforced_tls' config.", config.remoteStateConfigS3.Bucket)
427:            terragruntOptions.Logger.Printf("Versioning is disabled for the remote state S3 bucket %s using 'skip_bucket_versioning' config.", config.remoteStateConfigS3.Bucket)
433:            terragruntOptions.Logger.Printf("Server-Side Encryption is disabled for the remote state AWS S3 bucket %s using 'skip_bucket_ssencryption' config.", config.remoteStateConfigS3.Bucket)
439:            terragruntOptions.Logger.Printf("___WARNING___: The terragrunt configuration option 'skip_bucket_accesslogging' is now deprecated. Access logging for the state bucket %s is disabled by default. To enable access logging for bucket %s, please provide property `accesslogging_bucket_name` in the terragrunt config file. For more details, please refer to the Terragrunt documentation.", config.remoteStateConfigS3.Bucket, config.remoteStateConfigS3.Bucket)
443:            terragruntOptions.Logger.Printf("Enabling bucket-wide Access Logging on AWS S3 bucket %s - using as TargetBucket %s", config.remoteStateConfigS3.Bucket, config.AccessLoggingBucketName)
446:                    terragruntOptions.Logger.Printf("Error: Could not create logs bucket %s for AWS S3 bucket %s", config.AccessLoggingBucketName, config.remoteStateConfigS3.Bucket)
454:            terragruntOptions.Logger.Printf("Access Logging is disabled for the remote state AWS S3 bucket %s", config.remoteStateConfigS3.Bucket)
478:            terragruntOptions.Logger.Printf("No tags specified for bucket %s.", config.remoteStateConfigS3.Bucket)
485:    terragruntOptions.Logger.Printf("Tagging S3 bucket with %s", config.S3BucketTags)
497:    terragruntOptions.Logger.Printf("Tagged S3 bucket with %s", config.S3BucketTags)
519:    terragruntOptions.Logger.Printf("Waiting for bucket %s to be created", config.Bucket)
522:                    terragruntOptions.Logger.Printf("S3 bucket %s created.", config.Bucket)
525:                    terragruntOptions.Logger.Printf("S3 bucket %s has not been created yet.  This is required for access logging.", s3LogDeliveryGranteeUri, aws.StringValue(bucket))
748:    terragruntOptions.Logger.Printf("Waiting for ACL bucket %s to have the updated ACL for access logging.", aws.StringValue(bucket))
774:                    terragruntOptions.Logger.Printf("Bucket %s now has the proper ACL permissions for access logging!", aws.StringValue(bucket))
778:            terragruntOptions.Logger.Printf("Bucket %s still does not have the ACL permissions for access logging. Will sleep for %v and check again.", aws.StringValue(bucket), timeBetweenRetries)

remote/remote_state_gcs.go
120:            terragruntOptions.Logger.Printf("Backend type has changed from gcs to %s", existingBackend.Type)
248:            terragruntOptions.Logger.Printf("Remote state GCS bucket %s does not exist. Attempting to create it", config.remoteStateConfigGCS.Bucket)
293:            terragruntOptions.Logger.Printf("WARNING: Versioning is not enabled for the remote state GCS bucket %s. We recommend enabling versioning so that you can roll back to previous versions of your Terraform state in case of error.", config.Bucket)
320:            terragruntOptions.Logger.Printf("No labels specified for bucket %s.", config.remoteStateConfigGCS.Bucket)
324:    terragruntOptions.Logger.Printf("Adding labels to GCS bucket with %s", config.GCSBucketLabels)
347:    terragruntOptions.Logger.Printf("Creating GCS bucket %s in project %s", config.remoteStateConfigGCS.Bucket, config.Project)
360:            terragruntOptions.Logger.Printf("Creating GCS bucket in location %s.", config.Location)
365:            terragruntOptions.Logger.Printf("Versioning is disabled for the remote state GCS bucket %s using 'skip_bucket_versioning' config.", config.remoteStateConfigGCS.Bucket)
367:            terragruntOptions.Logger.Printf("Enabling versioning on GCS bucket %s", config.remoteStateConfigGCS.Bucket)
372:            terragruntOptions.Logger.Printf("Enabling uniform bucket-level access on GCS bucket %s", config.remoteStateConfigGCS.Bucket)
383:    terragruntOptions.Logger.Printf("Waiting for bucket %s to be created", config.Bucket)
386:                    terragruntOptions.Logger.Printf("GCS bucket %s created.", config.Bucket)
389:                    terragruntOptions.Logger.Printf("GCS bucket %s has not been created yet. Sleeping for %s and will check again.", config.Bucket, SLEEP_BETWEEN_RETRIES_WAITING_FOR_GCS_BUCKET)

@yorinasub17 Thanks for taking care of this!
@brikis98 I have pushed a change that changes all Printf() to Infof(). While this does not change any functionality, it does expose all of those for review in Github. After those are reviewed, we can come back to explicit Infof():
config/dependency.go
472:    terragruntOptions.Logger.Infof("Detected module %s is already init-ed. Retrieving outputs directly from working directory.", targetConfig)

shell/run_shell_cmd.go
60:     terragruntOptions.Logger.Infof("Running command: %s %s", command, strings.Join(args, " "))

shell/prompt.go
28:             terragruntOptions.Logger.Infof("The non-interactive flag is set to true, so assuming 'yes' for all prompts")

cli/debug.go
24:     terragruntOptions.Logger.Infof(

cli/cli_app.go
357:            terragruntOptions.Logger.Infof(
925:    terragruntOptions.Logger.Infof("%s", stack.String())

remote/remote_state.go
110:            terragruntOptions.Logger.Infof("Backend type has changed from %s to %s", existingBackend.Type, remoteState.Backend)

Here's what I got from rg "(Info)|(Print)" and cutting out the extraneous ones. I probably could get more context for some of these where I only got the function with (, but am also a bit buried to do more than this.

Thanks Yori!
I believe @amnk changed the Print ones to Info, so just looking at the other Info ones you had:

config/dependency.go
472:    terragruntOptions.Logger.Infof("Detected module %s is already init-ed. Retrieving outputs directly from working directory.", targetConfig)

Debugf

shell/run_shell_cmd.go
60:     terragruntOptions.Logger.Infof("Running command: %s %s", command, strings.Join(args, " "))

Debugf

shell/prompt.go
28:             terragruntOptions.Logger.Infof("The non-interactive flag is set to true, so assuming 'yes' for all prompts")

Leave as-is

cli/debug.go
24:     terragruntOptions.Logger.Infof(

Leave as-is

cli/cli_app.go
357:            terragruntOptions.Logger.Infof(

Leave as-is

925:    terragruntOptions.Logger.Infof("%s", stack.String())

Leave as-is

remote/remote_state.go
110:            terragruntOptions.Logger.Infof("Backend type has changed from %s to %s", existingBackend.Type, remoteState.Backend)

Leave as-is

Reviewing the related bugs:

Related: #1529

I'm not sure if this PR addressed this or not. @amnk Could you try to repro and see if this issue is fixed with the logging updates in this PR?

Related: #1530

I believe we are now using Infof to print out the stack, so this should be fixed.

Related: #1531

I'm not sure if this issue is the same as #1530, or if it's about the need to hide logging prompts when --non-interactive is set. If it's the former, we already take care of it; if it's the latter, I guess we could make those prompts Debugf messages when --non-interactive is set, but write them directly to stderr otherwise?

Related: #1532

This seems very close to #1529, where run-all hides logs that are visible otherwise. @amnk Could you try to repro this and see if this PR fixes the problem?

@brikis98 my manual tests show that all 4 issues are resolved by this PR.

#1529
We actually had that in integration tests, but during a switch to logrus I updated a test instead of validating what behavior is preferable 🤦 . So I've also changed that back.

Tests passed! Merging and release now. Thanks @amnk!

https://github.com/gruntwork-io/terragrunt/releases/tag/v0.28.6

@amnk @brikis98 @yorinasub17 the logs are still very verbose after the recent changes with log-level info.
With log-level warn the logs verbosity is perfect, but then the error messages get lost. Is it possible to get the verbosity of warn with the addition of the error messages?
Thanks

This patch was the first one in the series, because changing of logging level was a surprise for many people :) So yeah, I will be working on another PR(s) to make it actually less verbose while still printing relevant error messages.
@dudicoco btw, can you share specific log messages you think are not needed with default output?

Thanks @amnk.
The following log lines appear hundreds of times within the output and I believe are not necessary with the normal log level:
=> Module /Users/xxx/Desktop/Repositories/xxx/xxx/eu-central-1/prod/xxx/s3-bucket/ml (excluded: true, dependencies: [])

INFO[0072]                                               prefix=[/Users/xxx/Desktop/Repositories/xxx]

In particular the INFO[xxxx] log line is a new addition which we didn't see before the recent upgrades.

The following log lines appear hundreds of times within the output and I believe are not necessary with the normal log level:
=> Module /Users/xxx/Desktop/Repositories/xxx/xxx/eu-central-1/prod/xxx/s3-bucket/ml (excluded: true, dependencies: [])

Hm, I believe these are necessary when we are interactively prompt the user if they want to run their run-all command on all these modules. @amnk These probably need to be bundled into the prompt message show to users, so that if --non-interactive is set, they are only logged at the debug level, but otherwise, show up as epxected. Not sure why they would appear hundreds of times though?

INFO[0072]                                               prefix=[/Users/xxx/Desktop/Repositories/xxx]

Not sure what this is. @amnk Could you investigate?

@brikis98 when running terragrunt plan-all the => Module log line appear per directory in the stack, so if the stack has hundreds of directories the log line appears hundreds of times.
In addition to hiding these when --non-interactive which is relevant only to the apply-all command, can we hide them within the plan-all output as well?
Thanks

Not sure what this is. @amnk Could you investigate?

@brikis98 I have opened a PR to fix this here: https://github.com/gruntwork-io/terragrunt/pull/1568.

https://github.com/gruntwork-io/terragrunt/releases/tag/v0.28.8 should improve run-all log output a little bit. More changes coming later.

@brikis98 fyi, 0.28.8 still doesn't have binaries posted to github releases...

@lorengordon Should be available now. Sorry about that!


Make Auth Type extensible with custom form component

Use components for the auth forms for extensibility

Happy to merge, given triton state. Previous e2e run passed and have manually tested


Ability to Copy and Paste from Query Result

I've tried SOQL Builder but I'm sticking with Workbench for now.
The main reason is I can simply highlight a section of the query result in workbench and use cmd->C to copy.  Then I can easily paste to an email, Excel, or any other program as a table.
The navigation stuff on the result of SOQL Builder looks pretty but a simple table you can copy and paste from would be most useful.

Hi @kkoellner - Thank you for trying SOQL Builder and for the feedback!  Can you tell me a bit more about what you're seeing when you try to copy/paste the data - When you highlight a section of the query result in SOQL Builder, are you able to copy it with a cmd+C?
Or is the text not pasting in the format you expect?

From our experimenting, you can highlight and copy the data, but it doesn't paste cleanly into a spreadsheet.  (everything stacks in 1 column vs. the rows & columns as you see in SOQL Builder).  Feel free to add a comment if you are seeing a different result


Disable role when OMERO.web is deployed on Python3

The virtualenv path and system-site-packages depends on whether the OMERO.web role is using Python 2 or 3.
0.2.0 has been merged into https://github.com/ome/ansible-role-omero-web/pull/26 for Python 3.
Benefits:

Faster deployment
Better error recovery when there is a configuration error: Previously you'd deploy ome.omero_web before this role. If you made a configuration error in this role that caused OMERO.web to fail you'd expect to be able to modify this configuration and rerun the playbook. However since ome.omero_web is called first it will attempt to start omero-web before the config fixes in this role are deployed, and will fail.

Given that omero-web is fully installable with pip we could merge this role with omero-web?

0.2.0 has been merged into ome/ansible-role-omero-web#26 for Python 3, this role will fail when omero_web_python3: True

@manics : time to roll this out?


added db port as environmental variable

I am deploying this on Truenas Scale, it is for some reason not possible to expose the database on a port lower than 9000, therefore i made the port dynamic using an environment variable.

Squashing these and will add a follow up PR to create a default.


Missing  OPENSSL_free

            s->session->ext.alpn_selected =
                OPENSSL_memdup(s->s3->alpn_selected, s->s3->alpn_selected_len);
            if (s->session->ext.alpn_selected == NULL) {
                SSLfatal(s, SSL_AD_INTERNAL_ERROR,
                         SSL_F_TLS_CONSTRUCT_NEW_SESSION_TICKET,
                         ERR_R_MALLOC_FAILURE);
                return 0;
            }
            s->session->ext.alpn_selected_len = s->s3->alpn_selected_len;

This code is used in 2 different files, but OPENSSL_free(s->session->ext.alpn_selected) is missed in the second one
https://github.com/openssl/openssl/blob/master/ssl/statem/statem_srvr.c#L4110
https://github.com/openssl/openssl/blob/master/ssl/statem/extensions_clnt.c#L1666
I can provide a pull request if free is missed.
Thanks!

It looks like in the second case OPENSSL_free() is not used because alpn_selected is a new session and already set to NULL.
if (!s->hit) {
    /*
     * This is a new session and so alpn_selected should have been
     * initialised to NULL. We should update it with the selected ALPN.
     */
    if (!ossl_assert(s->session->ext.alpn_selected == NULL)) {
        SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_TLS_PARSE_STOC_ALPN,
                 ERR_R_INTERNAL_ERROR);
        return 0;
    }
    s->session->ext.alpn_selected =
        OPENSSL_memdup(s->s3->alpn_selected, s->s3->alpn_selected_len);
    if (s->session->ext.alpn_selected == NULL) {
        SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_TLS_PARSE_STOC_ALPN,
                 ERR_R_INTERNAL_ERROR);
        return 0;
    }
    s->session->ext.alpn_selected_len = s->s3->alpn_selected_len;
}

In the first case a check for NULL is made and then OPENSSL_free() is used.
if (s->s3->alpn_selected != NULL) {
    OPENSSL_free(s->session->ext.alpn_selected);
    ...
}


Can't map to list of enums.

Related to #823
I'm unable to use Entity Framework Core with list of enums but single enum works fine.
Let's have a look at this example
        // ApplicationDbContext.cs
        public ApplicationDbContext() {
            RegisterEnums();
        }

        public static void RegisterEnums()
        {
            Npgsql.NpgsqlConnection.GlobalTypeMapper.MapEnum<Permission>();
        }

        protected override void OnModelCreating(ModelBuilder builder)
        {
            base.OnModelCreating(builder);

            builder.ForNpgsqlHasEnum<Permission>();
        }

        // ApplicationUser.cs
        public enum Permission: byte {
            Permission1 = 0,
            Permission2 = 1
         }

         public class ApplicationUser : IdentityUser
         {
             // Example 1: This works
             public Permission Permissions { get; set; } = Permission.Permission1;

             // Example 2: This doesn't work
             public List<Permission> Permissions { get; set; } = new List<Permission> { Permission.Permission1, Permission.Permission1 };
         }

Single enum works fine, database is deployed and user can be created but the second example throws following error:
System.NotSupportedException : The CLR array type System.Collections.Generic.List`1[Database.Models.Permission] isn't supported by Npgsql or your PostgreSQL. If you wish to map it to an  PostgreSQL composite type array you need to register it before usage, please refer to the documentation.
Since first example works fine without any changes to the process of mapping enums I don't think there is a problem with my configuration.
Am I using this incorrectly, is it a bug or Npgsql is not supposed to map collections of known enums by itself?

Just to be sure, can you please try the same with an array instead of a List and report on the result?

It was the same with arrays so I started digging more into the issue. I found that somebody had similar issue previously in #513 and the proposed solution worked for me.
It's confusing that types needs to be reloaded after migrations are done but I don't think this is a bug, so I'm closing this issue. Thanks for help!


fix: get latest tag

Fixing this error
Using ENV instead of the deprecated set-output

I added some minor changes to the Dockerfile based on these warnings


Better describe settings_group_validations

Migrated from GitLab: https://gitlab.com/meltano/hub/-/issues/24
Originally created by @tayloramurphy on 2021-05-05 15:15:24

Currently in discovery.yml and now in the hub we have lists representing valid groups of settings. @DouweM indicated there should be a better way to do this.

View 8 previous comments from the original issue on GitLab


Can't install IPFS updates if notifications are disabled

macOS 12.4
Version of IPFS Desktop: unknown, older than 0.21.0

Describe the bug
If notifications are enabled, then a notification appears that lets me update IPFS. If they're disabled, then I can't update IPFS.
To Reproduce
Steps to reproduce the behavior:

Disable notifications for IPFS Desktop
Select "About" > "Check for Updates..." in the menu bar icon
Select "Install Now"
Wait for IPFS to restart
Select "About" > "Check for Updates..." in the menu bar icon
Update is still available

Expected behavior
Update should be installed

Thanks for submitting this issue, I will attempt to reproduce

@SgtPooki this seems to be an issue indeed. I installed 0.20.6 to try it out. Repeating the steps ("About" -> "Check For Updates" -> "Install Now") restarts IPFS Desktop but the updates are not applied. This happens ad infinitum, or at least for the 10 times I tried. However, if we click the notification, which shows the same popup and we click Install Now, then it works
Looking at the code, it is not clear to me why this is happening as the mechanism was working before, albeit not the first time that it fails...

Thanks for confirmation @hacdias. We will look into this further at a later point, but I will adjust priority


autocomplete and import vals

For parity with the val.town editor, adds:

A completions hook which calls the autocomplete API.
A command which imports a val from a completion.
Customization options for versioning behavior when (re)importing vals.

Please test:

[ ] Manually triggering completions with ctrl + space
[ ] Automatically triggering completions on @[<handle>[/<val>]]
[ ] Importing default exports and named exports
[ ] Importing a val which has not been imported before
[ ] Importing a val which has been imported before (with a different version? with other exports?)
[ ] Other combinations of the above
[ ] Settings for auto import

Hey, thanks a lot for your contribution, it looks incredible!
I wonder if all these customization options are necessary. I would vote for just following whatever behaviour the website editor has, so the end user doesn't get confused.


Missing required module 'SocketIO'

Report
What did you do?
Created a brand new project, added the dependency for Mati:
target 'MatiSample' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!

  # Pods for MatiSample
  pod 'Mati-Global-ID-SDK'
end

Ran pod install
Include library in ViewController:
import UIKit
import MatiSDK

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }
}

What did you expect to happen?
Be able to use MatiSDK without any issue
What happened instead?
I get this error message on the import MatiSDK line:
Missing required module 'SocketIO'
CocoaPods Environment
Stack
   CocoaPods : 1.10.1
        Ruby : ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin20]
    RubyGems : 3.0.3
        Host : macOS 11.2 (20D64)
       Xcode : 12.4 (12D4e)
         Git : git version 2.24.3 (Apple Git-128)
Ruby lib dir : /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib
Repositories : trunk - CDN - https://cdn.cocoapods.org/

Installation Source
Executable Path: /usr/local/bin/pod

Plugins
cocoapods-deintegrate : 1.0.4
cocoapods-plugins     : 1.0.0
cocoapods-search      : 1.0.0
cocoapods-stats       : 1.1.0
cocoapods-trunk       : 1.5.0
cocoapods-try         : 1.2.0

Podfile
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

target 'MatiSample' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!

  # Pods for MatiSample
  pod 'Mati-Global-ID-SDK'
end

Project that demonstrates the issue
https://github.com/Frakcool/MatiSample

Hello, what version of Mati library did you use? You should you latest version 3.0.0, target iOS version in Podfile we recommend set to 11.4

Hi @aposnovmati I'm using Mati version 3.0.0 (leaving unspecified in the Podfile, so it's taking the latest version)
I updated the Podfile to include the platform version to 11.4 as recommended, however the issue still persists.
# Uncomment the next line to define a global platform for your project
platform :ios, '11.4'

target 'MatiSample' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!

  # Pods for MatiSample
  pod 'Mati-Global-ID-SDK'
end

Hello, @Frakcool thanks a lot for your message, we just released the 3.0.1 version to fix this issue with dependencies, please update and tell us the result if possible

Hi @aposnovmati it downloads the dependencies, however the same error persists. But we get an error dialog when opening the .xcworkspace file

Perhaps, the dependencies used in Mati are outdated?

Hello @Frakcool for example please use our demo app, it available here https://github.com/GetMati/mati-ios-sdk/tree/master/MatiSDKDemoSwift

It got solved when removing the version from the Podfile. Thanks @aposnovmati :)


[FEATURE]: Action Creates Release

@ktarbet - I have an action that will trigger on a tag/version push creating a release based on the tag.  The action also compiles, zips binaries, and adds that zip asset to the release.  I was thinking this would be easier on the Cumulus-api to get the already compiled objects.  Plus, it will have a version to fix that download for Cumulus.
I can push that change after merging PR #16.

PR #19 adds action to create a release when a tag (version) is pushed to a branch.
Modifications to cumulus-api will be needed before merging.


Synthesis failed for recommendationengine

Hello! Autosynth couldn't regenerate recommendationengine. :broken_heart:
Here's the output from running synth.py:
2020-05-08 16:11:39 [INFO] logs will be written to: /tmpfs/src/github/synthtool/logs/googleapis/google-cloud-php
2020-05-08 16:11:39,712 autosynth > logs will be written to: /tmpfs/src/github/synthtool/logs/googleapis/google-cloud-php
Traceback (most recent call last):
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 596, in <module>
    main()
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 470, in main
    return _inner_main(temp_dir)
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 515, in _inner_main
    working_repo_path = synthtool_git.clone(f"https://github.com/{args.repository}.git")
  File "/tmpfs/src/github/synthtool/synthtool/sources/git.py", line 65, in clone
    preclone = get_preclone(url)
  File "/tmpfs/src/github/synthtool/synthtool/sources/git.py", line 168, in get_preclone
    preconfig = synthtool.preconfig.load()
AttributeError: module 'synthtool' has no attribute 'preconfig'

Google internal developers can see the full log here.

Autosynth is still having trouble generating recommendationengine. :sob:
Here's the output from running synth.py:
2020-05-08 17:09:03 [INFO] logs will be written to: /tmpfs/src/github/synthtool/logs/googleapis/google-cloud-php
2020-05-08 17:09:03,771 autosynth > logs will be written to: /tmpfs/src/github/synthtool/logs/googleapis/google-cloud-php
Switched to branch 'autosynth-recommendationengine'
2020-05-08 17:09:04 [INFO] Running synthtool
2020-05-08 17:09:04,346 autosynth > Running synthtool
2020-05-08 17:09:04 [INFO] ['/tmpfs/src/github/synthtool/env/bin/python3', '-m', 'synthtool', '--metadata', 'synth.metadata', 'synth.py', '--']
2020-05-08 17:09:04,347 autosynth > ['/tmpfs/src/github/synthtool/env/bin/python3', '-m', 'synthtool', '--metadata', 'synth.metadata', 'synth.py', '--']
tee: /tmpfs/src/github/synthtool/logs/googleapis/google-cloud-php: Is a directory
2020-05-08 17:09:04,559 synthtool > Executing /home/kbuilder/.cache/synthtool/google-cloud-php/RecommendationEngine/synth.py.
 Does the source contain files?
2020-05-08 17:09:52,142 synthtool > Replaced '(namespace|use) Google\\\\Cloud\\\\Recommendationengine' in tests/Unit/V1beta1/PredictionApiKeyRegistryClientTest.php.
2020-05-08 17:09:52,142 synthtool > Replaced '(namespace|use) Google\\\\Cloud\\\\Recommendationengine' in tests/Unit/V1beta1/CatalogServiceClientTest.php.
2020-05-08 17:09:52,143 synthtool > Replaced '(namespace|use) Google\\\\Cloud\\\\Recommendationengine' in tests/Unit/V1beta1/UserEventServiceClientTest.php.
2020-05-08 17:09:52,143 synthtool > Replaced '(namespace|use) Google\\\\Cloud\\\\Recommendationengine' in tests/Unit/V1beta1/PredictionServiceClientTest.php.
2020-05-08 17:09:52,148 synthtool > Replaced '(namespace|use) Google\\\\Cloud\\\\Recommendationengine' in src/V1beta1/PredictionServiceClient.php.
2020-05-08 17:09:52,148 synthtool > Replaced '(namespace|use) Google\\\\Cloud\\\\Recommendationengine' in src/V1beta1/CatalogServiceClient.php.
2020-05-08 17:09:52,149 synthtool > Replaced '(namespace|use) Google\\\\Cloud\\\\Recommendationengine' in src/V1beta1/PredictionApiKeyRegistryClient.php.
2020-05-08 17:09:52,155 synthtool > Replaced '(namespace|use) Google\\\\Cloud\\\\Recommendationengine' in src/V1beta1/UserEventServiceClient.php.
2020-05-08 17:09:52,160 synthtool > Replaced '(namespace|use) Google\\\\Cloud\\\\Recommendationengine' in src/V1beta1/Gapic/PredictionApiKeyRegistryGapicClient.php.
2020-05-08 17:09:52,160 synthtool > Replaced '(namespace|use) Google\\\\Cloud\\\\Recommendationengine' in src/V1beta1/Gapic/CatalogServiceGapicClient.php.
2020-05-08 17:09:52,161 synthtool > Replaced '(namespace|use) Google\\\\Cloud\\\\Recommendationengine' in src/V1beta1/Gapic/UserEventServiceGapicClient.php.
2020-05-08 17:09:52,162 synthtool > Replaced '(namespace|use) Google\\\\Cloud\\\\Recommendationengine' in src/V1beta1/Gapic/PredictionServiceGapicClient.php.
2020-05-08 17:09:52,164 synthtool > Replaced "'serviceAddress' =>" in src/V1beta1/Gapic/PredictionApiKeyRegistryGapicClient.php.
2020-05-08 17:09:52,164 synthtool > Replaced "'serviceAddress' =>" in src/V1beta1/Gapic/CatalogServiceGapicClient.php.
2020-05-08 17:09:52,164 synthtool > Replaced "'serviceAddress' =>" in src/V1beta1/Gapic/UserEventServiceGapicClient.php.
2020-05-08 17:09:52,165 synthtool > Replaced "'serviceAddress' =>" in src/V1beta1/Gapic/PredictionServiceGapicClient.php.
2020-05-08 17:09:52,166 synthtool > Replaced '@type string \\$serviceAddress\\n\\s+\\*\\s+The address' in src/V1beta1/Gapic/PredictionApiKeyRegistryGapicClient.php.
2020-05-08 17:09:52,166 synthtool > Replaced '@type string \\$serviceAddress\\n\\s+\\*\\s+The address' in src/V1beta1/Gapic/CatalogServiceGapicClient.php.
2020-05-08 17:09:52,167 synthtool > Replaced '@type string \\$serviceAddress\\n\\s+\\*\\s+The address' in src/V1beta1/Gapic/UserEventServiceGapicClient.php.
2020-05-08 17:09:52,167 synthtool > Replaced '@type string \\$serviceAddress\\n\\s+\\*\\s+The address' in src/V1beta1/Gapic/PredictionServiceGapicClient.php.
2020-05-08 17:09:52,168 synthtool > Replaced '\\$transportConfig, and any \\$serviceAddress' in src/V1beta1/Gapic/PredictionApiKeyRegistryGapicClient.php.
2020-05-08 17:09:52,168 synthtool > Replaced '\\$transportConfig, and any \\$serviceAddress' in src/V1beta1/Gapic/CatalogServiceGapicClient.php.
2020-05-08 17:09:52,169 synthtool > Replaced '\\$transportConfig, and any \\$serviceAddress' in src/V1beta1/Gapic/UserEventServiceGapicClient.php.
2020-05-08 17:09:52,169 synthtool > Replaced '\\$transportConfig, and any \\$serviceAddress' in src/V1beta1/Gapic/PredictionServiceGapicClient.php.
2020-05-08 17:09:52,170 synthtool > Replaced 'Copyright \\d{4}' in src/V1beta1/CatalogServiceGrpcClient.php.
2020-05-08 17:09:52,172 synthtool > Replaced 'Copyright \\d{4}' in src/V1beta1/PredictionServiceGrpcClient.php.
2020-05-08 17:09:52,173 synthtool > Replaced 'Copyright \\d{4}' in src/V1beta1/PredictionServiceClient.php.
2020-05-08 17:09:52,173 synthtool > Replaced 'Copyright \\d{4}' in src/V1beta1/CatalogServiceClient.php.
2020-05-08 17:09:52,174 synthtool > Replaced 'Copyright \\d{4}' in src/V1beta1/PredictionApiKeyRegistryClient.php.
2020-05-08 17:09:52,176 synthtool > Replaced 'Copyright \\d{4}' in src/V1beta1/PredictionApiKeyRegistryGrpcClient.php.
2020-05-08 17:09:52,177 synthtool > Replaced 'Copyright \\d{4}' in src/V1beta1/UserEventServiceGrpcClient.php.
2020-05-08 17:09:52,178 synthtool > Replaced 'Copyright \\d{4}' in src/V1beta1/UserEventServiceClient.php.
2020-05-08 17:09:52,181 synthtool > Replaced 'Copyright \\d{4}' in src/V1beta1/Gapic/PredictionApiKeyRegistryGapicClient.php.
2020-05-08 17:09:52,181 synthtool > Replaced 'Copyright \\d{4}' in src/V1beta1/Gapic/CatalogServiceGapicClient.php.
2020-05-08 17:09:52,181 synthtool > Replaced 'Copyright \\d{4}' in src/V1beta1/Gapic/UserEventServiceGapicClient.php.
2020-05-08 17:09:52,181 synthtool > Replaced 'Copyright \\d{4}' in src/V1beta1/Gapic/PredictionServiceGapicClient.php.
2020-05-08 17:09:52,184 synthtool > Replaced 'Copyright \\d{4}' in tests/Unit/V1beta1/PredictionApiKeyRegistryClientTest.php.
2020-05-08 17:09:52,184 synthtool > Replaced 'Copyright \\d{4}' in tests/Unit/V1beta1/CatalogServiceClientTest.php.
2020-05-08 17:09:52,185 synthtool > Replaced 'Copyright \\d{4}' in tests/Unit/V1beta1/UserEventServiceClientTest.php.
2020-05-08 17:09:52,185 synthtool > Replaced 'Copyright \\d{4}' in tests/Unit/V1beta1/PredictionServiceClientTest.php.
2020-05-08 17:09:52,187 synthtool > No replacements made in src/*/*_*.php for pattern will be removed in the next major release, maybe replacement is no longer needed?
2020-05-08 17:09:52,198 synthtool > No replacements made in src/**/V*/**/*.php for pattern Generated from protobuf field ([^\n]{0,})\n\s{5}\*/\n\s{4}protected \$, maybe replacement is no longer needed?
2020-05-08 17:09:52,208 synthtool > No replacements made in src/**/V*/**/*.php for pattern final class, maybe replacement is no longer needed?
2020-05-08 17:09:52,219 synthtool > No replacements made in src/**/V*/**/*.php for pattern public function ([s|g]\w{3,})Unwrapped, maybe replacement is no longer needed?
2020-05-08 17:09:52,447 synthtool > No replacements made in src/**/V*/**/*.php for pattern (.{0,})\]\((/.{0,})\), maybe replacement is no longer needed?
2020-05-08 17:09:52,448 synthtool > Wrote metadata to synth.metadata.
Traceback (most recent call last):
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 597, in <module>
    main()
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 471, in main
    return _inner_main(temp_dir)
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 547, in _inner_main
    ).synthesize(base_synth_log_path)
  File "/tmpfs/src/github/synthtool/autosynth/synthesizer.py", line 120, in synthesize
    with open(log_file_path, "rt") as fp:
IsADirectoryError: [Errno 21] Is a directory: '/tmpfs/src/github/synthtool/logs/googleapis/google-cloud-php'

Google internal developers can see the full log here.

Autosynth passed, closing! :green_heart:


[REQUEST] Rework TCP Connect

Is your feature request related to a problem? Please describe.
the 200 ms I set sometimes are too long and sometimes not long enough, so the user i originally did the fix for wants a other solution
Describe the solution you'd like
A "do not wait for banner" switch  on TCP Connect to either wait forever for a connect message or not to wait
Describe alternatives you've considered
yep - to make the hardcoded wait time configurable - but the other one is prefered
Additional context
adding as an issiue so it wont get forgotten ;)

https://github.com/openbullet/openbullet/commit/22c4f50b37833e8b864b177e20b2e05fcf45b156


⚠ Fortnite has degraded performance

In 0b7879c, Fortnite (https://fortnite.com) experienced degraded performance:

HTTP code: 200
Response time: 1872 ms

Resolved: Fortnite performance has improved in c344ec3.


Issue template and Pull Request template added

Templates added
Description

Issue template has been added to the project
Pull request template has been added to the project

Additional Info: https://github.com/blog/2111-issue-and-pull-request-templates

Hi Diego! :) Thanks for finding a motivation to contribute to my project, I really appreciate this!
Usually PR/Issue templates are very specific from one project to another, and I think this case is not an exception. The templates you uploaded seem to be copied from somewhere, at least at the first glance.
There are a couple of things in your templates which I would consider to re-think:
Issue template

OS version -> Browser version
What's Butter in about tab?
Screenshots can be mentioned without a link to a specific software/service which do screenshots.

PR template

I think Migrations is odd.
Related PRs/branches almost never happen as well, the project is not so big. Those who work "on big parts" already know how to design a PR descriptions.
Todos, as well, odd here. No one will accept PRs that add more work.
Impacted areas are always obvious.
No /CONTRIBUTING.md, but the link to file exists.

And I think writing a lot of requirements usually repels people who just want to contribute a tiny fix :) I have never met PRs that I could not understand or discuss because of the lack of the information.
Please, let me know what do you think.

Haha, but your PR triggered a Codacy re-ranking on the repository and now it's C 😃

Hey! Yeah it is jut an starting point, I just wanted your thoughts about it, I'll start adjusting what you just mentioned and start improving the templates.

@daguttierrez, check for example this template I created in another project. Try to keep it short and friendly if possible :)

I am closing this PR due to inactivity. @daguttierrez, let me decide this time about templates by myself. I know you try to do good things but usually templates are something the owners of the repository decide to add theirselves (like project description, etc).


Ability to Save Shortcodes or code as templates in HTML Editor

Feature request to have the ability to save shortcode that has been created for a site by a content manager(s) that use the DNN HTML Editor may get access to reused on other pages.  Maybe a repository system people can create shortcodes to be used in DNN available on github downloads that DNN can access.
User can select from list of available shortcode examples by category or types defined when creating the template code file with the shortcode and injects it where the curser is while editing in code editor view.
Most all options are greyed out during code view, it would be nice to see some appear.
Also some ways to access some common dnn objects with an intellesense designed to help access dnn resources.  This could also be added to the module designer if it does not already have intellisense of some type.
Suppose Im full of ideas today going to take a pause them now as maybe this stuff is a bit far fetched for DNN right now.  Just thought it was something to think about if it is not in focus right now.

@thabaum sorry for closing so many of your issues, I am just trying to clean the backlog of stale issues that are not yet actionable or had not much conversation towards making them actionable. If you see there is interest from someone to develop such feature, then the proper repository for this one would be https://github.com/DNN-Connect/CKEditorProvider


Default https debug needs to be addressed

Hi
While testing out Integration testing in my VS 15.7.0 preview 3 with .net Core 2.1 I could´t get the integration tests to pass because of

"Response status code does not indicate success: 307 (Temporary Redirect)."

I had to add the following line to get it to work. It just overrides the http to https
_client.BaseAddress = new System.Uri("https://localhost/");
Is that how you should do it or is there something else you should do.
I could not find any "switch" for it.
At least this worked for me.
But it feels somewhat hacky...

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

ID: bda5d096-4337-3256-afcd-fe45436a2067
Version Independent ID: a9e691a2-a8bf-b477-88aa-73676896b75e
Content: Integration tests in ASP.NET Core
Content Source: aspnetcore/testing/integration-testing.md
Service: unspecified
GitHub Login: @ardalis
Microsoft Alias: riande

@sturlath You asked at the perfect time. We're working on the doc for this scenario as we speak on https://github.com/aspnet/Docs/pull/6086.
AFAIK, yes, you set the base address on the client options. We have this in the draft doc thus far ...
var clientOptions = new WebApplicationFactoryClientOptions();
clientOptions.AllowAutoRedirect = true;
clientOptions.BaseAddress = new Uri("http://localhost");
clientOptions.HandleCookies = true;
clientOptions.MaxAutomaticRedirections = 7;

_client = testWebAppFactory.CreateClient(clientOptions);

... and it doesn't address your scenario (yet! :smile:) for testing against a secure endpoint.
I'll add a note+example to the Client options section if confirmed ... @javiercn, cool? ...

To test against a secure endpoint, provide a secure endpoint address to the BaseAddress property of the client options:

clientOptions.BaseAddress = new Uri("https://localhost");

Closing this as it has been answered. This can also be done when overriding the factory. On the derived factory constructor you can just do ClientOptions.BaseAddress = new Uri("https://localhost"); and then on the tests you just call CreateClient().


$populate example in docs has a typo

const service = require('feathers-mongoose');
app.use('/posts', mongoose({
Model,
whitelist: [ '$populate' ]
});
should be
const mongoose = require('feathers-mongoose')

Makes sense. You can submit a pull request by clicking the edit button at https://github.com/feathersjs-ecosystem/feathers-mongoose/blob/master/README.md and making the change.


StackBlitz: temporary start command workaround

Description
Temporary fix for #1395

Before submitting the PR, please make sure you do the following:

[x] Read the Contributing Guidelines
[x] Provide a description in this PR that addresses what the PR is solving, or reference the issue that it solves (e.g. fixes #123)
[ ] Update docs in this repository according to your change
[ ] Run yarn changeset add if this PR cause a version bump based on Keep a Changelog and adheres to Semantic Versioning

I was thinking in deploying this to Stackblitz but that would mean we publish a bunch of breaking changes from main branch.
Maybe we could merge this into a new branch that only has 0.22.1 version of Hydrogen, and then publish that to SB? @scottdixon


chore: migrate jsii-kernel tests to jest

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

AWS CodeBuild CI Report

Result: FAILED
Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository

Coverage report:

File
% Stmts
% Branch
% Funcs
% Lines
Uncovered Line #s

All files
85.14
74.62
94.12
89.08

api.ts
100
100
100
100

index.ts
100
100
100
100

kernel.ts
91.22
78.74
98.63
92.33
... 1054,1055,1057

objects.ts
95.24
81.25
100
95.24
89,109

serialization.ts
73.31
69.53
85.11
81.33
... 85,586,590,630

------------------
----------
----------
----------
----------
-------------------

AWS CodeBuild CI Report

Result: SUCCEEDED
Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository

AWS CodeBuild CI Report

Result: SUCCEEDED
Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository


Revise list of events that could result in monitoring redeploy

We have to revise the list of events triggering monitoring controlling redeploy. Today the list seems to be too excessive - even the user workload deployment results in monitoring deploy evaluation.

Now we are watching cluster obj and it makes the monitoring controller busy as cluster obj changed a lot.
With the fix in https://github.com/rancher/rancher/issues/20202 , Rancher will not re-deploy monitoring.
However, I don't think we should re-generate the monitoring app answers even when users deploy a workload.
@orangedeng @thxCode  is there a way we can avoid this situation?


Still complaining about UDP receive buffer size even though net.core.rmem_max has been increased

quic-go v0.35.1 still complains about the UDP receive buffer size on Ubuntu 22.04.2 LTS with kernel 5.19.0-45-generic even though:
> sysctl net.core.rmem_max
net.core.rmem_max = 2500000

2023/06/26 11:44:13 failed to sufficiently increase send buffer size (was: 208 kiB, wanted: 2048 kiB, got: 416 kiB). See https://github.com/quic-go/quic-go/wiki/UDP-Receive-Buffer-Size for details.
This is running dnsproxy straight up on the host, not in a container.

The error is about the send buffer net.core.wmem_max not the receive buffer.
The help page should be updated.

Thank you @jfgiorgi! I updated the wiki page: https://github.com/quic-go/quic-go/wiki/UDP-Buffer-Sizes

That was it. Thank you.


Typescript type error: Cannot yield promise

Hello, I'm trying to yield a promise inside a saga (in 0.15.6, ts 2.5.2), but I'm getting the following error when I transpile:
Type 'Promise<any>' is not assignable to type 'RootEffect | TakeEffect | ChannelTakeEffect<any> | PutEffect<any> | ChannelPutEffect<any> | AllEf...'.
  Type 'Promise<any>' is not assignable to type 'Effect[]'.
    Property 'includes' is missing in type 'Promise<any>'.

Note that the code actually works, it's the type errors that's failing.
See example code below:
function* saga (): SagaIterator {
	const response: Response = yield call(fetch, 'http://www.example.com/')
	const body = yield response.json()
}

SagaIterator is meant to be used for strict type checks where you only yield effects. It is completely opt-in, if you don't need such strictness, you may just remove SagaIterator annotation.

Ah okay, my bad. Closing this.


Locale member field on generated localization class,

Make the Locale a member field on the generated localization class, and use its canonicalized name when invoking Intl.message. This allows clients to handle translations for multiple locales, using different instances of the generated localization class.

Hi @nielsenko, thanks for the PR!
Seems this creates a breaking change on how some API is used till now, for example how you can get current locale (till now it was by calling Intl.getCurrentLocale()).
Maybe to postpone this change till the next major version release

Hi @nielsenko, thanks for the PR!
Seems this creates a breaking change on how some API is used till now, for example how you can get current locale (till now it was by calling Intl.getCurrentLocale()).
Maybe to postpone this change till the next major version release

Linked issue from IntelliJ IDE plugin: https://github.com/localizely/flutter-intl-intellij/issues/26

Linked issue from IntelliJ IDE plugin: https://github.com/localizely/flutter-intl-intellij/issues/26

You can still get the current locale by calling Intl.getCurrentLocale. load works the same as before. But now you have the option, if you wish, to hold onto a previously loaded instance with a different locale than the current.

You can still get the current locale by calling Intl.getCurrentLocale. load works the same as before. But now you have the option, if you wish, to hold onto a previously loaded instance with a different locale than the current.

+1 , merging this would indeed solve the multiple localization issue.

+1 , merging this would indeed solve the multiple localization issue.

Hi @nielsenko, @Claudishe,
Thank you for your contribution and feedback!
I've tested the PR code, and it looks like a solution for the multiple localization issue.
The problem with this approach is that it will create a breaking change for existing users. So far, we were suggesting usage of S.load(Locale(...)); for programmatically changing a locale within an app and usage of S.of(context).stringKey for referencing the keys in the Dart code. With this merge, all users who followed our docs will have a problem, and their code won't work.
I agree with the @aleksakrstic that we should postpone this change till the next major version release as it solves the mentioned issue, and maybe to try to find a way to ease this transition.
In case I missed something, or if there is a way to avoid mentioned breaking change, please let us know.

Hi @nielsenko, @Claudishe,
Thank you for your contribution and feedback!
I've tested the PR code, and it looks like a solution for the multiple localization issue.
The problem with this approach is that it will create a breaking change for existing users. So far, we were suggesting usage of S.load(Locale(...)); for programmatically changing a locale within an app and usage of S.of(context).stringKey for referencing the keys in the Dart code. With this merge, all users who followed our docs will have a problem, and their code won't work.
I agree with the @aleksakrstic that we should postpone this change till the next major version release as it solves the mentioned issue, and maybe to try to find a way to ease this transition.
In case I missed something, or if there is a way to avoid mentioned breaking change, please let us know.

Hi @lzoran
Thanks for your reply, and sorry for the delayed response.
Yes, I noticed that you advocate calling S.load(newLocale) directly, which in turn sets Intl.defaultLocale to the new locale *, and that many users are probably following this advice. I think it is more fluttery to manipulate the MaterialApp. localeListResolutionCallback to return the new locale, or to inject a Localization widget with the new locale explicitly in your widget tree. If you do that, then all S.of(context).xxx calls will work fine, and this PR will not cause a breaking change.
However, since you ask explicitly, howto allow direct S.load(newLocale) calls to work (which obviously doesn't cause the nearest Localization widget to change its locale), and still have S.of(context) (which is really just a wrapper around Localization.of<S>(context, S) return an S that uses the Intl.defaultLocale instead of the one given on load, then one way could be to hide the new behaviour behind a static configuration flag on S, and let users opt-in explicitly.
The idea is to ensure that the field localeName is set to null depending on a new static boolean property S.trackIntlDefaultLocale that defaults to true.  If trackIntlDefaultLocale is false, then store the canonicalized name in localeName otherwise leave it as null.  In that case the behaviour is identical to before, since the previously omitted locale parameter on the calls to Intl.message defaults to null anyway, and users can opt-in to the new behaviour, by setting S.trackIntlDefaultLocale = false before using S.of(context) the first time**.
If you agree with this idea, then I can implement it tomorrow. It is a very minor change.
* Actually I don't like that S.load sets Intl.defaultLocale at all, but that is a discussion for another day.
** I'm not sure trackIntlDefaultLocale is the best name, but I have yet to come up with a better one.

Hi @lzoran
Thanks for your reply, and sorry for the delayed response.
Yes, I noticed that you advocate calling S.load(newLocale) directly, which in turn sets Intl.defaultLocale to the new locale *, and that many users are probably following this advice. I think it is more fluttery to manipulate the MaterialApp. localeListResolutionCallback to return the new locale, or to inject a Localization widget with the new locale explicitly in your widget tree. If you do that, then all S.of(context).xxx calls will work fine, and this PR will not cause a breaking change.
However, since you ask explicitly, howto allow direct S.load(newLocale) calls to work (which obviously doesn't cause the nearest Localization widget to change its locale), and still have S.of(context) (which is really just a wrapper around Localization.of<S>(context, S) return an S that uses the Intl.defaultLocale instead of the one given on load, then one way could be to hide the new behaviour behind a static configuration flag on S, and let users opt-in explicitly.
The idea is to ensure that the field localeName is set to null depending on a new static boolean property S.trackIntlDefaultLocale that defaults to true.  If trackIntlDefaultLocale is false, then store the canonicalized name in localeName otherwise leave it as null.  In that case the behaviour is identical to before, since the previously omitted locale parameter on the calls to Intl.message defaults to null anyway, and users can opt-in to the new behaviour, by setting S.trackIntlDefaultLocale = false before using S.of(context) the first time**.
If you agree with this idea, then I can implement it tomorrow. It is a very minor change.
* Actually I don't like that S.load sets Intl.defaultLocale at all, but that is a discussion for another day.
** I'm not sure trackIntlDefaultLocale is the best name, but I have yet to come up with a better one.

Hi @nielsenko
Using Localization widget in the widget tree sounds like a solution. Though localeListResolutionCallback seems to be useful just for initial locale resolution based on device's configuration.
I am more for using something like flutter_intl.version: 2 param in pubspec.yaml for configuring how to generate the code, and to allow next major version (2) to use just one approach (proposed in this PR). That way we might document latest version in the current links, and create old approach documentation in additional links. Otherwise users of this package will be definitely easily confused with different approaches.
I am for leaving this PR open till we come to the moment to release next major version (date not yet known), since the PR contains useful code changes.

Hi @nielsenko
Using Localization widget in the widget tree sounds like a solution. Though localeListResolutionCallback seems to be useful just for initial locale resolution based on device's configuration.
I am more for using something like flutter_intl.version: 2 param in pubspec.yaml for configuring how to generate the code, and to allow next major version (2) to use just one approach (proposed in this PR). That way we might document latest version in the current links, and create old approach documentation in additional links. Otherwise users of this package will be definitely easily confused with different approaches.
I am for leaving this PR open till we come to the moment to release next major version (date not yet known), since the PR contains useful code changes.

Some complain:
"Waiting for next major version" has been told more than 1 year, flutter has already been changed a lot. But this one did keep telling waiting for next major version without any prerelease or related commit. This pr is not difficult to modify and merge into beta branch.
https://github.com/narumishi/intl_utils
This folk has been solved two problem:
1. multi-localization
simply modified the solution of @nielsenko . Here are some changes:

canonicalizedName call toString() directly when scriptCode is non-null. May be improved furthermore.
S.load(Locale locale, {bool override = false}) add a param to decide whether to override S._current. If users access from S.of(context), nothing changed. But if you get used to use S.current, you need to manual call S.load(locale, override:true) to override the static _current.

  static Future<S> load(Locale locale, {bool override = false}) {
    final localeName = locale.canonicalizedName;
    return initializeMessages(localeName).then((_) {
      final localizations = S(locale);
      if (override || S._current == null) {
        Intl.defaultLocale = localeName;
        S._current = localizations;
      }
      return localizations;
    });
  }

2. hot-reload
See:

#56

add a function called reloadMessages in messages_all.dart
Map<String, LibraryLoader> get _deferredLibraries => {
      'ar': () => new Future.value(null),
      'en': () => new Future.value(null),
      'es': () => new Future.value(null),
      'ja': () => new Future.value(null),
      'ko': () => new Future.value(null),
      'zh': () => new Future.value(null),
      'zh_Hant': () => new Future.value(null),
    };

Future<void> reloadMessages() async {
  for (final lib in _deferredLibraries.values) {
    await lib();
  }
  messages_ar.messages.messages.clear();
  messages_ar.messages.messages.addAll(messages_ar.MessageLookup().messages);
  messages_en.messages.messages.clear();
  messages_en.messages.messages.addAll(messages_en.MessageLookup().messages);
  // more languages...
}

Changes:

_deferredLibraries now is a getter not  final. When you add/delete language or change defer-loading behaviour, a final field will never update.
if you want to automatically reloadMessages when hot-reload, call it in your root StatefuleWidget's reassemble method. reassemble only called in debug mode, so don't worry in release mode.

// root StatefuleWidget
  @override
  void reassemble() {
    super.reassemble();
    reloadMessages();
  }

Hi @narumishi
I understand, but code changes are just part of all changes needed for such releases.
And it is not yet good moment for those.
Appreciate your contribution!

I will join the complaint bandwagon on this issue. I have been searching for a solution to his for a month now since I did not think about the underlying issue being in this package.
A few hours ago, I finally found this issue: https://github.com/flutter/flutter/issues/40353
It links to this PR: https://github.com/flutter/website/pull/3013
Changing the following part of the official documentation: https://docs.flutter.dev/development/accessibility-and-localization/internationalization#defining-a-class-for-the-apps-localized-resources
As you can see, it is not good practice to create a singleton in this case (most of the time, singletons are considered anti-patterns anyway... So it is a good time to finally get rid of them!).
Accordingly, I fixed the issue myself: https://github.com/ThexXTURBOXx/intl_utils/commit/4504de30bfa3fc6bfb3a5bd94078815de11c51b9
It was only after that that I found this PR and wonder why this has not been merged in over a year!
I am pretty sure that I am not the only person who has spent such a considerable amount of time trying to find the underlying issue.
I disagree with the overall opinion here that this PR is not worthy being merged yet because a new major release would be needed to announce the breaking change.
Yes, a new major release is definetly needed, but also kind of inevitable.
What stops us from just merging either this PR or (even better) @narumishi's changes and publishing them in a new major release?
Their branch does not remove functionality, but rather fixes a (in my eyes) major bug with the current system.
Yes, some code changes might be needed in some applications that use this library, but a major release stops automatic upgrades anyway.
So, noone will be able to complain about such changes anyways.
Please, fix this issue already!

Any news on this bug? It is still an issue and it would be great if it can be fixed.

I am still actively maintaining my fork (and hence this PR) as I think this is the right way to fix this issue. Ever since opening my PR, I am using my fork instead of the official package.
Alas, I believe that this will never get merged into the official version


Db command

This PR enables all the existing commands for the bot. Fixes #5 and fixes #11 as well.

@smartclash changes have been applied  :)


Use native scrollIntoView method so it correctly accounts for paddings and scroll-margins

The DIY scroll into view calculations don't correctly account for paddings and scroll-margins. By using the native scrollInfoView method elements won't be clipped when they are styled by the users.

Before
After

This looks like a great change! It looks like some of the tests/linters failed, but they might be fixed just by using npm run lint. In addition, could you also bump the minor version number for this change? Thank you!

@csculley linted and version bumped 👍

On second thought, maybe this could be just a patch version, but I'm not sure it matters too much. I've requested for some reviews, but this looks good to me!


manually configure broker config  waitTimeMillsInSendQueue  parameter

Original value 200 is too short.

Please follow our issue template, if you have any issue report.


How to hide the URL tab within the insert image window?

How can I hide the URL tab in the insert image window?

I found in the source code where the URL tab is being added and was able to remove it successfully.  It would be really nice to be able to specify editor option to hide URL image tab, such as hideImageURLTab: true


[Bug]: await connectWallet with autoSelect and disableModals will stuck forever if the injected provider is not found

Current Behavior
Using await onboard.connectWallet() with autoSelect and disableModals seems to be the only way to connect all the previously connected wallets.
I followed the instruction here https://docs.blocknative.com/onboard/core#auto-selecting-a-wallet
for (const walletLabel of prevConnectedWallets.reverse()) {
    await onboard.connectWallet({
        autoSelect: {
            label: walletLabel,
            disableModals: true,
        },
    });
}

But if one of the wallet extension is closed or crashed, the autoSelect will fail (to look up for the injected provider) and the connectWallet will stuck there without returning anything (since disableModals)
Expected Behavior
The await connectWallet with autoSelect and disableModals should return when the auto select failed (maybe injected provider not found) instead of hanging there.
Since the modal is disabled, the behavior should be different in my opinion.
Steps To Reproduce
Easy way to reproduce

Connect to a none existed wallet
Instead of returning error, it will stuck there

await onboard.connectWallet({
    autoSelect: {
        label: 'Wallet not found',
        disableModals: true,
    },
 });

Practical case

Connect to a closed wallet extension
Instead of returning error, it will stuck there

await onboard.connectWallet({
    autoSelect: {
        label: 'MetaMask',
        disableModals: true,
    },
 });

What package is effected by this issue?
@web3-onboard/core
Is this a build or a runtime issue?
Runtime
Package Version
2.5.0
Node Version
18.6.0
What browsers are you seeing the problem on?
Chrome
Relevant log output
No response
Anything else?
No response
Sanity Check

[X] If this is a build issue, I have included my build config. If this is a runtime issue, I have included reproduction steps and/or a Minimal, Reproducible Example.

Hey @mayone, thanks for reporting, I will take a look at this today.


Export non-patched console

First of all thank you for this great library, I wouldn't be able to use Next without it.
I was wondering if it would be possible to export an unpatched version of the console when we patch it.
It would be very useful for specific edge cases where we need to output something to the console without wanting to format it.
My specific use case is with nextjs middleware.
The middleware forces the use of the "browser" version of pino, and this redirects all logs to the console.
This creates nested logs where the string logged is inside a log that is then sent by pino to the console and re-wrapped by next-logger.
With access to the original unpatched version of the console it would be possible to change this so that after the logs is processed by pino in my application they are sent directly to the console without passing through next-logger.

What would be the most ergonomic way for you to consume this? Extra methods, or an exported originalConsole/unpatchedConsole?

I think an exported originalConsole might feel easier to use, but I'm not
sure if it will cause any issues importing that from the next-logger config
file?
If that would be a problem then any other way of accessing the original
console would be great anyway
On Fri, 12 Jul 2024, 08:38 Chris Atkin, @.***> wrote:

What would be the most ergonomic way for you to consume this? Extra
methods, or an exported originalConsole/unpatchedConsole?
—
Reply to this email directly, view it on GitHub
https://github.com/sainsburys-tech/next-logger/issues/46#issuecomment-2225006030,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AGMNAYW7IKRPZFL5S6Z5BZDZL6BZFAVCNFSM6AAAAABKVGJEIWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEMRVGAYDMMBTGA
.
You are receiving this because you authored the thread.Message ID:
@.***>

I've run into this problem, too. Easiest workaround seems to be just using console.{debug,log,warn,error} in the middleware, but it'd be nice being able to set log levels etc - especially since middlewares usually handle some really important tasks, like authentication.
Not sure how exposing an unpatchedConsole would work though, since you can't import next-logger in middlewares (crashes with "The edge runtime does not support Node.js 'fs' module").
Another approach would be an option to pass through lines which seem to already be JSON, either determined by some ugly heuristic like line.startsWith('{') && line.endsWith('}'), by full-blown JSON parsing, something in between, or allowing a caller-defined function.


Framework

Description

README.md

Defined the versioning structure with examples, defined the definition of test compatibility with examples, and explained the process of releases in the context of the versioning structure and test compatibility.

tests/README.md

Defined the tapping procedure, and created a template for creating tests

tests/sit_stand_sit_v0.0.0

Defined the initial version of the sit stand sit test

Requirements
None
Issues Referenced
None
Documentation update
Documentation is all within commit/PR
Testing
No testing, no code contained within commit
Shared files

See release

Checklist to allow merge

[ ] All dependent repositories used were on branch master
Software

[ ] Get approval from the reviewer
[ ] Passed testing on Windows
[ ] Passed testing on macOS (for major changes/GUI changes/ PRs adding files distributed with the EmotiBit software)
[ ] Passed testing on linux (ubuntu) (for major changes/GUI changes/ PRs adding files distributed with the EmotiBit software)
[ ] Update software bundle version in ofxEmotiBitVersion.h

Firmware

[ ] Set testingMode to TestingMode::NONE
[ ] Set const bool DIGITAL_WRITE_DEBUG = false (if set true while testing)
[ ] Update version in EmotiBit.h
[ ] Update library.properties to the correct version (should match EmotiBit.h)

[ ] doxygen style comments included for new code snippets
[ ] Required documentation updated

Screenshots:

Merged outstanding PR after brief review.
I aim to create issues to maybe question defined principles/methodologies and maybe roadmap some next steps.


chore(test): avoid project .yamlfmt pollution while running tests

In my environment WSL2 ubuntu and installing https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb, current tests fails with 2 testdata
    1) config-none
    2) config-xdg

As I understand this results, the test runner unexpectedly respect project .yamlfmt.
So this PR attempt to ignore the file while running tests.

Hi, thanks. I am not sure why this file is even there. Maybe we should just delete it. Perhaps we can still keep your code in case it ends up being there.
On the other hand, I dont understand why it doing that. Its been a while since i wrote this, and I recall the test electron instance doing some weird things.

Thanks for your reviewing! Using yamlfmt in this repository sounds like a reasonable method for dogfooding. I'm okay for renaming to another path or removing, but I may update this PR if I can make CI success.

I have tried to fix CI in my forked repository, the history is
https://github.com/kachick/vscode-extension-yamlfmt/pull/1
https://github.com/kachick/vscode-extension-yamlfmt/pull/2
https://github.com/kachick/vscode-extension-yamlfmt/pull/3
I chose simplest solution in this PR, just bumping test-electron and removing .yamlfmt

Thank you! I'll update #9


Remove deprecation warnings for things removed a long time ago

Since we are making breaking changes in 2.0, it seems a good opportunity to clean out some old code.
I left in --init-peer-count since it's not as old as the others.

LGTM.
Quick grep-ing of the site/docs show they are up-to-date and do not mention any deprecated CLI option, so nothing else to change as far as I know, and good to be merged IMO.


heads-up notification not poping up

The code / parameters I am using
`AwesomeNotifications().initialize(
// set the icon to null if you want to use the default app icon
null,
[
NotificationChannel(
channelKey: 'alerts',
channelName: 'Alerts',
channelDescription: 'Notification tests as alerts',
playSound: true,
onlyAlertOnce: true,
groupAlertBehavior: GroupAlertBehavior.All,
importance: NotificationImportance.High,
defaultPrivacy: NotificationPrivacy.Public,
defaultColor: Colors.deepPurple,
ledColor: Colors.deepPurple)
],
debug: true,
);`
and then
AwesomeNotifications().createNotification(     content: NotificationContent(       id: 15,       channelKey: 'high_importance_channel',       title: "fdsa",       body: "fdasfds",       //bigPicture: message.notification.android.imageUrl,       // notificationLayout: NotificationLayout.BigPicture,       displayOnBackground: true,       displayOnForeground: true,       // largeIcon: message.notification.android.imageUrl,     ),   );
but the notification does not pop up on the user screen.
thanks in advance for the help

That could happen because of silent modes or battery save modes. If the device, app or the channel does not have permission to display notifications with hight importance, your notification will not pop up on the screen.

Definitely this is caused by a device configuration. But to shortcut your work and eliminate some variables, do this instead:

Test your app in another device (can be an emulator).
Run the example app in another device.

Then, if everything is okay, you can back to your first device to try to figure out what mode is causing this issue.
Also, you can try to set this high priority manually in you app notification's page.

thank you very much @rafaelsetragni I worked through your example ( https://github.com/rafaelsetragni/awesome_notifications/tree/master/example ) and fixed the issue.


fix scratchcpp#317: the number of periods in a loop should be rounded

Thanks. It would be nice to have a unit test for this, but I think I'll do that myself after merging this pull request. You should also add Resolves: #317 to the description in future pull requests so that I can quickly check whether there's a pull request for a particular issue.


# shellcheck disable as a hyperlink

Discussed in https://github.com/vscode-shellcheck/vscode-shellcheck/discussions/299

Originally posted by levlist September  3, 2021
Hi,
when I review other developer's code and I often run such cases when they ignore a given directive in their code.
For example:
# shellcheck disable=SC2116,SC2086
It could be a helpful feature if vscode-shellcheck could transform these directive IDs to clickable hyperlinks, which would redirect the user to the description of the SC ID.
Example of my idea:

#shellcheck disable=SC2116,SC2086

What is your opinion about it?
Br,
Viktor

I think it's not hard. this is a prototype:


Incorrect descreeption or behavior of Selenide#screenshot(java.lang.String) function

The problem
Descriptions of this function says:

Take the screenshot of current page and save to file fileName.html and fileName.png.

However, I found, that fileName.html file will not be created after function call.
Details
I check implementation details and found, that Selenide#screenshot(java.lang.String) calls SelenideDriver#screenshot(java.lang.String) which calls takeScreenshot with parameter savePageSource=false, so html file will not be saved (even if Configuration#savePageSource is true).
Is the problem with function description, function implementation, or both?
Tell us about your environment

Selenide Version: main branch or v7.5.1 tag

@nektonick Yes, seems that the javadoc and real behaviour don't match. :)
The change was introduced in commit 48dae56e. Before it, takeScreenshot(driver, fileName, true, true) was called.
It's hard to say if it was intentional, but let's fix one of them.
So, what option is better: true, false or true, true?

@asolntsev Is it a good idea to get the value of the second parameter from Configuration?
It seems to me that Configuration#savePageSource should be responsible for that behavior.

I am not sure.
Configuration.savePageSource and Configuration.screenshots are used when Selenide automatically takes a screenshot in case of test failure.
But when the user explicitly calls method takeScreenshot(), he obviously wants the screenshot, even if Configuration.screenshots == false. At least it was intention of commit c6eba7cb

Ok, then, I think, we should update the description of the current function without changing its behavior.
Also, I would be happy to have another function that creates both png and html (something like Screenshot screenshot(String fileName, boolean saveScreenshot, boolean savePageSource)` parameters), since I can't find any function that saves page html in Selenide.java.
What do you think about it?

@nektonick I've updated javadoc and changed the behaviour.
Now it depends on Configuration.savePageSource.
See https://github.com/selenide/selenide/pull/2901/files
I just thought it was the simplest solution for the moment..

@nektonick The fix has been released in Selenide 7.6.0


My attempts to transmit images camera surveillance at internet availables

Hello Everybody!
SomeOne have more experience than me for solved my problem ?
I dont have idea about it, if you have some experience for clarify ! is welcome...
this camera is Tec Voice model: td2316s
works fine in IE
http://<IP_ADDRESS>:8081  [ will ask for install webclient for run in web ]
user: admin
pass: 1
The format is h.264.
The problem is, How I could wrote in Java for transmit those images.
I copied the code bellow, but the line not response in methods s_in.read():
while((bytesRead = s_in.read()) > 0)
When press F12 from IE not show me in Tab Network, as Sarxos recommends in another issues when IP CAMERA is Mjpeg format.
Any Suggestions will be welcome..
I dont understand how the applications Mobile ( Android ) can works well done!
Or if I replace the line:
s_in = new BufferedReader(new InputStreamReader(s.getInputStream()));
for:
InputStream in = new ByteArrayInputStream(toByteArray(s.getInputStream()));
bufImage = ImageIO.read(in);

My Source Code Full
class DVR {
          Socket s = new Socket();

          public  void connect() throws Exception
	      {
      final int timeout = 10000;
	  Authenticator.setDefault(new Authenticator()
      {
        protected  PasswordAuthentication  getPasswordAuthentication()
	    {
            System.out.println("Authenticatting...");
	        PasswordAuthentication p=new PasswordAuthentication("admin", "1".toCharArray());
        return p;
	    }
    });

    String host = "<IP_ADDRESS>";
	PrintWriter s_out = null;
    BufferedReader s_in = null;

    try
	{
	    s.connect(new InetSocketAddress(host, 8081),timeout); //port 8081
	    System.out.println("Conectou? : " + s.isConnected());
        s_out = new PrintWriter(s.getOutputStream(), true);
	    s_in = new BufferedReader(new InputStreamReader(s.getInputStream()));
    }
	catch(UnknownHostException e)
    {
        e.printStackTrace();
	    System.exit(1);
    }
	catch(Exception e)
    {
        e.printStackTrace();
	    System.exit(1);
    }

    //bufferedInputStream.read(b);

    int bytesRead = 0;
	System.out.println("Reading... \n");
	while((bytesRead = s_in.read()) > 0) // STOP HERE!!!!!
    {
        System.out.println(s_in.readLine());
    }
  }
private byte[] toByteArray(InputStream is) {
	try{
	ByteArrayOutputStream os = new ByteArrayOutputStream();
		byte[] buffer = new byte[0xFFFF];
		for (int len; (len = is.read(buffer)) != -1;)
			os.write(buffer, 0, len);
		os.flush();
		return os.toByteArray();
	} catch (IOException e) {
		return null;
	}
}
}

Hi @henriquem,
The problem with h.264 is that there is really very few ready to use production code written in Java that is able to decode this format. Every one I take a look into has some limitations you would have to w/a when you decide to use it.
The Webcam Capture API does not (currently) support reading h.264. If you want to use it you need to configure your camera to serve MJPEG instead of h.264.
In regards to:

When press F12 from IE not show me in Tab Network, as Sarxos recommends in another issues when IP CAMERA is Mjpeg format.

I'm not using Internet Explorer (because it sucks) and I would be completely astonished if they have such useful feature implemented. For the development I strongly suggest using Firefox with Firebug plugin or Chrome, but please note that the last one has problems with rendering MJPEG, so I would stick to the Firefox.

I dont understand how the applications Mobile ( Android ) can works well done!

Android has its own codecs to read h.264 frames. These codecs are not available in standard Java distribution. This is the "magic" behind it working on Android and not in regular Java application.


[Other issue]: Unable to compute a location on the navigation graph for robot [robot_1] being added to fleet [robot_fleet] using map [ground_floor] ...

Before proceeding, is there an existing issue or discussion for this?

[X] I have done a search for similar issues and discussions.

Description
I am looking for instructions on how to fix the following issue the error raised by this message.
Unable to compute a location on the navigation graph for robot [robot_1] being added to fleet [robot_fleet] using map [ground_floor] and position [19.982, -9.426, 0.236] specified in the initial_state argument. This can happen if the map in initial_state does not match any of the map names in the navigation graph supplied or if the position reported in the initial_state is far way from the navigation graph. This robot will not be added to the fleet.

Take a look at the nav graph on ground_floor and check what vertices are close to the coordinates { x = 19.982, y = -9.426 }. If there are no vertices reasonably close to those coordinates then either you're initializing your robot very far from your nav graph elements or there is something wrong with the transformation that you're using to convert between robot and RMF coordinates.
If you do find a vertex that's reasonably close to those coordinates then you may have a lane_merge_distance value that's too small (the default is 1.0m). Make sure the value for lane_merge_distance is essentially how far the robot is allowed to be from a nav graph element (lane or vertex) while still being allowed to use that element.

[Solved] To solve it I followed the following steps :

open traffic-editor
add waypoint with is_charger and is_parking_slot
add waypoint to graph by adding lanes
regenerate nav_graph by compiling the project
verify that nav_graph files contain the waypoint
inside the flee_config.yaml update set the following :

reference_coordinates:
  ground_floor:
    rmf: [[spawn_waypoint.x, spawn_waypoint.y]] # replace spawn_waypoint.x and spawn_waypoint.y by the waypoint coordinates from the nav_graph or traffic-editor.
    robot: [[0.0, 0.0]]


Android 11 Permissions Config

Android 11 requires FileProviders to re-encode media through a specific content provider URI and also to include that URI in the primary data response, in addition to simply making the paths visible to other apps.
Without this change, the on-device IPC can get the diagnostic outcomes and Point-of-Care data, but can't always copy image files on the newest Android devices. It should be the default behavior on Android 11, and should likely be configurable as the default by the calling app anyway, since many new apps may not implement the old file-system behaviors moving forward.
It may or may not be possible with Android's current Media FileProvider to pass permissions for multiple image URI's back across. If this is the case the app should settle on one "Primary" image representing a session moving forward, like the one that is displayed along with test result response collection.

Android 11 compatible implementation will be released in 0.9.5


A crosshair should be added to the mouse on pointer lock

A crosshair should be in the center of the screen when we're in pointer lock (no cursor on screen). We can't just draw in the 2d context as far as I could tell, as we use the webgl context. If there's a "right way" do implement this feature. It'd be a good one.

This is mostly done on the add-crosshair branch. It just needs to be stylized. Currently a dot.


[dynamic param] when modify dynamic param succeed and without pod restart, however the value in pod is still old

（1）i modify dynamic param max_allowed_query_size, it seams succeed

（2）then start many query and with auto-scaller set，so create another 3 graphd pod，from 2 -> 5.
（3）then i check value in graphd-0 and graphd-4，i found it is old.

Your Environments (required)
nebula-operator: snap-1.21
How To Reproduce(required)

change graphd's dynamic param.

 kubectl -n nebula patch nc nebulazone --type=merge --patch='{"spec": {"graphd": {"config": {"max_allowed_query_size": "1000"}}}}'

provide some query , then create some new graphd pod.
check value in old graph pod and in new graph pod ;
curl curl <IP_ADDRESS>:19679/flags |grep max_allowed_query_size and kubectl -n nebula get nc nebulazone -o yaml |grep max_allowed_query_size

Expected behavior
value in pod is the seam with new value.

qiaolei反馈：

查看pod中的值：

和集群中的flag值保持一致：


Filters using regex removing file extension

When choosing a renaming filter that uses a regular expression under the hood, the file extension was also getting ripped off.

fixed in commit ba21a4eda5af01e0d54ba91a51e3577fd9d609c4


Add OpenMP support

Hi!
I'm trying to increase the speed of LPCNet with OpenMP (and want to make PR after). I ran the profiler, and it says 72% of the time was spent in sparse_sgemv_accum16 function. So I decided to parallelize that function first. But unfortunately, my code isn't working properly. Do you have any ideas what's wrong with the code below?
   const int *precomputed_idx[rows];
   const float *precomputed_weights[rows];
   for (i=0;i<rows;i+=16)
   {
      precomputed_weights[i] = weights;
      weights += 16 * (*idx);
      precomputed_idx[i] = idx++;
      idx += *precomputed_idx[i];
   }
   float test_out[4][2000];
   #pragma omp parallel num_threads(2)
   {
      int thread_id;
      const int *local_idx;
      float * restrict y;
      __m256 vy0, vy8;
      int cols;
      const float *local_weights;
      thread_id = omp_get_thread_num();
      #pragma omp for schedule(static)
      for (i=0;i<rows;i+=16)
      {
         local_weights = precomputed_weights[i];
         y = &out[i];
         vy0 = _mm256_loadu_ps(&y[0]);
         vy8 = _mm256_loadu_ps(&y[8]);
         local_idx = precomputed_idx[i];
         cols = *local_idx++;
         for (j=0;j<cols;j++)
         {
            int id;
            __m256 vxj;
            __m256 vw;
            id = *local_idx++;
            vxj = _mm256_broadcast_ss(&x[id]);

            vw = _mm256_loadu_ps(&local_weights[0]);
            vy0 = _mm256_fmadd_ps(vw, vxj, vy0);

            vw = _mm256_loadu_ps(&local_weights[8]);
            vy8 = _mm256_fmadd_ps(vw, vxj, vy8);
            local_weights += 16;
         }
         _mm256_storeu_ps(&test_out[thread_id][i], vy0);
         _mm256_storeu_ps(&test_out[thread_id][i + 8], vy8);
      }
   }

I've got segmenation fault at line vxj = _mm256_broadcast_ss(&x[id]); because of defenitely incorrect id value. It always works without errors when I set the number of threads to 1.

Any particular reason you want OpenMP support? The current code is already much faster than real-time on x86 and faster ARM chips (e.g. smartphones, but not RPi yet).

Yes, we know. But it loads only 1 thread of cpu. And we are trying to parallel it with open mp. But our code is not works and ve have no idea why? We are wont to understand this promlem and overcome it. That's why we ask you about it.
This fact causes us more bewilderment. And we want to solve this problem.  And in addition to further increase productivity. I think it does not hurt.

i ve parallel it...
you can use this code for OpenMP
static void sparse_sgemv_accum16(float *out, const float *weights, int rows, const int *idx, const float *x)
{
    int i=-16;
    #pragma omp parallel
    while (i<rows)
    {
      float * restrict y;
      int cols;
      int j;
      const float *lc_weights;
      _Bool flag=1;
      __m256 vy0, vy8;
      #pragma omp critical
      {
         // initialization
         i+=16;
         if (i>=rows)
            flag=0;
         else
         {
            y = &out[i];
            cols = *idx++;
            idx+=cols;
            lc_weights=weights;
            weights+=16*cols;
         }
      }
      if (flag)
      {
         vy0 = _mm256_loadu_ps(&y[0]);
         vy8 = _mm256_loadu_ps(&y[8]);
         for (j=0;j<cols;j++)
         {
            int id;
            __m256 vxj;
            __m256 vw;
            id = cols+j;
            vxj = _mm256_broadcast_ss(&x[id]);

            vw = _mm256_loadu_ps(&lc_weights[0]);
            vy0 = _mm256_fmadd_ps(vw, vxj, vy0);

            vw = _mm256_loadu_ps(&lc_weights[8]);
            vy8 = _mm256_fmadd_ps(vw, vxj, vy8);
            lc_weights += 16;
         }
         _mm256_storeu_ps (&y[0], vy0);
         _mm256_storeu_ps (&y[8], vy8);
      }
   }
}

I'm not sure I understand this code, but I don't see how you can parallelize it without restructuring the data. As for my original question, parallelizing is a means to get the code to run fast enough, but the current code is already fast enough.

Yes i understand. But it interesting for me)
So now code is fully works. And lpcnet uses all cpu cores.
But in fact code is not become much faster (even a bis slower in little samples) and i have no idea why? When i looked through profiles sparse_sgemv_accum16 takes 80% of time that's while i ve decided to parallel it. but performance even NOT faster 2 times... Can someone explain why it so?
static void sparse_sgemv_accum16(float *out, const float *weights, int rows, const int *idx, const float *x)
{
   int i, j;
   //initialization
   const int *precomputed_idx[rows];
   const float *precomputed_weights[rows];
   for (i=0;i<rows;i+=16)
   {
      precomputed_weights[i] = weights;
      weights += 16 * (*idx);
      precomputed_idx[i] = idx++;
      idx += *precomputed_idx[i];
   }

   #pragma omp parallel
   {
      const int *lc_idx;
      const float *lc_weights;
      float * restrict y;
      __m256 vy0, vy8;
      int cols;
      for (i=0;i<rows;i+=16)
      {
         lc_weights = precomputed_weights[i];
         y = &out[i];
         vy0 = _mm256_loadu_ps(&y[0]);
         vy8 = _mm256_loadu_ps(&y[8]);
         lc_idx = precomputed_idx[i];
         cols = *local_idx++;
         #pragma omp critical
         for (j=0;j<cols;j++)
         {
            int id;
            __m256 vxj;
            __m256 vw;
            id = *lc_idx++;
            vxj = _mm256_broadcast_ss(&x[id]);

            vw = _mm256_loadu_ps(&lc_weights[0]);
            vy0 = _mm256_fmadd_ps(vw, vxj, vy0);

            vw = _mm256_loadu_ps(&lc_weights[8]);
            vy8 = _mm256_fmadd_ps(vw, vxj, vy8);
            lc_weights += 16;
         }
         _mm256_storeu_ps (&y[0], vy0);
         _mm256_storeu_ps (&y[8], vy8);
      }
   }
}

I ve parallelized main loop in functions from main and divided input data. It worked and I got a slight increase in performance but in those places where the data were divided, the bangs and noise could be heard. Therefore, this requires more complex work and not the fact that the performance gain will be good.
We can close this issue.

@jmvalin @gosha20777  faster ARM chips? which one, what is the  main frequency? thank you.

Any particular reason you want OpenMP support? The current code is already much faster than real-time on x86 and faster ARM chips (e.g. smartphones, but not RPi yet).


[Question] Is it possible to specify package.json location?

My package.json is in a sub folder of the currently open folder in VS Code.
When Test Explorer tries to load the tests it only looks in the root level of the current folder so it doesn't find the package.json.
Is there a way to specify what package.json it should look at?

I'm not the author, but i think it would be helpful if you would explain what is the situation. This description is just doesn't add up. How the  package.json comes into the picture?
Are you using Mocha or some javascript test explorer? If yes I would suggest to put your request there. This extension is about the UI, the backbone of those extensions. (And close this issue here^^)

This is the root folder I'm opening in VSCode:
/home/bill/projects/my-project
This is the error message I get from the test explorer sidebar:
[Error: ENOENT: no such file or directory, open '/home/bill/projects/my-project/package.json'] {   errno: -2,   code: 'ENOENT',   syscall: 'open',   path: '/home/bill/projects/my-project/package.json' }
My package.json that I want to use is in this path:
/home/bill/projects/my-project/app/package.json
It seems like the extension runs the npm test from package.json in the root folder.

But you might be right. Might be the another one of the extensions that has the problem.

You might find that you're using my extension. If so you might be interested in this issue kavod.io/vscode-jest-test-adapter#56.  There is a workaround by using workspace folders. But your comment about being able to specify the location of the package.json is valid.

Just to be clear: There is no package.json in the context of Test Explorer (this extension).
(Except that the extension itself is a vscode extension so it has to have package.json but no one should care about that because that is the inner business of vscode and this extension.)
Right? (If yes, close this pls and the author can concentrate on my issues 😄)


Upcase "4XX" in error message of operation-4xx-response

What/Why/How?
This changes the error message of operation-4xx-response to say "4XX" (upcase) instead of "4xx" (downcase). This is good, because it helps people to write their API description as defined in the standard.
See also https://github.com/Redocly/redocly-cli/issues/840.
This also does the same for operation-2xx-response
Reference
Solves https://github.com/Redocly/redocly-cli/issues/840
Testing
✅
Check yourself

[x] Code is linted
[ ] Tested with redoc/reference-docs/workflows
[x] All new/updated code is covered with tests

Security
This change is not security relevant

Thank you @ahx! 🎉
@tatomyr can we include this in the next release?

Sure, will do.
@ahx thanks again for your contribution!

Thanks folks ♥


fix get_transactions bug

If It has  3 transactions,  call get_transactions fail with Natural subtraction underflow.
you can test it if set a length less than start (by search inside transactions).
// dfx call
call get_transactions '(record{start=2 : nat; length=1 : nat})'

the bug cause by this line.
https://github.com/NatLabs/icrc1/blob/2ede9a69a6d9d15802d44dafb5403e767269e27b/src/ICRC1/lib.mo#L352
function SB.sclice accept argument (buffer, start, end)
https://github.com/NatLabs/icrc1/blob/2ede9a69a6d9d15802d44dafb5403e767269e27b/src/ICRC1/Utils.mo#L261
but the code call it , SB.slice(transactions, tx_start_index,  req.length).
it should fix  to

SB.slice(transactions, tx_start_index,  tx_start_index + req.length).

I switched the PR to the dev branch so that I can update the validation workflows.
I'll merge to main once they are fixed.


fix: queue run code

Summary
Fix #1022
During code executing, if 2 or more runCode calls happen, they're waiting for a same thing and will execute at same time.
The fix is to queue the runCode call, and also refactored the CodeRunner class to be a static module, as the execution has to be limited to 1 globally.
Note that the original runCode implementation was NOT changed at all except renamed to _runCode. It may not be obvious in the diff as the indentation was changed.
Testing
Test case in #1022

This issue is fixed in the playpen package, no other issues found.