Dependency on json.schemastore.org breaks CLI

The SWA CLI currently fails and stops after a few seconds, because either the latency of https://json.schemastore.org/staticwebapp.config.json is too high or the service is not available.
There should be no dependency on an online resource to be available for local development. From the logs it seems like it should continue to work without validation, but it currently doesn't.
Logs:
[swa] network timeout at: https://json.schemastore.org/staticwebapp.config.json
[swa] ✖ Failed to load staticwebapp.config.json schema. Continuing without validation!
[swa] node "C:\Users\USER\AppData\Local\pnpm\global\5\.pnpm\@azure+static-web-apps-cli<EMAIL_ADDRESS>exited with code 0
--> Sending SIGTERM to other processes..
[dataApi] cd "C:\repos\APP\data-api" && "C:\Users\USER\.swa\dataApiBuilder\0.9.7\Microsoft.DataApiBuilder.exe" start -c staticwebapp.database.config.json --no-https-redirect exited with code 1
--> Sending SIGTERM to other processes..
[run] cd "C:\repos\APP\app" && pnpm dev exited with code 1
✖ SWA emulator stopped because the --run command exited with code 1.

My suggestion would be to increase the timeout for the request and to fix the bug that stops the CLI from working without validation.

Heavy plus one! We use this CLI deploy our production sites, so this is really blocking us.
It is this line that makes this fail. It should not send true as the second argument as true is used to signal an exit.
https://github.com/Azure/static-web-apps-cli/blob/f9f9b7e92f5fb03cf9b75626377f951a5f85cd5d/src/core/utils/user-config.ts#L108

Hi all, we're having troubles with this in a production project as well.
As a workaround in our project, we've put the schema right into the source code to remove the dependency to this online resource.
In<EMAIL_ADDRESS>line 151, we've changed the loadSWAConfigSchema function as follows:
async function loadSWAConfigSchema() {
    const schemaUrl = "https://json.schemastore.org/staticwebapp.config.json";
    try {
        // ORIGINAL CODE WHICH CURRENTLY FAILS DUE TO ONLINE DEPENDENCY:
        // const res = await (0, node_fetch_1.default)(schemaUrl, { timeout: 10 * 1000 });
        // if (res.status === 200) {
        //     logger_1.logger.silly(`Schema loaded successfully from ${schemaUrl}`);
        //     return (await res.json());
        // }
        // logger_1.logger.silly(`Status: ${res.status} ${res.statusText}.`);
        //
        // HOTFIX BELOW WHERE WE INSTEAD INLINE THE JSON SCHEMA:
        logger_1.logger.warn("Using workaround to get SWAConfigSchema locally.");
        return {
            "$schema": "http://json-schema.org/draft-04/schema#",
            "additionalProperties": false,
            "default": {
                "navigationFallback": {
                    "rewrite": "/index.html"
                }
            },
            "definitions": {
                "route": {
                    "type": "object",
                    "required": ["route"],
                    "properties": {
                        "route": {
                            "type": "string",
                            "description": "Request route pattern to match. May contain valid wildcards. See documentation: https://aka.ms/swa/config-schema"
                        },
                        "methods": {
                            "type": "array",
                            "description": "Request method(s) to match",
                            "items": {
                                "anyOf": [
                                    {
                                        "type": "string",
                                        "enum": [
                                            "GET",
                                            "HEAD",
                                            "POST",
                                            "PUT",
                                            "DELETE",
                                            "PATCH",
                                            "CONNECT",
                                            "OPTIONS",
                                            "TRACE"
                                        ]
                                    }
                                ]
                            }
                        },
                        "allowedRoles": {
                            "type": "array",
                            "description": "Roles that are allowed to access this route. If not empty, only role(s) listed are authorized to access the route. Roles are only used for authorization; they are not used to evaluate whether the route matches the request.",
                            "items": {
                                "anyOf": [
                                    {
                                        "type": "string",
                                        "examples": ["anonymous", "authenticated"]
                                    }
                                ]
                            }
                        },
                        "headers": {
                            "type": "object",
                            "description": "Override any matching global headers",
                            "additionalProperties": true
                        },
                        "redirect": {
                            "type": "string",
                            "description": "Redirect to a relative or absolute path, or an external URI. Default status code is 302, override with 301."
                        },
                        "statusCode": {
                            "type": "integer",
                            "description": "Status code override"
                        },
                        "rewrite": {
                            "type": "string",
                            "description": "A path to rewrite the request route to"
                        }
                    },
                    "additionalProperties": false
                },
                "auth": {
                    "type": "object",
                    "required": ["identityProviders"],
                    "properties": {
                        "rolesSource": {
                            "type": "string",
                            "description": "Route to API function for assigning roles. For example, \"/api/GetRoles\". See https://aka.ms/swa-roles-function"
                        },
                        "identityProviders": {
                            "type": "object",
                            "properties": {
                                "azureActiveDirectory": {
                                    "type": "object",
                                    "required": ["registration"],
                                    "properties": {
                                        "enabled": {
                                            "description": "<false> if the azureActiveDirectory provider is not enabled, <true> otherwise",
                                            "type": "boolean",
                                            "default": true
                                        },
                                        "registration": {
                                            "type": "object",
                                            "required": ["openIdIssuer", "clientSecretSettingName"],
                                            "properties": {
                                                "openIdIssuer": {
                                                    "type": "string",
                                                    "description": "The endpoint for the OpenID configuration of the AAD tenant"
                                                },
                                                "clientIdSettingName": {
                                                    "type": "string",
                                                    "description": "The name of the application setting containing the Application (client) ID for the Azure AD app registration"
                                                },
                                                "clientSecretSettingName": {
                                                    "type": "string",
                                                    "description": "The name of the application setting containing the client secret for the Azure AD app registration"
                                                }
                                            },
                                            "additionalProperties": false
                                        },
                                        "login": {
                                            "type": "object",
                                            "description": "",
                                            "properties": {
                                                "loginParameters": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string"
                                                    }
                                                }
                                            },
                                            "additionalProperties": false
                                        },
                                        "userDetailsClaim": {
                                            "type": "string",
                                            "description": "The name of the claim from which we should read user details"
                                        }
                                    },
                                    "additionalProperties": false
                                },
                                "apple": {
                                    "type": "object",
                                    "required": ["registration"],
                                    "properties": {
                                        "enabled": {
                                            "description": "<false> if the apple provider is not enabled, <true> otherwise",
                                            "type": "boolean",
                                            "default": true
                                        },
                                        "registration": {
                                            "type": "object",
                                            "required": ["clientSecretSettingName"],
                                            "properties": {
                                                "clientIdSettingName": {
                                                    "type": "string",
                                                    "description": "The name of the application setting containing the Client ID"
                                                },
                                                "clientSecretSettingName": {
                                                    "type": "string",
                                                    "description": "The name of the application setting containing the Client Secret"
                                                }
                                            },
                                            "additionalProperties": false
                                        },
                                        "login": {
                                            "type": "object",
                                            "description": "",
                                            "properties": {
                                                "scopes": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string"
                                                    }
                                                }
                                            },
                                            "additionalProperties": false
                                        },
                                        "userDetailsClaim": {
                                            "type": "string",
                                            "description": "The name of the claim from which we should read user details"
                                        }
                                    },
                                    "additionalProperties": false
                                },
                                "facebook": {
                                    "type": "object",
                                    "required": ["registration"],
                                    "properties": {
                                        "enabled": {
                                            "description": "<false> if the facebook provider is not enabled, <true> otherwise",
                                            "type": "boolean",
                                            "default": true
                                        },
                                        "registration": {
                                            "type": "object",
                                            "required": ["appSecretSettingName"],
                                            "properties": {
                                                "appIdSettingName": {
                                                    "type": "string",
                                                    "description": "The name of the application setting containing the App ID"
                                                },
                                                "appSecretSettingName": {
                                                    "type": "string",
                                                    "description": "The name of the application setting containing the App Secret"
                                                }
                                            },
                                            "additionalProperties": false
                                        },
                                        "login": {
                                            "type": "object",
                                            "description": "",
                                            "properties": {
                                                "scopes": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string"
                                                    }
                                                }
                                            },
                                            "additionalProperties": false
                                        },
                                        "userDetailsClaim": {
                                            "type": "string",
                                            "description": "The name of the claim from which we should read user details"
                                        }
                                    },
                                    "additionalProperties": false
                                },
                                "github": {
                                    "type": "object",
                                    "required": ["registration"],
                                    "properties": {
                                        "enabled": {
                                            "description": "<false> if the gitHub provider is not enabled, <true> otherwise",
                                            "type": "boolean",
                                            "default": true
                                        },
                                        "registration": {
                                            "type": "object",
                                            "required": ["clientSecretSettingName"],
                                            "properties": {
                                                "clientIdSettingName": {
                                                    "type": "string",
                                                    "description": "The name of the application setting containing the Client ID"
                                                },
                                                "clientSecretSettingName": {
                                                    "type": "string",
                                                    "description": "The name of the application setting containing the Client Secret"
                                                }
                                            },
                                            "additionalProperties": false
                                        },
                                        "login": {
                                            "type": "object",
                                            "description": "",
                                            "properties": {
                                                "scopes": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string"
                                                    }
                                                }
                                            },
                                            "additionalProperties": false
                                        },
                                        "userDetailsClaim": {
                                            "type": "string",
                                            "description": "The name of the claim from which we should read user details"
                                        }
                                    },
                                    "additionalProperties": false
                                },
                                "google": {
                                    "type": "object",
                                    "required": ["registration"],
                                    "properties": {
                                        "enabled": {
                                            "description": "<false> if the google provider is not enabled, <true> otherwise",
                                            "type": "boolean",
                                            "default": true
                                        },
                                        "registration": {
                                            "type": "object",
                                            "required": ["clientSecretSettingName"],
                                            "properties": {
                                                "clientIdSettingName": {
                                                    "type": "string",
                                                    "description": "The name of the application setting containing the Client ID"
                                                },
                                                "clientSecretSettingName": {
                                                    "type": "string",
                                                    "description": "The name of the application setting containing the Client Secret"
                                                }
                                            },
                                            "additionalProperties": false
                                        },
                                        "login": {
                                            "type": "object",
                                            "description": "",
                                            "properties": {
                                                "scopes": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string"
                                                    }
                                                }
                                            },
                                            "additionalProperties": false
                                        },
                                        "userDetailsClaim": {
                                            "type": "string",
                                            "description": "The name of the claim from which we should read user details"
                                        }
                                    },
                                    "additionalProperties": false
                                },
                                "twitter": {
                                    "type": "object",
                                    "required": ["registration"],
                                    "properties": {
                                        "enabled": {
                                            "description": "<false> if the twitter provider is not enabled, <true> otherwise",
                                            "type": "boolean",
                                            "default": true
                                        },
                                        "registration": {
                                            "type": "object",
                                            "required": ["consumerSecretSettingName"],
                                            "properties": {
                                                "consumerKeySettingName": {
                                                    "type": "string",
                                                    "description": "The name of the application setting containing the Consumer Key"
                                                },
                                                "consumerSecretSettingName": {
                                                    "type": "string",
                                                    "description": "The name of the application setting containing the Consumer Secret"
                                                }
                                            },
                                            "additionalProperties": false
                                        },
                                        "userDetailsClaim": {
                                            "type": "string",
                                            "description": "The name of the claim from which we should read user details"
                                        }
                                    },
                                    "additionalProperties": false
                                },
                                "customOpenIdConnectProviders": {
                                    "type": "object",
                                    "patternProperties": {
                                        ".*": {
                                            "required": ["registration", "login"],
                                            "properties": {
                                                "enabled": {
                                                    "description": "<false> if the custom OpenID Connect provider is not enabled, <true> otherwise",
                                                    "type": "boolean",
                                                    "default": true
                                                },
                                                "registration": {
                                                    "type": "object",
                                                    "required": [
                                                        "clientCredential",
                                                        "openIdConnectConfiguration"
                                                    ],
                                                    "properties": {
                                                        "clientIdSettingName": {
                                                            "type": "string",
                                                            "description": "The name of the application setting containing the Client ID"
                                                        },
                                                        "clientCredential": {
                                                            "type": "object",
                                                            "required": ["clientSecretSettingName"],
                                                            "properties": {
                                                                "clientSecretSettingName": {
                                                                    "type": "string",
                                                                    "description": "The name of the application setting containing the Client Secret"
                                                                }
                                                            }
                                                        },
                                                        "openIdConnectConfiguration": {
                                                            "type": "object",
                                                            "properties": {
                                                                "authorizationEndpoint": {
                                                                    "type": "string",
                                                                    "description": "The path to the authorization endpoint"
                                                                },
                                                                "tokenEndpoint": {
                                                                    "type": "string",
                                                                    "description": "The path to the token endpoint"
                                                                },
                                                                "issuer": {
                                                                    "type": "string",
                                                                    "description": "The path to the issuer endpoint"
                                                                },
                                                                "certificationUri": {
                                                                    "type": "string",
                                                                    "description": "The path to the jwks uri"
                                                                },
                                                                "wellKnownOpenIdConfiguration": {
                                                                    "type": "string",
                                                                    "description": "The path to the well known configuration endpoint"
                                                                }
                                                            }
                                                        }
                                                    },
                                                    "additionalProperties": false
                                                },
                                                "login": {
                                                    "type": "object",
                                                    "description": "",
                                                    "properties": {
                                                        "nameClaimType": {
                                                            "type": "string"
                                                        },
                                                        "scopes": {
                                                            "type": "array",
                                                            "items": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "loginParameterNames": {
                                                            "type": "array",
                                                            "items": {
                                                                "type": "string"
                                                            }
                                                        }
                                                    },
                                                    "additionalProperties": false
                                                }
                                            },
                                            "additionalProperties": false
                                        }
                                    }
                                }
                            },
                            "additionalProperties": false
                        }
                    },
                    "additionalProperties": false
                }
            },
            "description": "Documentation: https://aka.ms/swa/config-schema",
            "id": "https://json.schemastore.org/staticwebapp.config.json",
            "properties": {
                "$schema": {
                    "type": "string",
                    "default": "https://json.schemastore.org/staticwebapp.config.json",
                    "description": "JSON schema"
                },
                "routes": {
                    "type": "array",
                    "description": "Route definitions to modify routing behavior",
                    "default": [
                        {
                            "route": "/example",
                            "rewrite": "/example.html"
                        }
                    ],
                    "items": {
                        "examples": [
                            {
                                "route": "/example",
                                "rewrite": "/example.html"
                            },
                            {
                                "route": "/login",
                                "redirect": "/.auth/login/github"
                            }
                        ],
                        "anyOf": [
                            {
                                "allOf": [
                                    {
                                        "$ref": "#/definitions/route"
                                    }
                                ]
                            }
                        ]
                    }
                },
                "navigationFallback": {
                    "type": "object",
                    "description": "A default file to return if the request does not match a resource",
                    "default": {
                        "rewrite": "/index.html"
                    },
                    "required": ["rewrite"],
                    "properties": {
                        "rewrite": {
                            "type": "string",
                            "description": "The default file to return if the request does not match a resource",
                            "default": "/index.html"
                        },
                        "exclude": {
                            "type": "array",
                            "description": "Paths to exclude from the fallback route. May use valid wildcards. https://aka.ms/swa/config-schema",
                            "examples": [["*.{jpg,gif,png}", "assets/*"]]
                        }
                    },
                    "additionalProperties": false
                },
                "responseOverrides": {
                    "type": "object",
                    "description": "Custom error pages or redirects",
                    "examples": [
                        {
                            "404": {
                                "rewrite": "/custom_404.html",
                                "statusCode": 200
                            }
                        }
                    ],
                    "propertyNames": {
                        "pattern": "^\\d+$"
                    },
                    "patternProperties": {
                        ".*": {
                            "oneOf": [
                                {
                                    "type": "object",
                                    "properties": {
                                        "redirect": {
                                            "type": "string",
                                            "description": "Redirect to a relative or absolute path, or an external URI. Default status code is 302, override with 301."
                                        },
                                        "statusCode": {
                                            "type": "integer",
                                            "description": "Status code"
                                        },
                                        "rewrite": {
                                            "type": "string",
                                            "description": "A path to rewrite the request route to"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                },
                "mimeTypes": {
                    "type": "object",
                    "description": "Custom mime types configuration",
                    "default": {},
                    "examples": [
                        {
                            ".config": "application/xml"
                        }
                    ],
                    "patternProperties": {
                        "^\\..+$": {
                            "type": "string"
                        }
                    },
                    "additionalProperties": false
                },
                "globalHeaders": {
                    "type": "object",
                    "description": "Default headers to set on all responses",
                    "additionalProperties": true
                },
                "auth": {
                    "$ref": "#/definitions/auth"
                },
                "networking": {
                    "type": "object",
                    "description": "Networking configuration",
                    "properties": {
                        "allowedIpRanges": {
                            "type": "array",
                            "description": "Restrict access to one or more IPv4 ranges. Supports CIDR notation (e.g., \"<IP_ADDRESS>/24\")",
                            "items": {
                                "type": "string"
                            },
                            "examples": [["<IP_ADDRESS>/24", "<IP_ADDRESS>/10"]]
                        }
                    },
                    "additionalProperties": false
                },
                "forwardingGateway": {
                    "type": "object",
                    "description": "Forwarding gateway configuration",
                    "properties": {
                        "allowedForwardedHosts": {
                            "type": "array",
                            "description": "The value of `X-Forwarded-Host` to allow to be used when generating redirect URLs",
                            "items": {
                                "type": "string"
                            },
                            "examples": [
                                ["example.org", "www.example.org", "staging.example.org"]
                            ]
                        },
                        "requiredHeaders": {
                            "type": "object",
                            "description": "HTTP header name/value pairs that are required for access",
                            "examples": [
                                {
                                    "X-Azure-FDID": "10dd26ef"
                                }
                            ],
                            "additionalProperties": true
                        }
                    },
                    "additionalProperties": false
                },
                "platform": {
                    "type": "object",
                    "description": "Platform configuration",
                    "properties": {
                        "apiRuntime": {
                            "type": "string",
                            "enum": [
                                "dotnet:3.1",
                                "dotnet:6.0",
                                "dotnet-isolated:6.0",
                                "dotnet-isolated:7.0",
                                "node:12",
                                "node:14",
                                "node:16",
                                "node:18",
                                "python:3.8",
                                "python:3.9",
                                "python:3.10"
                            ],
                            "description": "Language runtime for the managed functions API"
                        }
                    },
                    "additionalProperties": false
                },
                "trailingSlash": {
                    "type": "string",
                    "enum": ["always", "never", "auto"],
                    "description": "Trailing slash configuration"
                }
            },
            "title": "Azure Static Web Apps configuration file",
            "type": "object"
        };
    }
    catch (err) {
        logger_1.logger.warn(err.message);
    }
    logger_1.logger.silly(`Failed to load schema from ${schemaUrl}`);
    return null;
}

Same problem here:
network timeout at: https://json.schemastore.org/staticwebapp.config.json
[swa] ✖ Failed to load staticwebapp.config.json schema. Continuing without validation!
(...)
✖ SWA emulator stopped because API server exited with code 1.

Also having this problem, since the 1st of March:
[swa] network timeout at: https://json.schemastore.org/staticwebapp.config.json
[swa] ✖ Failed to load staticwebapp.config.json schema. Continuing without validation!
[swa] node "<local<EMAIL_ADDRESS>exited with code 0
--> Sending SIGTERM to other processes..
[api] cd "<local path>" && "func" start --cors "*" --port <host port>  exited with code 1
✖ SWA emulator stopped because API server exited with code 1.

Thanks for all of your feedback. We are going to have a local backup schema as a fallback option if the download fails. I have reopened the issue #754, and the fix will come soon.

@cjk7989 would it be possible to either remove the "true" parameter, as @cristianbretti mentioned, from the error log or adjust the log to be more accurate as to what happens next? Currently, the log implies the CLI will run as normal when in fact it closes due to the included parameter:

It is this line that makes this fail. It should not send true as the second argument as true is used to signal logger.error to exit.
https://github.com/Azure/static-web-apps-cli/blob/f9f9b7e92f5fb03cf9b75626377f951a5f85cd5d/src/core/utils/user-config.ts#L108

Very critical issue for us here! Deployments are stopped because the schema cannot be loaded.

Same here; this is blocking our deployment pipeline. I appreciate the quick response from @cjk7989 and will be (patiently) waiting for a quick fix 🤞

Don't know if this helps anyone, but I did the following this morning to unblock all of our deployment pipelines.

Download this repo
Change this line to pass false, as the second argument https://github.com/Azure/static-web-apps-cli/blob/f9f9b7e92f5fb03cf9b75626377f951a5f85cd5d/src/core/utils/user-config.ts#L108
Build and deploy to my own private registry

Change the name in package.json to @myprivateorg/static-web-apps-cli-hotfix
npm run build
npm pack
npm publish

Replace my deploy pipelines to use npx @myprivateorg/static-web-apps-cli-hotfix ... instead of npx @azure/static-web-apps-cli

That worked for us, but some maintainer said here  that this might not work 🤷  I guess do this at your own risk or whatever.

What is the current status for resolving this issue @cjk7989 ?

Hey! What about your start scripts?
I had a similar issue and realized that I had a bit incorrect script. It came up after upgrading the version from 1.1.4 to 1.1.6.
Following the documentation documentation I set the config location under the -w  option. After upgrading, it stopped working. Same story when running in docker.
I changed the option name to --swa-config-location and it got back to work.

Just in case anyone needs a quick workaround without cloning the project, you could just locate your cli package and change one line to make it work.

Locate your @azure/static-web-apps-cli package, for me it's the global pnpm store at C:\Users\USERNAME\AppData\Local\pnpm\global\5\node_modules\.
Navigate to @azure\static-web-apps-cli\dist\core\utils and open user-config.js
Replace true with false as parameter in following line (101 for me) and save

Old
logger_1.logger.error(`Failed to load staticwebapp.config.json schema. Continuing without validation!`, true);

New
logger_1.logger.error(`Failed to load staticwebapp.config.json schema. Continuing without validation!`, false);

This will only work until you update your static-web-apps-cli package, which won't be that often, as it should not be installed per project, but as a global pnpm/bun/yarn/npm dependency.

Another fix is to just make your own file and host it.  Point the user-config.js file to your own configuration.  We set that up Friday when schemastore.org went down and so today had a copy to point to.  Schemastore.org is going up and down all day and taking a long time to resolve when it is up.
Here is a copy of the file someone posted that I used on Friday:

Anyone using Github Actions could use https://github.com/Azure/static-web-apps-deploy directly instead of the SWA CLI (as mentioned in #754).

Another workaround is to use version 1.1.4.

Pinning the version to v1.1.4 while waiting on the fix seems to have fixed the issue for us (it still fails to load the schema, but does not fail the whole deployment because of it)

Another workaround is to use version 1.1.4.

Pinning the version to v1.1.4 while waiting on the fix seems to have fixed the issue for us (it still fails to load the schema, but does not fail the whole deployment because of it)

I would not use the CLI for a deployment in a pipeline etc. it’s mainly made for local development. You can use the container image or the GitHub action for producrion deployments.

Pinning the version to v1.1.4 while waiting on the fix seems to have fixed the issue for us (it still fails to load the schema, but does not fail the whole deployment because of it)

I would not use the CLI for a deployment in a pipeline etc. it’s mainly made for local development. You can use the container image or the GitHub action for producrion deployments.

While I generally agree with you, there are often external technical/security/regulatory/auditing requirements that prevent teams & companies from deploying straight from GHA. I don't want to derail this thread by going into more detail, but there are genuine reasons why teams rely on the CLI app for deployments.

Another workaround is to use version 1.1.4.

Pinning the version to v1.1.4 while waiting on the fix seems to have fixed the issue for us (it still fails to load the schema, but does not fail the whole deployment because of it)

Hi @jancimajek, in v1.1.4 SWA-CLI skipped validation and continued deploying if timeout. However, it will make routing to not work. So I recommend not to skip validation, but use the 1.1.7-alpha version with my fix instead: https://github.com/Azure/static-web-apps-cli/issues/754#issuecomment-1977411452. The official release will come soon.

Pinning the version to v1.1.4 while waiting on the fix seems to have fixed the issue for us (it still fails to load the schema, but does not fail the whole deployment because of it)

I would not use the CLI for a deployment in a pipeline etc. it’s mainly made for local development. You can use the container image or the GitHub action for producrion deployments.

While I generally agree with you, there are often external technical/security/regulatory/auditing requirements that prevent teams & companies from deploying straight from GHA. I don't want to derail this thread by going into more detail, but there are genuine reasons why teams rely on the CLI app for deployments.

I would use the container image then, as the SWA CLI has afaik no guarantees to work outside of the dev/local testing and validation use case. The risk for a production deployment would be much too high for my taste to rely on development tools for production deployments.
But if you cannot run containers locally or in your self-hosted CI, there is probably no way to avoid the CLI.

Same problem


Fixed dockerfile kingping args

Kingpin for some reason did not accept command args
dockerfile needs to be entrypoint instead of cmd

Coverage increased (+0.3%) to 83.84% when pulling a1b8c22fb32676773543a4ad82889cdb15249b81 on BouweCeunen:fixed-dockerfile-kingping-args into 72d948ed5936c0d1c75552853193b8e73326abdd on stijndehaes:master.


ipfs: 0.4.15 -> 0.4.17

Motivation for this change
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Fits CONTRIBUTING.md.

@GrahamcOfBorg build ipfs

Success on x86_64-linux (full log)
Attempted: ipfs
Partial log (click to expand)
shrinking /nix/store/m0ig96llv3q38cdyam50zivjq9iy31ay-ipfs-0.4.17-bin/bin/api-startup
shrinking /nix/store/m0ig96llv3q38cdyam50zivjq9iy31ay-ipfs-0.4.17-bin/bin/ma-pipe-unidir
strip is /nix/store/1hi76hr87bd1y1q1qjk0lv8nmcjip1c8-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/m0ig96llv3q38cdyam50zivjq9iy31ay-ipfs-0.4.17-bin/bin
patching script interpreter paths in /nix/store/m0ig96llv3q38cdyam50zivjq9iy31ay-ipfs-0.4.17-bin
checking for references to /build in /nix/store/m0ig96llv3q38cdyam50zivjq9iy31ay-ipfs-0.4.17-bin...
cannot find section .dynamic
cannot find section .dynamic
strip is /nix/store/1hi76hr87bd1y1q1qjk0lv8nmcjip1c8-binutils-2.30/bin/strip
/nix/store/m0ig96llv3q38cdyam50zivjq9iy31ay-ipfs-0.4.17-bin

Success on x86_64-darwin (full log)
Attempted: ipfs
Partial log (click to expand)
find: '/nix/store/laywmsgds7nxqhc71xq113fs7c627p48-ipfs-0.4.17': No such file or directory
find: '/nix/store/laywmsgds7nxqhc71xq113fs7c627p48-ipfs-0.4.17': No such file or directory
find: '/nix/store/laywmsgds7nxqhc71xq113fs7c627p48-ipfs-0.4.17': No such file or directory
find: '/nix/store/laywmsgds7nxqhc71xq113fs7c627p48-ipfs-0.4.17': No such file or directory
find: '/nix/store/laywmsgds7nxqhc71xq113fs7c627p48-ipfs-0.4.17': No such file or directory
find: '/nix/store/laywmsgds7nxqhc71xq113fs7c627p48-ipfs-0.4.17': No such file or directory
find: '/nix/store/laywmsgds7nxqhc71xq113fs7c627p48-ipfs-0.4.17': No such file or directory
find: '/nix/store/laywmsgds7nxqhc71xq113fs7c627p48-ipfs-0.4.17': No such file or directory
find: '/nix/store/laywmsgds7nxqhc71xq113fs7c627p48-ipfs-0.4.17': No such file or directory
/nix/store/ny15y4kxjzsv0aas6wpzl112vxkiy73f-ipfs-0.4.17-bin

Success on aarch64-linux (full log)
Attempted: ipfs
Partial log (click to expand)
shrinking /nix/store/ysmjxk9ghi52pn4sb62jnmlb8dw21814-ipfs-0.4.17-bin/bin/seccat
shrinking /nix/store/ysmjxk9ghi52pn4sb62jnmlb8dw21814-ipfs-0.4.17-bin/bin/api-startup
shrinking /nix/store/ysmjxk9ghi52pn4sb62jnmlb8dw21814-ipfs-0.4.17-bin/bin/offline_add
strip is /nix/store/zrs21zqcchgyabjf4xfimncdq16njizc-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/ysmjxk9ghi52pn4sb62jnmlb8dw21814-ipfs-0.4.17-bin/bin
patching script interpreter paths in /nix/store/ysmjxk9ghi52pn4sb62jnmlb8dw21814-ipfs-0.4.17-bin
checking for references to /build in /nix/store/ysmjxk9ghi52pn4sb62jnmlb8dw21814-ipfs-0.4.17-bin...
cannot find section .dynamic
cannot find section .dynamic
strip is /nix/store/zrs21zqcchgyabjf4xfimncdq16njizc-binutils-2.30/bin/strip


isMobile no longer accepts call without parameter in a TypeScript project

In 1.0.3, it was possible to call ismobile like this:
import isMobile from 'ismobilejs';
const result = isMobile();

After upgrading to 1.1.0, this will no longer compile in my Typescript setup (an Angular 9 project). The compilation error is TS2554: Expected 1 arguments, but got 0..
One possible workaround is to make an explicit call with undefined:
import isMobile from 'ismobilejs';
const result = isMobile(undefined);

However, I believe the proper fix would be to add ? to the signature of isMobile().

Yes this is a big, I forgot to make it optional. Thanks for reporting! Fix incoming..

:tada: This issue has been resolved in version 1.1.1 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

Thank you for the quick handling of this!


Tor status indicator icon in bottom right

Moved from: https://github.com/bitcoin/bitcoin/issues/7734.
The current QT GUI shows some network status indicators in the bottom right.
I'd like someone to add one for Tor. It might be the Tor onion logo that is either green, yellow (if going through some not-quite-ready stage) or with a circle and line striking through it when not connected via Tor.
This would complement the Tor-related improvements in 0.12.0 and make it easier for users to determine whether they are connected via Tor without doing additional investigatory steps, such as using the  -debug=tor switch.

Concept ACK

Here is a suggestion for the three icon states.
At some stage it would be nice to have some colored icons, but whilst the others are still in a black and white I think its important to stick with this style for now to keep consistency. I followed the same style that the connect icons use also shown below.
Not connected -> connecting / not-quite-ready stage -> connected.

Nice!

I like the minimalism, I think that is important for Core. The "Not connected icon" and "connected" icons are clear. Maybe the "connecting" icon could be fainter. Similar to the "Not connected icon" but without the cross.

Why not pick the icons that look good even when scaled down (non high-DPI displays)?
Tor made an effort and recently changed those: https://trac.torproject.org/projects/tor/ticket/25702

Why not pick the icons that look good even when scaled down (non high-DPI displays)?

SVG will look fine when scaled down or up

When rendering an SVG, there will always be a limit until it can no longer be scaled down and still be distinguished from a blurry blob. Generally, the less detail an SVG has, the less pixels are needed to still represent the details.

Here is another, much more minimal, icon iteration.

Tor network not connected

Tor network connecting

Tor network connected

If the connecting icon is too minimal this is another iteration I experimented with.

Should we distinguish "node has a Tor network connection" and "node has only Tor network connection"?
The former could lead an unexperienced user to a false sense of privacy.

Would it not be good privacy practice to have Tor connections as default?
Whereabouts in the GUI can these settings be toggled? I'm assuming the SOCKS5 proxy settings in settings>options>network.
I can make icons for these extra states no worries I'll get on to that.

It might make sense to show no icon at all if there's no Tor connection.
When we do show an icon, I suggest only showing that connection is actually secure:

all outbound connections go through Tor; and
inbound connections are disabled, or are through Tor

In particular, there's not much privacy benefit in connecting to some nodes via Tor and some nodes via plain internet.
This approach makes the "connecting" icon unnecessary, because we already have an indicator for connectivity in general.

New designs based on feedback. Button should be un-clickable, Tor will be connected to by default if the user has 'Connect through SOCKS5 proxy (default proxy)' checked in settings > options > network.

Tooltips for both states.

If the user is connecting through a Tor proxy (and not a IPv4 or IPv4 one) should the proxy 'P' icon in the bottom right now be shown? Based on my understanding I think not but am not sure if they have separate technical reasons for showing both.
Figma source files for icons gif below shows how to export the icons

Figma source files for designs

@Bosch-0 @Sjors Please review https://github.com/bitcoin/bitcoin/pull/19926

@Bosch-0 @Sjors Please review bitcoin/bitcoin#19926

The PR has been moved into this repo: #86.


use parameters to compose error messages

According to Django documentation the ValidationError messages should by parametrized by separate params variable.
This enables possibility to use these variables elsewhere in the code and evaluate them programmatically.
This code should be backwards-compatible with current implementations of overridden QuotaValidators, because if the get_error_message was overridden, the returned string doesn't contain parameters and is used in the old state.

Codecov Report

Merging #102 into master will increase coverage by 0.78%.
The diff coverage is 66.66%.

@@            Coverage Diff            @@
##           master    #102      +/-   ##
=========================================
+ Coverage   76.41%   77.2%   +0.78%
=========================================
  Files          36      35       -1
  Lines        1819    1759      -60
=========================================
- Hits         1390    1358      -32
+ Misses        429     401      -28

Impacted Files
Coverage Δ

plans/validators.py
69.86% <66.66%> (-0.29%)
:arrow_down:

plans/management/__init__.py

Continue to review full report at Codecov.

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

Good catch!


"Add New Character" popup shows currently owned characters aswell

...and then people will complain there is no "one pager" way to get to owned characters.


Supports IE 9-11 with webrtc-everywhere plugin

Hi,
I've been trying to run a room on IE 11 with webrtc-everywhere plugin, but cannot get in your code where should I change the code below like said in tutorial:
Change the code you're using to attach a stream to a  or  HTML5 element:
from:  document.getElementById("eltId").src = mediaStream;
to:  attachMediaStream(document.getElementById("eltId"), mediaStream);
Do you have a plan to include IE and Safari clients for licode or do you plan to have an own plugin?
Is there a case that soon Edge browser also will be supported?

maybe that : see stream-subscribed event in
https://github.com/ging/licode/blob/master/extras/basic_example/public/script.js

and other issue is lack of H264 support by edge : https://webrtchacks.com/chrome-firefox-edge-adapterjs/

@mccob thx for considering the question!
there is an issue in JS with videoplayer.play. I will put stack trace below.


Got a crash when playing Darkdustry - Attack

crash-report-09_01_2022_14_32_20.txt

https://github.com/Sharlottes/Informatis/actions/runs/3124751675
can you use this latest action build and try again?


Fix Kitty wrapper on MacOS

Motivation for this change
Closes https://github.com/NixOS/nixpkgs/issues/61231
Apply https://github.com/kovidgoyal/kitty/commit/bdeec612667f6976109247fe1750b10dda9c24c0 and https://github.com/kovidgoyal/kitty/commit/af2c9a49b1ad31e94242295d88598591623fbf11 as a patch
Refs https://github.com/kovidgoyal/kitty/issues/1539
The patch can be removed once the changes referenced land in a release
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[ ] NixOS
[x] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Assured whether relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

@veprbl

@rvolosatovs Thank you!


R1.3

Can one of the admins verify this patch?

Please describe the purpose of the pull request in the future. Thanks!

I am so sorry about this.I am new to github and I clicked the Pull Request by accident and didn't know how to cancel it.

I signed it


SSL error

Request version 2.64.0
Node: v4.0.0
Most HTTPS requests work but there's some type of SSL or network error that's causing me grief: TLSSocket can cause a connection error before socket._httpMessage is set. So connectionErrorHandler has an uncaught exception:
request/request.js:80
socket._httpMessage.emit('error', error)
^
TypeError: Cannot read property 'emit' of null
at TLSSocket.connectionErrorHandler (node_modules/request/request.js:80:24)
at TLSSocket.g (events.js:260:16)
at emitOne (events.js:82:20)
at TLSSocket.emit (events.js:169:7)
at emitErrorNT (net.js:1250:8)
at doNTCallback2 (node.js:429:9)
at process._tickCallback (node.js:343:17)
at Request.onRequestResponse (node_modules/request/request.js:885:25)
at emitOne (events.js:77:13)
at ClientRequest.emit (events.js:169:7)
at HTTPParser.parserOnIncomingClient [as onIncoming] (_http_client.js:415:21)
at HTTPParser.parserOnHeadersComplete (_http_common.js:88:23)
at TLSSocket.socketOnData (_http_client.js:305:20)
at emitOne (events.js:77:13)
at TLSSocket.emit (events.js:169:7)

at Request.start (node_modules/request/request.js:834:12)
at Request.end (node_modules/request/request.js:1394:10)
at end (node_modules/request/request.js:564:14)
at Immediate._onImmediate (node_modules/request/request.js:578:7)
at processImmediate [as _immediateCallback] (timers.js:371:17)

I just encountered this same issue on request 2.65.0/node 5.1.1

Same for me.
request v2.69.0
node v4.4.0

I had a similar issue here today, but unrelated to SSL:
TypeError: Cannot read property 'emit' of null
at Socket.connectionErrorHandler (.../node_modules/request/request.js:82:24)
at Socket.g (events.js:273:16)
at emitOne (events.js:95:20)
at Socket.emit (events.js:182:7)
at emitErrorNT (net.js:1258:8)
at _combinedTickCallback (node.js:383:13)
at process._tickCallback (node.js:407:11)
request v2.69.0 / Node v5.9.0.

I am also seeing this, though I think for me it's happening on sockets that have been returned to the pool, possibly only after a redirect.
request v2.72.0 / node v6.2.0

I've been observing this happening in my CI's as well, in the context of NPM failing :). Is there anything I can do to help address the issue?
90258 verbose stack TypeError: Cannot read property 'emit' of null
90258 verbose stack     at TLSSocket.connectionErrorHandler (C:\Users\svccbld\AppData\Roaming\npm\node_modules\npm\node_modules\request\request.js:82:24)
90258 verbose stack     at TLSSocket.g (events.js:260:16)
90258 verbose stack     at emitOne (events.js:82:20)
90258 verbose stack     at TLSSocket.emit (events.js:169:7)
90258 verbose stack     at emitErrorNT (net.js:1253:8)
90258 verbose stack     at nextTickCallbackWith2Args (node.js:442:9)
90258 verbose stack     at process._tickCallback (node.js:356:17)
90259 verbose cwd E:\A_work\3\s\Product\Source\Web

Same issue
nodejs v6.2.1, request v2.72.0

Trying to create a simple repro - reuse of sockets and redirects to different hosts seem to be a factor.

Here's a simple repro:
Client:
var http = require('http')
var request = require('request')

var options = {
    // Redirects to http://localhost2:3000/node-requests-test/hello
    url: "http://localhost1:3000/node-requests-test/redirect",
    forever: true
}

// Doesn't repro if keepAlive: false
options.agent = new http.Agent({ keepAlive: true });
request(options)

// Wait...
setTimeout(_ => {}, 10000000)

Output:
DEBUG: onRequestResponse: Registered connectionErrorHandler for localhost1
DEBUG: Redirect to http://localhost2:3000/node-requests-test/hello
DEBUG: onRequestResponse: Registered connectionErrorHandler for localhost2
DEBUG: Removed listener for localhost2
DEBUG: Removed listener for localhost2

Server is an IIS ASP.NET server that redirects from /node-requests-test/redirect to /node-requests-test/hello. Changing the server's connection timeout directly corresponds with when the client exception occurs.

@mscdex and @mikeal, I know it was forever ago but are you able to explain the purpose of connectionErrorHandler? You added it in request/request/pull/293.
Was it just working around an old bug in core or is it still necessary?
Code today:
// Function for properly handling a connection error
function connectionErrorHandler(error) {
  var socket = this
  if (socket.res) {
    if (socket.res.request) {
      socket.res.request.emit('error', error)
    } else {
      socket.res.emit('error', error)
    }
  } else {
    socket._httpMessage.emit('error', error)
  }
}

I can't find any record of what socket.res is, and as far as I can tell in _http_client.js in core, socketErrorListener already emits error on the ClientRequest (_httpMessage) so I don't see why we'd need to here.

@zarenner I don't remember, that was 4 years ago :-). However, the http parser error bubbling fix has existed now in node for quite a long time. Because of that fact, the changes in that other PR shouldn't even be necessary anymore AFAIK.

@mscdex Thanks, assumed that would be the case.
I think I'll open a PR to remove your original changes then, and maybe someone with more recent familiarity can chime in.
On another note, I think there might be additional potential problems with some of the listeners on the Request getting added multiple times on redirect.


Incomplete extensions of files encountered during build

On running build on windows 10, Errors were produced as these files were not found:
hadrian/cfg/system.config
settings
mk/config.h
There are files named the following in the directory.
*settings.in

hadrian/cfg/system.config.in
hadrian/cfg/system.config settings mk/config.mk.in

I believe the extensions of the files are not properly written in the build system @snowleopard

@chitrak7 Can you copy the error that was reported, including the exact command line you run?

shakeArgsWith   0.001s    0%
Function shake  0.278s   61%  =========================
Database read   0.001s    0%
With database   0.000s    0%
Running rules   0.169s   37%  ===============
Total           0.449s  100%
Error when running Shake build system:

OracleQ (KeyValue ("hadrian/cfg/system.config","host-os"))
hadrian/cfg/system.config
hadrian/cfg/system.config settings mk/config.h
Configuration file hadrian/cfg/system.config is missing.
Run the configure script manually or let Hadrian run it automatically by passing the flag --configure.
CallStack (from HasCallStack):
error, called at src\Rules\Configure.hs:19:13 in main:Rules.Configure
@snowleopard

You need to pass the -c or --configure option the first time you run hadrian, if I remember correctly.

@chitrak7 Aha, I see. If you read the error message carefully, it tells you exactly what to do:
Configuration file hadrian/cfg/system.config is missing.
Run the configure script manually or let Hadrian run it automatically by passing the flag --configure.

The hadrian/cfg/system.config file is generated by running the boot and configure scripts, as explained in the preparation guide.
As @alpmestan points out, Hadrian can run these scripts for you if you pass the --configure flag to it.

@chitrak7 I closed this issue, but if you think the README can be improved to help beginners, please feel free to send a pull request.

I think the user experience could be improved by automatically doing the right thing rather than spitting out an error message saying what to do...

@ndmitchell I agree and the automated configure used to be the default, but @bgamari, @angerman and @hvr rebelled against it. With no one backing me up I had to concede in #457 :(

😞

@snowleopard  I think this should be mentioned in the file doc\windows.md . This could help a lot of beginners as me.

@chitrak7 Good point!
I've added --configure to the Windows build script and a note that it's only needed during the first build.


Function.prototype.bind on iOS 5 (old iPads & iPhones)

This is a missing polyfill.
I'm not too sure which "ios_safari" version to check against in the config.json file...
Another important information is that the MDN polyfill doesn't work (triggers some instanceof error), I had to use the one from es5-shim.js.

I don't have an iOS 5 device to test on.  Does the polyfill we have in the service already work on Safari on iOS 5?

I just tested it and no, it doesn't work. I have the same error as the MDN polyfill: "TypeError : instanceof called on an object with an invalid prototype property".

OK, if the es5-shim polyfill works on our test browsers (IE 6,7,8 and FF3.6 for this one) then I'm happy to switch to that.  Can you do a PR?

You closed this, but the original issue is still not resolved.
The included polyfill should now work on iOS 5, but it's still not included (I can't see the ios_safari version in the config.json file).

Sorry, I didn't check that the targeting was correct.


k8s deploy

Starting with this parameter does not seem to work. After the image is started, it will let you create an index interactively by default?

Traceback (most recent call last):
File "/usr/local/bin/elastalert-create-index", line 8, in
sys.exit(main())
^^^^^^
File "/usr/local/lib/python3.11/site-packages/elastalert/create_index.py", line 188, in main
host = args.host if args.host else input('Enter Elasticsearch host: ')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
EOFError: EOF when reading a line
Enter Elasticsearch host:

update:

closed


New website!

link
@peterhuene, let me know what you think about this first pass at a new website. There's not much new data, just a walkthrough that pulls straight from the README, but I think the design is a good start. If you want to see something different or have specific improvements in mind, please share. I figure building this site is a good way to grok the codebase and will keep at it if it's helpful.

This is awesome, @t-eckert :) Thanks for the headstart on this.  I like the aesthetics.  How difficult do you think it will be to get the examples to show nicely formatted code blocks for Rust, like Rocket does on their website?

Not too difficult, this was a 2 hour hack-fest so there is still a ways to go.

We should probably make a logo using Ferris too :) Whatever would convey "Azure Functions" without reusing the logo (unless we reach out to the team to get permission, of course).

I was playing around with this that uses the same colors as the Functions logo:

Or this

So for the "getting started" sections, I think we should break it down by trigger, starting with HttpRequest since it is the most common probably.  We can copy the examples for now, but we should probably find some cool "real world" examples implemented in C# and port them to the Rust equivalent; even better if we could show the two side-by-side so those that are already using Azure Functions with C# can see what a port to Rust looks like.
Regarding this PR, would you like to do additional work or get this merged now so we have something in place?

I agree, let's scope out a "sprint" for this week. If you make a project board for the site, we can add items to it to get done this week.
As for this PR, I think it would be good to merge it as is, even with the issues as the current site is a stale branch and the issues will help push me to improve it.


Changing loading-bar location?

Hey,
I like your spinner - but I have one (hopefully easy) question in regards to its customization:
If it possible to set where the loading bar loads? I am using a bootstrap navbar and would prefer the loading bar to be right below the navbar instead of on top of it. Is this possible?
Thanks

Yeah, this is just a wrapper to the original lib...
But I believe you can follow this.


Is example code running outside main goroutine unsafe?

My (very rusty) knowledge of Cocoa is that actions in the UI need to happen on the "main thread" / run loop. I assume think is why runtime.LockOSThread() is used in all of the examples. But it looks like the Pomodoro example has a menu item's title being changed from a different goroutine:
https://github.com/progrium/macdriver/blob/a13d2b6e51df9c8aad758af32377b128ae26078b/examples/pomodoro/main.go#L21
...
https://github.com/progrium/macdriver/blob/a13d2b6e51df9c8aad758af32377b128ae26078b/examples/pomodoro/main.go#L54
It appears to be working ok. My memory (again, faulty) is that these sorts of things can appear to work ok for a while, but fail in mysterious ways as the program becomes more complex. Is there some kind of wizardry going on that makes this code ok? Or should it be happening inside the Cocoa app's run loop?

I spent a while screwing around with NSPort, NSConnection, trying to integrate go channels and the run loop and then stumbled across core.Dispatch - which appears to do exactly what I want (run a func on the main thread). Should setting the title instead be wrapped in core.Dispatch(func() { ... })?

I believe in this case, it's already be called from the cocoa thread. But yes if you were to work with UI objects outside of that, you'd want to do it in a dispatch.

Oh I can see it's happening in a goroutine spawned from the callback. Yes, it should probably be put in a dispatch.

#18 shows that there are some subtile issues when we do not pay attention to this. I will try to get a PR ready to fix the example

I've been thinking about this some more since @flexzuu linked that other issue. It's a mistake that's very easy to make and usually much harder to reproduce than the systray menu title case.
I was thinking that maybe somewhere in Send() we could check that the method is being invoked on the main thread - and either log a warning or panic if it's not. The issue is that we probably[1] don't want to do this unconditionally because not all ObjC code is unsafe on other threads, just some frameworks, like Cocoa. Maybe we could introduce a threadUnsafe bool to object here: https://github.com/progrium/macdriver/blob/cc510679fe062b840da7c2dfb30a2f86c3e356ad/objc/object.go#L77-L79
Then we could log the warnings only for objects with that boolean set to true? And we'd have it set for all Cocoa classes. Thoughts?

@aidansteele i agree its an easy mistake to make. i like that you're suggesting a logging/warning approach. i'd love to see a prototype of this. i think it's just something the programmer needs to be aware of (regardless) so i'd prioritize thinking about the best way to communicate it in documentation first.

thank you to @flexzuu for the PR on this!


Update notebook node to allow multiple input links

Fixes #750
This addresses the issue of cardinality incorrectly being set to a max: 0 and thus not allowing multiple input links on the notebook node.
The second observation(cardinality being deleted after first node) was addressed in canvas (https://github.com/elyra-ai/canvas/issues/162) and should be part of the next canvas release.
Developer's Certificate of Origin 1.1
   By making a contribution to this project, I certify that:

   (a) The contribution was created in whole or in part by me and I
       have the right to submit it under the Apache License 2.0; or

   (b) The contribution is based upon previous work that, to the best
       of my knowledge, is covered under an appropriate open source
       license and I have the right under that license to submit that
       work with modifications, whether created in whole or in part
       by me, under the same open source license (unless I am
       permitted to submit under a different license), as indicated
       in the file; or

   (c) The contribution was provided directly to me by some other
       person who certified (a), (b) or (c) and I have not modified
       it.

   (d) I understand and agree that this project and the contribution
       are public and that a record of the contribution (including all
       personal information I submit with it, including my sign-off) is
       maintained indefinitely and may be redistributed consistent with
       this project or the open source license(s) involved.

Do we know what happens if we don't specify cardinality info for the nodes? Are there an acceptable default?

As far as we've seen having no cardinality behaves the same as we would like it to

Although we see a behavior of min: 0, max: -1, the schema imposes an "at least 1" default while the comment in the description indicates an "exactly 1" (min: 1, max: 1) behavior for inputs and an "at least 1" (min: 1, max: -1) behavior for outputs.  So they might have a bug when cardinality is not specified (IMO).
All the more reason to update the canvas for 1.0.

The answer to my original question:

The original intent for palettes was to load selected operators from an operator repository. The operator definition includes “cardinality” for the “port_definition”: https://github.com/elyra-ai/pipeline-schemas/blob/master/common-pipeline/operators/operator-v3-schema.json.
The description for “cardinality” is:
“Property to capture how many connections are allowed for this port, e.g., min: 1, max:1 implies you must supply 1 and only 1; min:0, max:1 implies it is optional and a max of one, min:0, max:-1 means it is optional and you can have any number of connections. The default value is 1:1 for inputs and 1:-1 for outputs.”

Sounds like what I said and referenced.    I should win a prize: :tada: :smile:
For ports with cardinality min > 0, when does that get enforced?  Is there some call to make to "validate a pipeline" prior to its submission?


pdfsam-basic: 4.2.3 -> 4.2.6

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/torakiki/pdfsam/releases.
meta.description for pdfsam-basic is: "Multi-platform software designed to extract pages, split, merge, mix and rotate PDF files"
meta.homepage for pdfsam-basic is: "https://github.com/torakiki/pdfsam"
meta.changelog for pdfsam-basic is: ""
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS

The tests defined in passthru.tests, if any, passed

/nix/store/j1gpfd6197q0cw3wxnxaf2pyk2qgv0pl-pdfsam-basic-4.2.6/bin/pdfsam-basic passed the binary check.

/nix/store/j1gpfd6197q0cw3wxnxaf2pyk2qgv0pl-pdfsam-basic-4.2.6/bin/.pdfsam-basic-wrapped passed the binary check.

0 of 2 passed binary check by having a zero exit code.

2 of 2 passed binary check by having the new version present in output.

found 4.2.6 with grep in /nix/store/j1gpfd6197q0cw3wxnxaf2pyk2qgv0pl-pdfsam-basic-4.2.6

found 4.2.6 in filename of file in /nix/store/j1gpfd6197q0cw3wxnxaf2pyk2qgv0pl-pdfsam-basic-4.2.6

directory tree listing: https://gist.github.com/51ad17ca59ab1d801a9b7485f4d35028

du listing: https://gist.github.com/e894b5a4c9f019796bbc47e1020e896d

Rebuild report (if merged into master) (click to expand)

4 total rebuild path(s)

1 package rebuild(s)

1 x86_64-linux rebuild(s)
1 i686-linux rebuild(s)
1 x86_64-darwin rebuild(s)
1 aarch64-linux rebuild(s)

First fifty rebuilds by attrpath
pdfsam-basic

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/j1gpfd6197q0cw3wxnxaf2pyk2qgv0pl-pdfsam-basic-4.2.6 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A pdfsam-basic https://github.com/r-ryantm/nixpkgs/archive/0ae7a901e1e0c4ce965800c7814e80d1e877a059.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/j1gpfd6197q0cw3wxnxaf2pyk2qgv0pl-pdfsam-basic-4.2.6
ls -la /nix/store/j1gpfd6197q0cw3wxnxaf2pyk2qgv0pl-pdfsam-basic-4.2.6/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

pdfsam-basic

Maintainer pings
cc @1000101 for testing.

Result of nixpkgs-review pr 134438 at 0ae7a901 run on x86_64-linux 1

1 package built successfully:

pdfsam-basic

2 suggestions:

warning: missing-phase-hooks
installPhase should probably contain runHook preInstall and runHook postInstall.
Near pkgs/applications/misc/pdfsam-basic/default.nix:24:3:
   |
24 |   installPhase = ''
   |   ^

warning: unclear-gpl
agpl3 is a deprecated license, please check if project uses agpl3Plus or agpl3Only and change meta.license accordingly.
Near pkgs/applications/misc/pdfsam-basic/default.nix:45:7:
   |
45 |       license = licenses.agpl3;
   |       ^


[Bug]: lora adapter request still return the base model name

Your current environment

The output of `python collect_env.py`
ubuntu@104-171-202-130:~$ python collect_env.py
/usr/lib/python3/dist-packages/scipy/__init__.py:146: UserWarning: A NumPy version >=1.17.3 and <1.25.0 is required for this version of SciPy (detected version 1.26.4
  warnings.warn(f"A NumPy version >={np_minversion} and <{np_maxversion}"
2024-12-11 09:11:01.238944: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:485] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered
2024-12-11 09:11:01.260442: E external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:8454] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered
2024-12-11 09:11:01.266925: E external/local_xla/xla/stream_executor/cuda/cuda_blas.cc:1452] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered
Collecting environment information...
PyTorch version: 2.5.1+cu124
Is debug build: False
CUDA used to build PyTorch: 12.4
ROCM used to build PyTorch: N/A

OS: Ubuntu 22.04.5 LTS (x86_64)
GCC version: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
Clang version: Could not collect
CMake version: version 3.22.1
Libc version: glibc-2.35

Python version: 3.10.12 (main, Nov  6 2024, 20:22:13) [GCC 11.4.0] (64-bit runtime)
Python platform: Linux-6.8.0-49-generic-x86_64-with-glibc2.35
Is CUDA available: True
CUDA runtime version: 12.4.131
CUDA_MODULE_LOADING set to: LAZY
GPU models and configuration:
GPU 0: NVIDIA RTX A6000
GPU 1: NVIDIA RTX A6000

Nvidia driver version: 550.127.05
cuDNN version: Could not collect
HIP runtime version: N/A
MIOpen runtime version: N/A
Is XNNPACK available: True

CPU:
Architecture:                         x86_64
CPU op-mode(s):                       32-bit, 64-bit
Address sizes:                        40 bits physical, 48 bits virtual
Byte Order:                           Little Endian
CPU(s):                               28
On-line CPU(s) list:                  0-27
Vendor ID:                            AuthenticAMD
Model name:                           AMD EPYC-Rome Processor
CPU family:                           23
Model:                                49
Thread(s) per core:                   1
Core(s) per socket:                   1
Socket(s):                            28
Stepping:                             0
BogoMIPS:                             5000.11
Flags:                                fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm rep_good nopl cpuid extd_apicid pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext perfctr_core ssbd ibrs ibpb stibp vmmcall fsgsbase tsc_adjust bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 clzero xsaveerptr wbnoinvd arat npt nrip_save umip rdpid arch_capabilities
Virtualization:                       AMD-V
L1d cache:                            896 KiB (28 instances)
L1i cache:                            896 KiB (28 instances)
L2 cache:                             14 MiB (28 instances)
L3 cache:                             448 MiB (28 instances)
NUMA node(s):                         1
NUMA node0 CPU(s):                    0-27
Vulnerability Gather data sampling:   Not affected
Vulnerability Itlb multihit:          Not affected
Vulnerability L1tf:                   Not affected
Vulnerability Mds:                    Not affected
Vulnerability Meltdown:               Not affected
Vulnerability Mmio stale data:        Not affected
Vulnerability Reg file data sampling: Not affected
Vulnerability Retbleed:               Mitigation; untrained return thunk; SMT disabled
Vulnerability Spec rstack overflow:   Vulnerable: Safe RET, no microcode
Vulnerability Spec store bypass:      Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:             Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:             Mitigation; Retpolines; IBPB conditional; STIBP disabled; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected
Vulnerability Srbds:                  Not affected
Vulnerability Tsx async abort:        Not affected

Versions of relevant libraries:
[pip3] flake8==4.0.1
[pip3] numpy==1.26.4
[pip3] nvidia-cublas-cu12==<IP_ADDRESS>
[pip3] nvidia-cuda-cupti-cu12==12.4.127
[pip3] nvidia-cuda-nvrtc-cu12==12.4.127
[pip3] nvidia-cuda-runtime-cu12==12.4.127
[pip3] nvidia-cudnn-cu12==<IP_ADDRESS>
[pip3] nvidia-cufft-cu12==<IP_ADDRESS>
[pip3] nvidia-curand-cu12==<IP_ADDRESS>
[pip3] nvidia-cusolver-cu12==<IP_ADDRESS>
[pip3] nvidia-cusparse-cu12==<IP_ADDRESS>
[pip3] nvidia-ml-py==12.560.30
[pip3] nvidia-nccl-cu12==2.21.5
[pip3] nvidia-nvjitlink-cu12==12.4.127
[pip3] nvidia-nvtx-cu12==12.4.127
[pip3] optree==0.13.0
[pip3] pyzmq==22.3.0
[pip3] torch==2.5.1
[pip3] torchvision==0.20.1
[pip3] transformers==4.47.0
[pip3] triton==3.1.0
[conda] Could not collect
ROCM Version: Could not collect
Neuron SDK Version: N/A
vLLM Version: 0.6.4.post2.dev272+gd1c2e15e
vLLM Build Flags:
CUDA Archs: Not Set; ROCm: Disabled; Neuron: Disabled
GPU Topology:
GPU0    GPU1    CPU Affinity    NUMA Affinity   GPU NUMA ID
GPU0     X      NV4     0-27    0               N/A
GPU1    NV4      X      0-27    0               N/A

Legend:

  X    = Self
  SYS  = Connection traversing PCIe as well as the SMP interconnect between NUMA nodes (e.g., QPI/UPI)
  NODE = Connection traversing PCIe as well as the interconnect between PCIe Host Bridges within a NUMA node
  PHB  = Connection traversing PCIe as well as a PCIe Host Bridge (typically the CPU)
  PXB  = Connection traversing multiple PCIe bridges (without traversing the PCIe Host Bridge)
  PIX  = Connection traversing at most a single PCIe bridge
  NV#  = Connection traversing a bonded set of # NVLinks

NCCL_IB_DISABLE=1
LD_LIBRARY_PATH=/home/ubuntu/.local/lib/python3.10/site-packages/cv2/../../lib64:
CUDA_MODULE_LOADING=LAZY

Model Input Dumps
No response
🐛 Describe the bug

lora adapter should return the right model name instead of the base model name.
Part of https://github.com/vllm-project/vllm/issues/6275
Before submitting a new issue...

[X] Make sure you already searched for relevant issues, and asked the chatbot living at the bottom right corner of the documentation page, which can answer lots of frequently asked questions.

This issue has been fixed in our downstream for a while, I just notice I didn't check in to upstream..


Allow for multiple pach clusters in different namespaces.

While our deploy logic in general works within the provided namespace,
we also create a ClusterRoleBinding which spans namespaces. This gets
overwritten during kubectl apply, meaning only one pachyderm
ServiceAccount will have the appropriate role at a time.
Switching to (non-Cluster) RoleBindings would also solve this, but I
didn't want to assume those permissions were never relied upon.

Other solution would be to use kubectl patch to append in this case, but I didn't like the special logic that would involve

Agent Dale Georg linked Freshdesk ticket 300 for this issue.


XMLParser repeats the second-to-final node, if the actual final node is a text node.

Godot version:
v3.3.stable.official (Steam)
OS/device including version:
Windows 10, 20H2
Issue description:
XMLParser appears to repeat the second-to-final node, if the actual final node is a text node.
For example, take the following input: Hello! My name is Godette. Remember to treat your nodes with respect!.
When feeding that into XMLParser, one would expect to see it output a NODE_TEXT as the final node. However, it instead repeats the NODE_ELEMENT_END that represents the . In cases where the second-to-final node is a element opener in some form, it will even include all the attributes -- the only thing that is updated is the offset obtained from get_node_offset().
Steps to reproduce:

Feed an XMLParser any sort of input that will result in multiple nodes, with the final node being a text node. The input given in the description above will work.
Loop over the input, and find that where the final node should be a text node, it's instead a repeat of the second-to-final node.

Minimal reproduction project:
XMLParser does not respect Text Node as final node.zip

IIRC, the string you provided is not valid XML. There should be one and only one root element inside an XML document.
The last "duplicated" NODE_ELEMENT_END is the end of the missing root element. The node info is not updated because the tag is missing.
The parser will behave correctly if the string is wrapped inside a tag.

@timothyqiu In any case, it still treats the rest of the string correctly, so it should treat a text node at the end correctly -- regardless of its validity in regards to the rest of the spec.

@LikeLakers2 The behavior is basically Garbage in, garbage out.
After investigating the source code, I think you are right, read() should at least return an error for the last text element.
The parser used the start of next tag to identify the end of text element (this is fine as long as the XML is valid). The parse fails becauses there is no tag after the "text element". read() does not report the error correctly, it currently returns either OK or ERR_FILE_EOF.

@timothyqiu If you believe it should return an error, then I would suggest it returns an error on the first read(), rather than the last node. That way we don't waste CPU cycles parsing only to find out it's malformed.

The parser used the start of next tag to identify the end of text element (this is fine as long as the XML is valid). The parse fails becauses there is no tag after the "text element".

Can't the parser tell when we've hit the end-of-input? If so, couldn't it use that to identify the end of a text element, too?

@LikeLakers2 Yeah, I'm thinking about making a PR to check text elements at the end-of-input. The parser can tell that, but the current implementation expects valid XML, so it relies on the start of next tag for simplicity.

@timothyqiu (Sorry for the deletes, I'm trying to find a good way to word how I feel)
If we want it read() to return an error if it encounters a text node as the last thing, then I would suggest it do so on the first read(). Otherwise, that would still violate the rule of least surprise, as we'd have read through the input (and the developer may have acted on it) only to find that it's malformed.
I'm personally still in favor of having it return a text node as one would expect it to, but I'm not against returning errors so long as we can avoid violating the rule of least surprise.

Yeah, I'm thinking about making a PR to check text elements at the end-of-input. The parser can tell that, but the current implementation expects valid XML, so it relies on the start of next tag for simplicity.

@timothyqiu If you don't mind, I'd like to double-check that I'm understanding this reply correctly. If you did make this change in a PR, would you have it return an error? Or would you have it return a text node?
Also: Would this PR be made for both the 3.x and master branches, or just one branch? Because, at least for the 3.x branch, I feel it should be changed to return a text node -- reason being that the parser already accepts the rest of the malformed input, so it should probably accept a text node at the end too. (Though as for the master branch, I wouldn't complain if that was changed to an error.)

Tried some more XMLParser stuff just now. I think I found another similar issue:

Hello! My name is Godette. <wait t=5 />Remember to treat your nodes with respect!

(I understand that not quoting the value of the t attribute is also invalid XML (or at least, I would assume it is).)
With this input, XMLParser returns a NODE_ELEMENT when it reaches the wait tag. However, this NODE_ELEMENT has a name of .  (which is actually the data of the NODE_TEXT just before it), and no attributes. Additionally, the NODE_TEXT that should appear after it does not get output at all.
But let's try a slightly different malformed input:

Hello! My name is Godette. <wait t=5 color="blue" />Remember to treat your nodes with respect!

Now it somewhat correctly parses the wait tag, and all the nodes after it. I say "somewhat" because the wait tag will only have one attribute attached to it -- the t attribute, with the value of blue.
Ideally, it should be doing one of two things when it encounters this:

Ignoring the t attribute if a " does not come right after the =.
Returning an error

To be honest, I'm leaning towards 2 for this situation, because this is more explicitly invalid XML. I would still like it if the original issue can be solved by returning a TEXT_NODE, but for a situation like this I think it should actually error out.

For the record, I tested a few similar edge cases where the input ends prematurely:

Case
Text
Result
Expected

Incomplete Unknown
<first></first><?xml
💥 heap buffer overflow
UNKNOWN node

Incomplete Comment
<first></first>


don't recommend using X-XSS-Protection

The security page of the docs recommends using X-XSS-Protection to prevent against XSS attacks. However, this is no longer recommended since it protects only against extremely rudimentary XSS attacks while at the same time causing while new types of more difficult to prevent XSS attacks.
See OWASP and MDN for reasons why this is a problem.
This section should at least include a warning in case someone blindly copy pastes that code.


Translate into English error messages

When main GUI language was set to English there many non-translated messages,
For example:

Some errors suggest that I am directly using Chinese. After the debugger is fully functional, I will modify it all at once to multilingual.


雪関係単語

Category of the typing issue
Choose one of them

Out-of-vocabulary (e.g. "堆雪" "排雪" is not in the candidate list at all).

Issues
Write issues to the following table. (It's in the markdown format)

input [e.g.ゆうひ]
expected [e.g. 夕日]
actual [e.g. ユウヒ]

たいせつ
堆雪
大切,大雪

はいせつ
排雪
排泄

Version or commit-id
Mozc-2.28.4715.102+24.11.oss
Additional context
Add any other context about the problem here.

Hi Hokkosha,
Thank you for your feedback.
We are going to add entries based on your feedback.
It seems "排雪(はいせつ)" is already in the dictionary (ver. 2.28.4960).

Thank you for your response.
I'm looking forward to update.

Hi Hokkosha,
We fixed this issue based on your feedback as https://github.com/google/mozc/commit/9bcc6dd63d23ccaec5930e31ffd50c670a0fcee7
Thank you,


Configuration editing (alternative)

Here's the alternative which provides the full config object. What do you think about that instead of the previous PR?

Found out that Site and App configurations can only be changed after the site/app is commited. I adjusted it accordingly and also made it possible to set the directorybrowsing directly on creation. Also I moved the Authentication / Authorization stuff into the Configuration Extension method.
I'm done so far with the changes, please have a look at it.

I really like this, especially the use of extension methods for Configuration as it makes it really easy to extend. I'm busy tonight but will accept it tomorrow 👍

No hurries. Better have a good look at it if it could be more improved / gives enough flexibility.


Batch issue

When doing a batch of prompts, the extension translate each batch.
Example: I write my prompt and then i want to generate 50 images with this prompt, this should only translate once... but it translate 50 times (for the same prompt)

Thanks for the comment. I think i know why is this hapening. I'll do the modification then notify you when I'm done.

The issue is solved in the latest version. Just pull the latest version of the repository and you will have the fixed version.
Thanks for your remark that helped enhancing the tool.


[193] Issue #193 - September 09, 2021

To contribute to this issue, simply leave a comment here. Please also review our contributing guidelines.
The current draft for this issue in _drafts/. If you want to contribute directly, feel free to open a pull request.

https://github.com/apple/swift/pull/39051

https://github.com/apple/sourcekit-lsp/pull/414#event-5221612767

https://forums.swift.org/t/api-changes-for-0-2-0/51647

https://forums.swift.org/t/pitch-destructuring-assignment-of-structs-and-classes/51593/1

https://forums.swift.org/t/1-0-0-release-notes/51641

https://forums.swift.org/t/netlink-socket-support-in-swiftnio/51651

https://forums.swift.org/t/se-0320-2nd-review-coding-of-non-string-int-keyed-dictionary-into-a-keyedcontainer/51710

https://forums.swift.org/t/amendment-se-0292-package-registry-service/51663

https://forums.swift.org/t/accepted-se-0321-package-registry-service-publish-endpoint/51660

https://forums.swift.org/t/dropping-support-for-ubuntu-16-04/51726

https://www.swiftbysundell.com/articles/conditional-compilation-within-swift-expressions

https://forums.swift.org/t/swiftwasm-5-4-0-has-been-released/51753

https://forums.swift.org/t/pitch-module-aliasing/51737

fun https://twitter.com/jckarter/status/1433870421179334659

https://forums.swift.org/t/september-3rd-2021-special-update/51766

https://forums.swift.org/t/amendment-se-0303-package-manager-extensible-build-tools/51763

https://forums.swift.org/t/try-await-result-ergonomics/51802

https://forums.swift.org/t/pitch-small-enhancement-to-enumerations/51780/1

https://serialcoder.dev/text-tutorials/swift-tutorials/using-variadic-parameters-in-swift/

https://forums.swift.org/t/se-0322-temporary-uninitialized-buffers/51848

https://forums.swift.org/t/accepted-with-modifications-se-0304-structured-concurrency/51850

https://twitter.com/jckarter/status/1435310270134378496

https://forums.swift.org/t/pitch-introduce-expanded-parameters/51885/1

https://forums.swift.org/t/introducing-an-unwrap-or-throw-operator/51905

https://forums.swift.org/t/pitch-conceptual-consistency-for-callasfunction/51895


Environment variable from terminal overwriting .env.erb value

There is an issue where the value of an environment variable set in the terminal is overwriting the value specified in the .env.erb file. The expected behavior is that the value defined in .env.erb should take precedence and overwrite any value set in the terminal.
Desired behavior
The value specified in the .env.erb file should overwrite the value set in the terminal.
How to Reproduce
Define a value in your .env.erb file:
MY_VALUE=test

In the terminal, export a different value for the same variable:
export MY_VALUE=wrongvalue

To make sure your terminal knows the value, you can edit the .bashrc.
Run the following command:
kamal envify

Check the value of the environment variable on the host machine (.kamal/env/roles/myfile.rb)
The environment variable on the host machine retains the terminal value (wrongvalue).
Expected outcome
The environment variable on the host machine should have the value from .env.erb (test).
Root cause

Version
Kamal 1.7.1

this is working as expected. Kamal uses dotenv under the hood, and being able to grab environment variables from an export is a default behavior.

this is working as expected. Kamal uses dotenv under the hood, and being able to grab environment variables from an export is a default behavior.

It can be surprising for developers when a value specified in .env.myenv is not reflected on the host machine. I believe that variables in .env.myenv should take precedence over terminal values.
However, if this behavior is indeed intended, let's close this issue.

This should be resolved in Kamal 2, though the secrets are now in .kamal/secrets rather than .env.
You can get either behaviour:
#.kamal/secrets

FOO=$FOO # reads from environment
FOO=value # reads value directly