added ZX-Spectrum section and ZX-Poly emulator link

I have added ZXSpectrum section by analogue with previously listed sections and added link to ZXPoly emulator

@alnacle it looks like that I have fixed all requests, or I have skipped something?


fix bug:  qianfan_api.py _achat_completion_stream add request_timeout

fix bug:  qianfan_api.py _achat_completion_stream add request_timeout

:warning: Please install the  to ensure uploads and comments are reliably processed by Codecov.
Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 82.21%. Comparing base (c036574) to head (e4b8288).

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@               Coverage Diff                @@
##           v0.8-release    #1442      +/-   ##
================================================
- Coverage         82.40%   82.21%   -0.20%
================================================
  Files               249      245       -4
  Lines             13839    13689     -150
================================================
- Hits              11404    11254     -150
  Misses             2435     2435

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


Move indicators to same row as event times

Many thanks for your widget.
I use the following widget layout with quite a narrow width (two units):

You'll notice that the indicator for the alert is on the same line as the event title, reducing the space for the title. Meanwhile there is blank space on the row below, containing the event times.
Could the indicators be moved down a row, to allow viewing a few more characters of the event title?

@JohnVeness Looking at your screenshot I see that you could easily hide the "Indicator for alerts" altogether in "Event details" settings as all your events have it
?!

I realise I can hide that indicator, but actually not all my events have it (I chose that cluster specifically to demonstrate the issue). I find the indicator useful, just would prefer it somewhere else.


Does anyone know if its possible to show tabs conditionally?

Hi Guys,
Just trying to figure out if its possible to show tabs conditionally. First thought was something like cmb2-conditionals... But this seems to be used only for fields.
Then also came to my intention is the "show_on/show_on_cb" solution. This is something i haven't tried myself yet so will look into this. But hoped to find people here that encountered the same thing.
Any other solutions available to your knowledge that may work?

Just to my surprise someone already made a PR for the show_on_cb solution #23 . Will gives this a spin and see if this works out for me.

I have tested the branch and have some problems with the implementation.

You need to have the "show_on_cb" specified on your tabs or you will get the following notices.

Notice: Undefined index: show_on_cb in C:\xampp\htdocs\dev1\wp-content\plugins\my-plugin\includes\cmb2-tabs\inc\cmb2-tabs.class.php on line 67
Notice: Undefined index: show_on_cb in C:\xampp\htdocs\dev1\wp-content\plugins\my-plugin\includes\cmb2-tabs\inc\cmb2-tabs.class.php on line 79

On page load the tabs styling doesn't seem to be loaded correctly.
https://ttprivatenew.s3.amazonaws.com/pulse/amex/attachments/13249126/TinyTake23-04-2020-02-32-33.mp4


Crash when entering decimal into # of beacons

Problem Description
Admittedly, I didn't read the instructions about entering integers for beacon amounts. Regardless, the game crashes when you try to enter one.
The mod Factory Planner (2.0.2) caused a non-recoverable error.
Please report this error to the mod author.
Error while running event factoryplanner::on_gui_text_changed (ID 2)
factoryplanner/backend/data/Beacon.lua:66: attempt to perform arithmetic on local 'profile_mulitplier' (a nil value)
stack traceback:
factoryplanner/backend/data/Beacon.lua:66: in function 'summarize_effects'
factoryplanner/backend/data/ModuleSet.lua:108: in function 'normalize'
factoryplanner/ui/dialogs/beacon_dialog.lua:175: in function 'handler'
factoryplanner/ui/event_handler.lua:169: in function <factoryplanner/ui/event_handler.lua:121>
Reproduction
Enter any decimal into the Amount on the Edit Beacon screen

Thanks for the report. Please update the mod to 2.0.4, which should fix this issue!


fix(plasma-theme-builder): Fix platform name and minor refactor

Theme Builder app deployed!
http://plasma.sberdevices.ru/pr/plasma-theme-builder-pr-608/


How to use masks ?

Hi,
I am trying to add a mask on a sprite in order to hide a part of the sprite. Ideally I would have preferred to use a rectangle shape instead of a sprite as my sprite is a just a green filled rectangle, but it doesn't seem to be possible to apply a mask on shapes. I am using the latest build on this repository (Phaser v3.2.0).
I couldn't find any documentation about those features but the example here.
Here is my code.
var sprite = this.add.sprite(0, 0, "green_rectangle.png");
var circle = new Phaser.Geom.Circle(x, y, 10);

var graphics = this.add.graphics({});
graphics.fillCircleShape(circle);

sprite.mask = new Phaser.Display.Masks.GeometryMask(this, graphics);

Is it possible to inverse the mask and don't display the graphics shape?
Thank you for your help :smiley:

I found a better workaround (maybe me a little bit costly):
private _draw(x, y, radius) {
    const circle = new Phaser.Geom.Circle(x, y, radius);
    const points: Phaser.Geom.Point[] = [];
    for (let i = 0; i <= this._nbOfPoints; i++) {
        const angle = i * 2 * Math.PI / 16;
        const point = new Phaser.Geom.Point();
        Phaser.Geom.Circle.CircumferencePoint(circle, angle, point);
        points.push(point);
    }
    points.push(new Phaser.Geom.Point(3200, 0));
    points.push(new Phaser.Geom.Point(0, 0));
    points.push(new Phaser.Geom.Point(0, 3200));
    points.push(new Phaser.Geom.Point(3200, 3200));
    points.push(new Phaser.Geom.Point(3200, 1));

    const polygon = new Phaser.Geom.Polygon(points);

    this._graphics.clear();
    this._graphics.strokePoints(polygon.points);
    this._graphics.fillPoints(polygon.points);
    this._graphics.alpha = 0.8;
}

I hope it might help someone! Don't hesitate to ask me for any comment on that solution.


Dead link for complex manifest file

The text phrase "which you can compare on this Github repository." links to
https://github.com/OfficeDev/Excel-Custom-Functions/blob/generate-metadata/manifest.xml
However this page is not found.
The real link might be:
https://github.com/OfficeDev/Excel-Custom-Functions/blob/master/manifest.xml
(this might be related to #1064 ?)

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

ID: 94ad7803-d4f7-a700-7c7f-204cd8f34e4a
Version Independent ID: 9c485bae-cab1-bdad-4c8e-baad2b12b22d
Content: Create custom functions in Excel - Office Add-ins
Content Source: docs/excel/custom-functions-overview.md
Product: excel
Technology: add-ins
GitHub Login: @o365devx
Microsoft Alias: o365devx

Gosh darn it, sorry about that. I will update this for you - I thought I had the right URL. Thanks for keeping me honest! :)

Should be up to date now! I am going to close this issue but let me know if you need anything else by commenting on this thread.


FIX: Exit server when connections are drained

This allows seamless exits/restarts where already-connected clients
won't get any errors for in-flight requests.


bump @emotion/hash dependency from 0.8.0 to 0.9.0

Bumps @emotion/hash dependency to 0.9.0.
This @emotion/hash version adds an exports fields in its package.json file and fixes a Nuxt SSR build error:
[nuxt] [request error] [unhandled] [500] hash is not a function

@wobsoriano The lockfile will need to be updated as well.

Lockfile updated @mattcompiles.


Optional property marked as required

I'll repost the entire question posted on Stackoverflow as it looks like a NSwag issue.
Did I misconfigure something I've missed or is this an NSwag bug?

I'm using NSagStudio to generate a c# client for an OpenAPI 3.0.1 service. Since the latest update I get an issue where a property marked as required is missing from the retrieved data and thus cannot be deserialized.
I'm trying to understand if

The OpenAPI spec of the service is incomplete/wrong
I've misconfigured something with NSwagStudio
There is a bug in NSwagStudio

OpenAPI 3.0.1 service spec: https://raw.githubusercontent.com/admin-ch/CovidCertificate-Apidoc/main/open-api/api-doc.yaml
NSwagStudio configuration:
{
  "runtime": "NetCore31",
  "defaultVariables": null,
  "documentGenerator": {
    "fromDocument": {
      "json": "[see URL]",
      "url": "https://raw.githubusercontent.com/admin-ch/CovidCertificate-Apidoc/main/open-api/api-doc.yaml",
      "output": null,
      "newLineBehavior": "Auto"
    }
  },
  "codeGenerators": {
    "openApiToCSharpClient": {
      "clientBaseClass": "BagCovidCertificateClientInternalBase",
      "configurationClass": null,
      "generateClientClasses": true,
      "generateClientInterfaces": false,
      "clientBaseInterface": null,
      "injectHttpClient": false,
      "disposeHttpClient": true,
      "protectedMethods": [],
      "generateExceptionClasses": true,
      "exceptionClass": "BagCovidCertificateApiException",
      "wrapDtoExceptions": true,
      "useHttpClientCreationMethod": false,
      "httpClientType": "System.Net.Http.HttpClient",
      "useHttpRequestMessageCreationMethod": true,
      "useBaseUrl": true,
      "generateBaseUrlProperty": true,
      "generateSyncMethods": false,
      "generatePrepareRequestAndProcessResponseAsAsyncMethods": false,
      "exposeJsonSerializerSettings": false,
      "clientClassAccessModifier": "internal",
      "typeAccessModifier": "internal",
      "generateContractsOutput": false,
      "contractsNamespace": null,
      "contractsOutputFilePath": null,
      "parameterDateTimeFormat": "s",
      "parameterDateFormat": "yyyy-MM-dd",
      "generateUpdateJsonSerializerSettingsMethod": true,
      "useRequestAndResponseSerializationSettings": false,
      "serializeTypeInformation": false,
      "queryNullValue": "",
      "className": "BagCovidCertificateClientInternal",
      "operationGenerationMode": "SingleClientFromOperationId",
      "additionalNamespaceUsages": [],
      "additionalContractNamespaceUsages": [],
      "generateOptionalParameters": false,
      "generateJsonMethods": false,
      "enforceFlagEnums": false,
      "parameterArrayType": "System.Collections.Generic.IEnumerable",
      "parameterDictionaryType": "System.Collections.Generic.IDictionary",
      "responseArrayType": "System.Collections.Generic.ICollection",
      "responseDictionaryType": "System.Collections.Generic.IDictionary",
      "wrapResponses": false,
      "wrapResponseMethods": [],
      "generateResponseClasses": true,
      "responseClass": "SwaggerResponse",
      "namespace": "Documedis.Clients.External.Clients.Internal",
      "requiredPropertiesMustBeDefined": true,
      "dateType": "System.DateTimeOffset",
      "jsonConverters": null,
      "anyType": "object",
      "dateTimeType": "System.DateTimeOffset",
      "timeType": "System.TimeSpan",
      "timeSpanType": "System.TimeSpan",
      "arrayType": "System.Collections.Generic.ICollection",
      "arrayInstanceType": "System.Collections.ObjectModel.Collection",
      "dictionaryType": "System.Collections.Generic.IDictionary",
      "dictionaryInstanceType": "System.Collections.Generic.Dictionary",
      "arrayBaseType": "System.Collections.ObjectModel.Collection",
      "dictionaryBaseType": "System.Collections.Generic.Dictionary",
      "classStyle": "Poco",
      "jsonLibrary": "NewtonsoftJson",
      "generateDefaultValues": true,
      "generateDataAnnotations": true,
      "excludedTypeNames": [],
      "excludedParameterNames": [],
      "handleReferences": false,
      "generateImmutableArrayProperties": false,
      "generateImmutableDictionaryProperties": false,
      "jsonSerializerSettingsTransformationMethod": null,
      "inlineNamedArrays": false,
      "inlineNamedDictionaries": false,
      "inlineNamedTuples": true,
      "inlineNamedAny": false,
      "generateDtoTypes": true,
      "generateOptionalPropertiesAsNullable": false,
      "generateNullableReferenceTypes": false,
      "templateDirectory": null,
      "typeNameGeneratorType": null,
      "propertyNameGeneratorType": null,
      "enumNameGeneratorType": null,
      "serviceHost": null,
      "serviceSchemes": null,
      "output": "BagCovidCertificateClientInternal.Generated.cs",
      "newLineBehavior": "Auto"
    }
  }
}

My issue occurs with this element:
    IssuableRapidTestDto:
      type: object
      properties:
        code:
          type: string
          description: Code of rapid test as string.
          example: "1232"
        display:
          type: string
          description: Manufacturer and display name of rapid test as string.
          example: "Abbott Rapid Diagnostics, Panbio Covid-19 Ag Rapid Test"
        validUntil:
          type: string
          description: Deadline after which the rapid-test can no longer be used to
            establish a certificate.
          format: date-time
          example: 2022-01-06T00:00:00+01:00

Which results in following class being generated:
    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "<IP_ADDRESS> (NJsonSchema v<IP_ADDRESS> (Newtonsoft.Json v<IP_ADDRESS>))")]
    internal partial class IssuableRapidTestDto
    {
        [...]

        /// <summary>
        /// Deadline after which the rapid-test can no longer be used to establish a certificate.
        /// </summary>
        [Newtonsoft.Json.JsonProperty("validUntil", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
        public System.DateTimeOffset ValidUntil { get; set; }

        [...]
    }

My issue occurs because not all IssuableRapidTestDto have a ValidUntil date set, when retrieving the data.
If I remove Required = Newtonsoft.Json.Required.DisallowNull the deserialization works and ValidUntil holds DateTimeOffet.MinValue. As this is generated code I don't want to adapt it manually.
I'm having a hard time figuring out if ValidUntil is actually required or not.

By setting "generateOptionalPropertiesAsNullable": true (instead of false before) the property becomes nullable (that's good). But I've noticed ALL properties which are not Newtonsoft.Json.Required.Always are either marked with Newtonsoft.Json.Required.DisallowNull whereas I'd expect them to be Newtonsoft.Json.Required.Default (as, from my understanding, they are optional).
I'm still not sure if I misunderstood something or if this is an NSwag bug.

This is a serious issue, has anyone looked at it?

I've encountered this issue again when integrating a new API. The fix I've applied is pretty simple: Replace Required = Newtonsoft.Json.Required.Always with Required = Newtonsoft.Json.Required.Default but it is a pain to think of having to do this after every re-regenration of the client.

Same issue but with an api significant in size. Changing all of these by hand is not practical. At this point I may have to separate the work arounds into its own project. This whole thing desperately needs more dedicated maintainers.

Might be able to utilize the ClientBaseClass property of CSharpClientGeneratorSettings to handle this issue instead of manually editing the generated classes.
public class GeneratedClientBase
{
    public void UpdateJsonSerializerSettings(JsonSerializerSettings settings)
    {
        settings.ContractResolver = new SafeContractResolver();
    }
}

public class SafeContractResolver : DefaultContractResolver
{
    protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
    {
        var jsonProperty = base.CreateProperty(member, memberSerialization);
        jsonProperty.Required = Required.Default;

        return jsonProperty;
    }
}

@Wangor No update I'm aware of unfortunately

I'm finding this same issue.  I guess there hasn't been a workaround?

The workaround of @seansanchez did not work for me, but I managed to get it working using this code:
public partial class GeneratedClient // Replace by your client name
{
    partial void UpdateJsonSerializerSettings(JsonSerializerSettings settings)
    {
        settings.ContractResolver = new SafeContractResolver();
    }
}

public class SafeContractResolver : DefaultContractResolver
{
    protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
    {
        var jsonProperty = base.CreateProperty(member, memberSerialization);

        jsonProperty.Required = Required.Default;

        return jsonProperty;
    }
}

However, I strongly feel that https://github.com/RicoSuter/NJsonSchema/pull/1563 would be the definitive fix for this issue, removing the need for this partial class.


this.mime = mime.getType(file);

D:\node-projects\resume-extractor>node test.js
2019-12-28T11:11:22+0530  processing.js:72 (extractTextFile) D:\node-projects\resume-extractor/files/1.pdf
D:\node-projects\resume-extractor\src\utils\libs\processing.js:120
this.mime = mime.getType(file);
^
TypeError: mime.getType is not a function
at new PreparedFile (D:\node-projects\resume-extractor\src\utils\libs\processing.js:120:20)
at D:\node-projects\resume-extractor\src\utils\libs\processing.js:83:18
at D:\node-projects\resume-extractor\node_modules\textract\lib\extract.js:74:5
at D:\node-projects\resume-extractor\node_modules\textract\lib\extractors\pdf.js:20:5
at splitPages (D:\node-projects\resume-extractor\node_modules\pdf-text-extract\index.js:76:5)
at ChildProcess.closeHandler (D:\node-projects\resume-extractor\node_modules\pdf-text-extract\index.js:106:5)
at ChildProcess.emit (events.js:198:13)
at maybeClose (internal/child_process.js:982:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:259:5)

were any of you @aadityak / @aneeshdua, able to solve this problem? I am also struggling with it.

I believe the repository code has this fixed, but the latest repo code hasn't been published to npm.


[Enhancement] change bunx create-vite to bun create vite in examples of scaffolding vite project

Documentation is

[ ] Missing
[ ] Outdated
[X] Confusing
[ ] Not sure?

Explain in Detail
In your command-examples of scaffolding vite project in bun is written in a non-standard way
# npm 7+
npm create vite

# yarn
yarn create vite

# pnpm
pnpm create

# bun
bunx create-vite

bunx create-vite instead of bun create vite
https://vitejs.dev/guide/#scaffolding-your-first-vite-project
Your Suggestion for Changes
write bun create vite
Reproduction
No response
Steps to reproduce
No response

fixed by #15646


ENH: Prefer FFmpegDecoder for video

@JustinTFleming this should address https://github.com/LABSN/expyfun/pull/439#issuecomment-1013295729 by explicitly trying to use FFmpegDecoder

Shall I wait until @JustinTFleming has a chance to test before merging?

Looks (and sounds) good on my end. Thanks all!


AsyncPayloadProcessor owned payloads are released too early

In ModelMeshApi/processPayload, the payload data is cleared after payloadProcess.process(payload) is called:
if (payloadProcessor.process(payload)) {
     data = null; // ownership transferred
}

However, the AsyncPayloadProcessor's process method is:
    public boolean process(Payload payload) {
        boolean enqueued = payloads.offer(payload);
        if (!enqueued) {
            dropped.incrementAndGet();
        }
        return enqueued;
    }

Which means there is no guarantee the payload is actually processed before the process call returns true. In the situation where the payload is not immediately processed and is instead queued, the payload data will be deleted before the payload is sent, thus resulting in null payloads. The AsyncPayloadProcessor's processPayload call already handles releasing the payload data after processing, so the data=null in the MM API is likely unnecessary in this case.

This seems to the underlying cause of https://github.com/trustyai-explainability/trustyai-explainability/issues/368


Added Item Lists for Inventory, Stash and Cube

ItemInfo has a new field now (GUID), this is needed to identify removed items on update.

looks good to me =)

Yeah, I didn't put much effort into making the code good/nice.
As soon as I found the array containing the position of the items I was ready to rewrite it anyway.
But looks like getting a pointer to that array isn't that easy.


[ENH] - Use GitHub secrets instead of Vault

Feature description
We're currently relying on Vault, hosted on HashiCorp Cloud Platform, to read secrets for our GHA workflows. For example:
https://github.com/nebari-dev/nebari/blob/855aa14ecc32625a98ec01b017acfc8a4af3c017/.github/workflows/test_aws_integration.yaml#L61-L70
In the previous months, our Vault configuration has broken, resulting in failing GHA jobs when trying to read secrets. Here's a recent example: https://github.com/nebari-dev/nebari/actions/runs/11628815929/job/32384643624#step:5:32
I think we could simplify our secret management logic and use GitHub secrets instead.
Value and/or benefit
Migrating from Vault to GitHub secrets would reduce the maintenance burden and avoid jobs failing because of a broken Vault configuration.
Anything else?
No response

We talked about this in the meeting this morning and were in favor of this change.


build: add support for x-deprecated when generating schema

When using the CLI and a property is deprecated we emit a warning by using the x-deprecated field. However API consumers have no way to know that a property is deprecated at the moment.
This converts x-deprecated to  @deprecated comments

Yeah, but with producers, you cannot amend the description, only add addition items to schema.
Unless there is another part of the API, that I don't know of.


add sbom format option

Signed-off-by: Patrick Flynn<EMAIL_ADDRESS>

closing as old/inactive. please re-open if necessary


🐛 Bug Report: OIDC ID token rejected due to nonce mismatch

📜 Description
It bugs out when a user logs in for the first time while using certain OIDC Identity Providers.
👍 Expected behavior
The user should be able to log in.
👎 Actual Behavior with Screenshots
It actually rejects the first login attempt with a nonce mismatch.

👟 Reproduction steps
In a browser without an established session (e.g. Incognito Window) attempt to log in using an OIDC auth provider that uses AWS Cognito User Pools.  Config and code is provided in the context below.
The actual error is coming from the openid-client library. https://github.com/panva/node-openid-client/blob/main/lib/client.js#L807
📃 Provide the context for the Bug.
Config Example
auth:
  environment: local
  session:
    secret:
      $include: secrets.yaml#sessionSecret
  providers:
    my-provider-name:
      local:
        clientId: my-client-id
        metadataUrl: https://cognito-idp.us-east-1.amazonaws.com/us-east-1_someUserPoolId/.well-known/openid-configuration
        tokenSignedResponseAlg: RS256
        clientSecret:
          $include: secrets.yaml#clientSecret

Usage
    providerFactories: {
      'my-provider-name': providers.oidc.create({
        signIn: {
          resolver: mySignInResolver,
        },
      }),
    },

The issue occurs due to no nonce being passed in during the authentication, and the openid-client library logic not specifically generating a nonce for code flow.  AWS Cognito will always generate a nonce claim in the id_token, using the provided nonce if it exists, or generating their own if it does not.
Upon callback, openid-client validates that the token matches if present in the token, but as the token was generated by the Authorization Server, it does not match.  https://github.com/panva/node-openid-client/blob/main/lib/client.js#L801-L805
The root issue is AWS Cognito implementing the Authorization Server in such a way as to cause this issue (though they are not technically out of spec compliance).
The fix is straightforward, which is to set a nonce value explicitly in the options object in the OauthAuthenticator.start method.  This change should have no impact on any existing integrations, assuming Authorization Servers adhere to the spec.
I'm willing to submit a fix PR here, but the question I have is whether this should be done in the existing @backstage/plugin-auth-backend-module-oidc-provider, and whether an optional config option should be added to determine whether the nonce should be passed into the openid-client.
🖥 Your Environment
OS:   Linux 6.2.0-1019-azure - linux/x64
node: v18.19.0
yarn: 1.22.19
cli:  0.25.2 (installed)
backstage:  1.23.4

Dependencies:
  @backstage/app-defaults                                          1.5.0
  @backstage/backend-app-api                                       0.5.14
  @backstage/backend-common                                        0.21.3
  @backstage/backend-dev-utils                                     0.1.4
  @backstage/backend-openapi-utils                                 0.1.6
  @backstage/backend-plugin-api                                    0.6.13
  @backstage/backend-tasks                                         0.5.18
  @backstage/catalog-client                                        1.6.0
  @backstage/catalog-model                                         1.4.4
  @backstage/cli-common                                            0.1.13
  @backstage/cli-node                                              0.2.3
  @backstage/cli                                                   0.25.2
  @backstage/config-loader                                         1.6.2
  @backstage/config                                                1.1.1
  @backstage/core-app-api                                          1.12.0
  @backstage/core-compat-api                                       0.2.0
  @backstage/core-components                                       0.14.0
  @backstage/core-plugin-api                                       1.9.0
  @backstage/dev-utils                                             1.0.27
  @backstage/e2e-test-utils                                        0.1.1
  @backstage/errors                                                1.2.3
  @backstage/eslint-plugin                                         0.1.5
  @backstage/frontend-plugin-api                                   0.6.0
  @backstage/integration-aws-node                                  0.1.9
  @backstage/integration-react                                     1.1.24
  @backstage/integration                                           1.9.0
  @backstage/plugin-api-docs                                       0.11.0
  @backstage/plugin-app-backend                                    0.3.61
  @backstage/plugin-app-node                                       0.1.13
  @backstage/plugin-auth-backend-module-atlassian-provider         0.1.5
  @backstage/plugin-auth-backend-module-aws-alb-provider           0.1.4
  @backstage/plugin-auth-backend-module-gcp-iap-provider           0.2.8
  @backstage/plugin-auth-backend-module-github-provider            0.1.10
  @backstage/plugin-auth-backend-module-gitlab-provider            0.1.10
  @backstage/plugin-auth-backend-module-google-provider            0.1.10
  @backstage/plugin-auth-backend-module-microsoft-provider         0.1.8
  @backstage/plugin-auth-backend-module-oauth2-provider            0.1.10
  @backstage/plugin-auth-backend-module-oauth2-proxy-provider      0.1.6
  @backstage/plugin-auth-backend-module-oidc-provider              0.1.3
  @backstage/plugin-auth-backend-module-okta-provider              0.0.6
  @backstage/plugin-auth-backend                                   0.21.3
  @backstage/plugin-auth-node                                      0.4.8
  @backstage/plugin-azure-devops-backend                           0.5.5
  @backstage/plugin-azure-devops-common                            0.3.2
  @backstage/plugin-azure-devops                                   0.3.12
  @backstage/plugin-catalog-backend-module-github                  0.5.3
  @backstage/plugin-catalog-backend-module-scaffolder-entity-model 0.1.10
  @backstage/plugin-catalog-backend                                1.17.3
  @backstage/plugin-catalog-common                                 1.0.21
  @backstage/plugin-catalog-graph                                  0.4.0
  @backstage/plugin-catalog-import                                 0.10.6
  @backstage/plugin-catalog-node                                   1.7.3
  @backstage/plugin-catalog-react                                  1.10.0
  @backstage/plugin-catalog                                        1.17.0
  @backstage/plugin-cost-insights-common                           0.1.2
  @backstage/plugin-cost-insights                                  0.12.19
  @backstage/plugin-events-node                                    0.2.22
  @backstage/plugin-explore-common                                 0.0.2
  @backstage/plugin-explore-react                                  0.0.36
  @backstage/plugin-explore                                        0.4.16
  @backstage/plugin-github-actions                                 0.6.11
  @backstage/plugin-graphiql                                       0.3.3
  @backstage/plugin-org                                            0.6.20
  @backstage/plugin-permission-common                              0.7.12
  @backstage/plugin-permission-node                                0.7.24
  @backstage/plugin-permission-react                               0.4.20
  @backstage/plugin-proxy-backend                                  0.4.11
  @backstage/plugin-scaffolder-backend-module-azure                0.1.5
  @backstage/plugin-scaffolder-backend-module-bitbucket-cloud      0.1.3
  @backstage/plugin-scaffolder-backend-module-bitbucket-server     0.1.3
  @backstage/plugin-scaffolder-backend-module-bitbucket            0.2.3
  @backstage/plugin-scaffolder-backend-module-gerrit               0.1.5
  @backstage/plugin-scaffolder-backend-module-gitea                0.1.3
  @backstage/plugin-scaffolder-backend-module-github               0.2.3
  @backstage/plugin-scaffolder-backend-module-gitlab               0.2.16
  @backstage/plugin-scaffolder-backend                             1.21.3
  @backstage/plugin-scaffolder-common                              1.5.0
  @backstage/plugin-scaffolder-node                                0.3.3
  @backstage/plugin-scaffolder-react                               1.8.0
  @backstage/plugin-scaffolder                                     1.18.0
  @backstage/plugin-search-backend-module-catalog                  0.1.17
  @backstage/plugin-search-backend-module-pg                       0.5.22
  @backstage/plugin-search-backend-module-techdocs                 0.1.17
  @backstage/plugin-search-backend-node                            1.2.17
  @backstage/plugin-search-backend                                 1.5.3
  @backstage/plugin-search-common                                  1.2.10
  @backstage/plugin-search-react                                   1.7.6
  @backstage/plugin-search                                         1.4.6
  @backstage/plugin-shortcuts                                      0.3.19
  @backstage/plugin-sonarqube-backend                              0.2.15
  @backstage/plugin-sonarqube-react                                0.1.13
  @backstage/plugin-sonarqube                                      0.7.12
  @backstage/plugin-tech-radar                                     0.6.13
  @backstage/plugin-techdocs-backend                               1.9.6
  @backstage/plugin-techdocs-node                                  1.11.5
  @backstage/plugin-techdocs-react                                 1.1.16
  @backstage/plugin-techdocs                                       1.10.0
  @backstage/plugin-user-settings                                  0.8.1
  @backstage/release-manifests                                     0.0.11
  @backstage/repo-tools                                            0.6.3
  @backstage/test-utils                                            1.5.0
  @backstage/theme                                                 0.5.1
  @backstage/types                                                 1.1.1
  @backstage/version-bridge                                        1.0.7

👀 Have you spent some time to check if this bug has been raised before?

[X] I checked and didn't find similar issue

🏢 Have you read the Code of Conduct?

[X] I have read the Code of Conduct

Are you willing to submit PR?
Yes I am willing to submit a PR!

Having the exact same Issue with cognito as the oidc provider

Hmm, my first though here is that we already have a nonce check via OAuth state + cookie, and that this additional check might be redundant? Or does this nonce have a completely different purpose?
On that topic: that nonce in the error message is huge for what it is O_o, is it really a nonce or does it serve some other function?

This nonce check is part of the OIDC Spec, which states:

If present in the ID Token, Clients MUST verify that the nonce Claim Value is equal to the value of the nonce parameter sent in the Authentication Request. If present in the Authentication Request, Authorization Servers MUST include a nonce Claim in the ID Token with the Claim Value being the nonce value sent in the Authentication Request

As the nonce isn't being explicitly set as part of the openid-client options, and AWS Cognito is (albeit strangely, and as you pointed out, with a very long string) injecting their own nonce if one is not provided, this creates a Catch 22 where both are technically in the spec, although authentication can never be successful.
I have a fix functioning in my Backstage instance, with a custom auth provider (that only adds a generated nonce to the options object in the OauthAuthenticator.start).  As the nonce check via the ID Token is recommended in the OIDC spec (and required if using the Implicit flow), IMO it makes sense to add it here.

@Rugvip knows these things better than I, but it sounds to me that this is a worthwhile contribution. Possibly even without a config flag to disable it - maybe that's for the PR review to decide. I'm also not entirely sure why it's the case that we don't set a nonce in the first place?

Indeed! Would appreciate a PR with a fix, sounds like that's what we need 👍


Something about the update in stripe-ruby from 1.41.0 to 1.42.0 breaks Subscription deletion in the test environment

This is a list of all the changes in stripe-ruby from 1.41.0 to 1.42.0
This is my model code to delete a Subscription in Stripe:
def remove_from_stripe
  stripe_customer     = Stripe::Customer.retrieve(account.stripe_customer_id)
  stripe_subscription = stripe_customer.subscriptions.retrieve(stripe_subscription_id)
  stripe_subscription.delete
rescue => error
  Rollbar.error(error, "Error while removing subscription from Stripe: #{error.message}")
  return { errors: ["Error while removing subscription from Stripe: #{error.message}"] }
end

This is my model rspec test:
describe 'interaction with stripe' do
  let(:subscription)  { create(:subscription) }
  let(:stripe_helper) { StripeMock.create_test_helper }
  before              { StripeMock.start }
  after               { StripeMock.stop }

  it 'responds to remove_from_stripe correctly' do
    stripe_plan     = stripe_helper.create_plan(amount: 0)
    stripe_customer = Stripe::Customer.create(email<EMAIL_ADDRESS>card: stripe_helper.generate_card_token)
    account         = create(:account, stripe_customer_id: stripe_customer.id)
    plan            = create(:plan, stripe_plan_id: stripe_plan.id)
    subscription    = build(:subscription, account: account, plan: plan, stripe_subscription_id: nil)
    subscription_id = subscription.create_in_stripe(subscription.plan_stripe_plan_id)
    subscription.update_attribute(:stripe_subscription_id, subscription_id)
    subscription.reload
    expect(subscription.remove_from_stripe.id).to eq('test_su_4')
  end
end

I'm using stripe-ruby-mock version 2.2.3, and the above test succeeds with stripe version 1.41.0 & fails with stripe version 1.42.0
The failure is:

Subscription interaction with stripe responds to remove_from_stripe correctly
Failure/Error: expect(subscription.remove_from_stripe.id).to eq('test_su_4')
NoMethodError:
undefined method `id' for "#Stripe::Subscription:0x9ye4h27j20b1 JSON: {\n}".  HINT: The 'id' attribute was set in the past, however.  It was then wiped when refreshing the object with the result returned by Stripe's API, probably as a result of a save().  The attributes currently available on this object are:

I'm seeing that the response to my stripe_subscription.delete call is empty:
#<Stripe::Subscription:0x3ff642a08bec> JSON: {
}

This issue does not occur outside of the test environment. I have stripe-ruby-mock installed to only the test environment like:
group :test do
  gem 'stripe-ruby-mock'
end

So from what I can tell, the issue is with stripe-ruby-mock as opposed to stripe itself.
I haven't been able to figure out what the issue is, yet. Can anyone else spot it?

2.2.4 has been released just now. Here stripe dependency locked to ['>= 1.31.0', '< 1.42']

soon we will cover updates from 1.42.0.

@alexmamonchik glad to hear that 1.42.0 will be supported soon! Is there a separate issue for that, or should I subscribe to this issue to find out when it drops?

@chadoh please, create a new issue for that.


New option to disable continuous listening

I've added the new option to enable users to control the API. Using a new option property, users can enable/disable the continuous listening of the API. I kept the default configs to be continuous and made the necessary modifications that will add the feature.

Hello James, It seems like my first PR didn't go well, although it adds a trivial feature :cry:
My apologies I haven't done the requested changes, I didn't get any notifications by github, so I was just passing by my repos and found out all this mess :man_facepalming:

Hello James, It seems like my first PR didn't go well, although it adds a trivial feature 😢
My apologies I haven't done the requested changes, I didn't get any notifications by github, so I was just passing by my repos and found out all this mess 🤦♂

It's okay, don't worry - PRs rarely get approved first time. I'm sure we can work this into a nice addition to the module. 🙂 I tested it manually (I've not got round to mocking the Web Speech API in automated tests - this might be a fun challenge) and it worked as expected with and without options.
I'm trying to imagine the use case for discontinuous listening. In my mind, it would be for an interface where the user needed to press a button to issue a voice command. Every time they pressed the button, the previous command would be erased.
In that particular use case, there are two improvements you could make:

It would be nice if the transcript was reset every time the Start button was pressed. This can easily be done by the module consumer by calling resetTranscript() before startListening(). However, we could save them the trouble by resetting it automatically when starting a new discontinuous listen. i.e. before starting up the speech recognition on line 112, you could do something like:

            if (!recognition.continuous) {
              this.resetTranscript();
            }

The module consumer should know when the user has stopped issuing their command. Ideally, this should be represented by the listening boolean prop. When they stop speaking on a discontinuous listen, this should change to false. Currently, it doesn't do that - we just need to make sure listening gets updated on discontinuous disconnects. So onRecognitionDisconnect could be changed to:

      onRecognitionDisconnect() {
        listening = false;
        if (pauseAfterDisconnect) {
          this.setState({ listening });
        } else if (recognition) {
          if (recognition.continuous) {
            this.startListening();
          } else {
            this.setState({ listening });
          }
        }
        pauseAfterDisconnect = false;
      }

If you did something like this, you should update the startListening documentation to state that it behaves differently when the continuous option is set to false.
If the voice command button was the use case you had in mind, it'd be good to suggest it in your docs for the continuous option. Alternatively, you could create a new section in the README for "Suggested use cases", explaining how to use react-speech-recognition for each one. The default settings perhaps combined with the autoStart option set to false and buttons for starting/stopping dictation could be used for a note-taking use case. Your continuous option plus the listening prop could be used for a voice command/search kind of feature. Just an idea.
Could you clarify the use case you had in mind?

Yes exactly James, this is the use case I wanted to cover.
Recently, I was working on a chatbot that could take user input either by text or speech. And I found this very handy HOC you made to encapsulate the Web Speech API's. So for the chatbot use case, the user doesn't expect the bot is continuously listening to him, obviously because the chat is a two way communication, instead I had to provide a button/trigger to initiate the listening.
I didn't think about other use cases actually, but that was it for me, and I think it's pretty useful to expose ( if there is any other ) Web Speech API features to developers, so they stop being concerned about the module implementations, or if it's missing anything from Web Speech API.

Is it missing something yet ? I guess now it needs you to manually merge the pr, I believe my last commits covered your requested modifications, right ?

Is it missing something yet ? I guess now it needs you to manually merge the pr, I believe my last commits covered your requested modifications, right ?

Ah sorry, Omar - I didn't notice you had committed new changes. I've made a note to review more thoroughly within the next day or two.

@omarbakeer I've made two minor comments. Once they are addressed, I'll merge and publish this.

@omarbakeer I've made two minor comments. Once they are addressed, I'll merge and publish this.

I've covered those comments. I hope you understand that this is my first contribution ever :astonished: , and sorry if I messed it up or forgot about anything, actually I would like to thank you giving me this opportunity to collaborate :smiley: :fireworks: :confetti_ball:

@omarbakeer I've made two minor comments. Once they are addressed, I'll merge and publish this.

I've covered those comments. I hope you understand that this is my first contribution ever 😲 , and sorry if I messed it up or forgot about anything, actually I would like to thank you giving me this opportunity to collaborate 😃 🎆 🎊

Congratulations Omar, your first GitHub contribution is live on npm as version 1.1.0! It's a useful feature - thanks for adding it. 👍


test: checkpoint "build" stage too during test_stages.py

Quick check to see if checkpointing "build" helps with the runtime. Note that the cache size is already 20GB, I doubled it for good measure but we probably can go back to 20, just want to make sure this is not the bottleneck.
Closes: https://github.com/osbuild/osbuild/issues/1874

This now ran twice, both times it took ~34min which is a nice speedup compared to the previous 44min (for "Tests / Unittest (parallel, py39)" but it's similar for all python versions). The second run also increased the max cache size to 40GB but that did not had any effect so I reverted it again. I think this is ready to go!


ADBDEV-3884: Fix planning failure on modifying CTE with gp_cte_sharing enabled.

The problem was reproduced when the Material node had a ModifyTable node as its
child. In this case, Material received empty target list because the ModifyTable
node don't set its own target list at that stage.
If the child node is a ModifyTable, then the target list is set to the first
returning list during Material node creation.

On 7X problem was solved by another way, but resulting plan is same!

I checked on 7X a different plan is generated and execution fails.

6X with patch
postgres=# explain verbose with cte1 as (insert into t1 values (1,2) returning *) select * from cte1 a join cte1 b using(c1);
                                                            QUERY PLAN
----------------------------------------------------------------------------------------------------------------------------------
 Gather Motion 3:1  (slice4; segments: 3)  (cost=0.05..0.13 rows=4 width=440)
   Output: share0_ref2.c1, share0_ref2.c2, b.c2
   ->  Hash Join  (cost=0.05..0.13 rows=2 width=440)
         Output: share0_ref2.c1, share0_ref2.c2, b.c2
         Hash Cond: (share0_ref2.c1 = b.c1)
         ->  Redistribute Motion 3:3  (slice1; segments: 3)  (cost=0.00..0.04 rows=1 width=222)
               Output: share0_ref2.c1, share0_ref2.c2
               Hash Key: share0_ref2.c1
               ->  Shared Scan (share slice:id 1:0)  (cost=0.01..0.22 rows=1 width=0)
                     Output: share0_ref2.c1, share0_ref2.c2
         ->  Hash  (cost=0.04..0.04 rows=1 width=222)
               Output: b.c2, b.c1
               ->  Redistribute Motion 3:3  (slice3; segments: 3)  (cost=0.00..0.04 rows=1 width=222)
                     Output: b.c2, b.c1
                     Hash Key: b.c1
                     ->  Subquery Scan on b  (cost=0.01..0.23 rows=1 width=0)
                           Output: b.c2, b.c1
                           ->  Shared Scan (share slice:id 3:0)  (cost=0.01..0.22 rows=1 width=0)
                                 Output: share0_ref1.c1, share0_ref1.c2
                                 ->  Materialize  (cost=0.00..0.01 rows=1 width=0)
                                       Output: c1, c2
                                       ->  Insert on public.t1  (cost=0.00..0.01 rows=1 width=0)
                                             Output: c1, c2
                                             ->  Redistribute Motion 1:3  (slice2; segments: 1)  (cost=0.00..0.01 rows=1 width=0)
                                                   Output: 1, '2'::character varying(100)
                                                   ->  Result  (cost=0.00..0.01 rows=1 width=0)
                                                         Output: 1, '2'::character varying(100)
 Optimizer: Postgres query optimizer
 Settings: gp_cte_sharing=on

7X
postgres=# explain verbose with cte1 as (insert into t1 values (1,2) returning *) select * from cte1 a join cte1 b using(c1);
                                                          QUERY PLAN
------------------------------------------------------------------------------------------------------------------------------
 Gather Motion 3:1  (slice1; segments: 3)  (cost=0.16..0.34 rows=3 width=440)
   Output: a.c1, a.c2, b.c2
   ->  Hash Join  (cost=0.16..0.30 rows=1 width=440)
         Output: a.c1, a.c2, b.c2
         Hash Cond: (a.c1 = b.c1)
         ->  Redistribute Motion 3:3  (slice2; segments: 3)  (cost=0.00..0.12 rows=3 width=222)
               Output: a.c1, a.c2
               Hash Key: a.c1
               ->  Subquery Scan on a  (cost=0.00..0.06 rows=3 width=222)
                     Output: a.c1, a.c2
                     ->  Shared Scan (share slice:id 2:0)  (cost=0.03..0.23 rows=1 width=222)
         ->  Hash  (cost=0.12..0.12 rows=3 width=222)
               Output: b.c2, b.c1
               ->  Redistribute Motion 3:3  (slice3; segments: 3)  (cost=0.00..0.12 rows=3 width=222)
                     Output: b.c2, b.c1
                     Hash Key: b.c1
                     ->  Subquery Scan on b  (cost=0.00..0.06 rows=3 width=222)
                           Output: b.c2, b.c1
                           ->  Shared Scan (share slice:id 3:0)  (cost=0.03..0.23 rows=1 width=222)
                                 ->  Insert on public.t1  (cost=0.00..0.03 rows=1 width=222)
                                       Output: t1.c1, t1.c2
                                       ->  Redistribute Motion 1:3  (slice4; segments: 1)  (cost=0.00..0.03 rows=1 width=222)
                                             Output: 1, '2'::character varying(100)
                                             ->  Result  (cost=0.00..0.01 rows=1 width=222)
                                                   Output: 1, '2'::character varying(100)
 Optimizer: Postgres query optimizer
 Settings: gp_cte_sharing = 'on'

As you can see, the Materialise node has disappeared in 7X. most likely that's why the planning does not fall. but SharedScan nodes still don't have output. therefore, the execution of the plan still fails.

OK, how about suggested changes?

It is proposed to take the first returningList from returningLists in make_modifytable as it was before https://github.com/arenadata/gpdb/commit/9fa82c980935ef4aee18fabe8da20ae2198b052a ?

might it be worth revert 9fa82c9 completely, leaving only the tests?

the Materialise node has disappeared in 7X

SharedScan nodes still don't have output. therefore, the execution of the plan still fails

Yes, you are right, there is a problem on 7x too.

Allure report https://allure-ee.adsw.io/launch/52635

@KnightMurloc  At version
select version ();
PostgreSQL 9.4.26 (Greenplum Database 6.25.1+dev.573.geb8f68895e build dev) on x86_64-unknown-linux-gnu, compiled by x86_64-alt-linux-gcc (GCC) 10.3.1 20210703 (ALT Sisyphus 10.3.1-alt2), 64-bit compiled on Aug 28 2023 13:00:55 (with ass
ert checking)
(1 row)

everything works fine:
set gp_cte_sharing to on;
--start_ignore
drop table if exists t1;
--end_ignore
create table t1 (c1 int,c2 int) distributed randomly;
explain (costs off)
with cte1 as (
  insert into t1 values (1,2) returning *
) select * from cte1 a join cte1 b using(c1);
                                          QUERY PLAN
------------------------------------------------------------------------------------------------
 Gather Motion 3:1  (slice4; segments: 3)
   ->  Hash Join
         Hash Cond: (share0_ref2.c1 = b.c1)
         ->  Redistribute Motion 3:3  (slice1; segments: 3)
               Hash Key: share0_ref2.c1
               ->  Shared Scan (share slice:id 1:0)
         ->  Hash
               ->  Redistribute Motion 3:3  (slice3; segments: 3)
                     Hash Key: b.c1
                     ->  Subquery Scan on b
                           ->  Shared Scan (share slice:id 3:0)
                                 ->  Materialize
                                       ->  Insert on t1
                                             ->  Redistribute Motion 1:3  (slice2; segments: 1)
                                                   ->  Result
 Optimizer: Postgres query optimizer
(16 rows)

with cte1 as (
  insert into t1 values (1,2) returning *
) select * from cte1 a join cte1 b using(c1);
 c1 | c2 | c2
----+----+----
  1 |  2 |  2
(1 row)

select * from t1;
 c1 | c2
----+----
  1 |  2
(1 row)

Why it works correctly?

yes the execution should also work. do I need to add a test case for it?

yes the execution should also work. do I need to add a test case for it?

Yes, you should add it, please. Because the query is executed correctly and we can show it.

should I leave the explain test too, or should I only do the execution test?

should I leave the explain test too, or should I only do the execution test?

Explain should be there as well.

Allure report https://allure-ee.adsw.io/launch/53053

Allure report https://allure-ee.adsw.io/launch/53102

@KnightMurloc , @RekGRpth What about forming targetList only for the case of plan sharing? Something like that. At least there won't be targetList creation every time ModifyTable node is created.

can there be a situation when we have Material above Modify Table but without SharedScan?

i think it's more safe solution in term of side effects but i don't know how good idea fix only specific case.

What about forming targetList only for the case of plan sharing? Something like that. At least there won't be targetList creation every time ModifyTable node is created. And there won't be partial revert of legacy patch.

Yes, I also like this idea.

OK. let's use this solution.

can there be a situation when we have Material above Modify Table but without SharedScan?

We should change the solution only if there is no any other similar situation

can there be a situation when we have Material above Modify Table but without SharedScan?

We should change the solution only if there is no any other similar situation. So, if we proof that, we may consider only current specific case.

The original problem was in non-select CTE sharing and you solution fixes it.

as I understood, in addition to Sharedscan, Material only used by joins, and in this case there will be another Subquery Scan node between Material and Modify Table, and in this case the problem is not reproduced.

Allure report https://allure-ee.adsw.io/launch/53263

Allure report https://allure-ee.adsw.io/launch/53298

@KnightMurloc, Rewrite the PR and commit description in accordance with current changes please. Also extend the description of the problematic behaviour.

@KnightMurloc , Does the patch work correctly when CTE is update on a table which has inherited tables? Why is it correct to get the first element of mt->returningLists as targetlist when mt->returningLists has more then one element?

several returningLists appear in case of update or delete on the parent table, then returningLists contains, in addition to the returningList of parent table, also a returningList of child tables, so it makes sense to take the first returningList.

Allure report https://allure-ee.adsw.io/launch/54031

Allure report https://allure-ee.adsw.io/launch/54099

Allure report https://allure-ee.adsw.io/launch/54110

What about patching make_material instead of prepare_plan_for_sharing?
diff --git a/src/backend/optimizer/plan/createplan.c b/src/backend/optimizer/plan/createplan.c
index 986b27889b..fe03c8df7c 100644
--- a/src/backend/optimizer/plan/createplan.c
+++ b/src/backend/optimizer/plan/createplan.c
@@ -5751,7 +5751,15 @@ make_material(Plan *lefttree)
        Plan       *plan = &node->plan;

        /* cost should be inserted by caller */
-       plan->targetlist = lefttree->targetlist;
+       if (lefttree->targetlist != NIL)
+               plan->targetlist = lefttree->targetlist;
+       else if (IsA(lefttree, ModifyTable))
+       {
+               ModifyTable *mt = (ModifyTable *)lefttree;
+               Assert(mt->returningLists);
+               plan->targetlist = copyObject(linitial(mt->returningLists));
+       }
+
        plan->qual = NIL;
        plan->lefttree = lefttree;
        plan->righttree = NULL;

What will be the final commit message?

Allure report https://allure-ee.adsw.io/launch/54267

@KnightMurloc Please, rewrite the patch discription, add more info about the problem and motivation behind the final solution. And about solution itself.

The problem was reproduced when

Description should briefly but succinctly tell what the problem was about, the context of the issue. You can start it like: "When the planner was preparing shared scan over CTE, that contained modifying operation, the Materialize node did not retrieved the target list from ModifyTable node. That led to the ...."

target list at that stage

What stage is meant exactly? The description should allow the reviewer to recognize the issue at first glance.

because Materialize node has its own processing in set_plan_refs.

Write more about the causes why it's safe to take the returning list before it processing in set_plan_ref. How set_plan_refs influences the tlists and ensure the reviewer that current changes are safe.


Cant remove forestry recipes properly

When i try to remove for example all carpenter recipes for humus (there are 2 recipes - one regular and one from crated humus) with mods.forestry.Carpenter.removeRecipe(<Forestry:soil>) it will remove only one recipe at random. Whenever I reload the scripts, it will return the removed recipe and will remove the second one.

Found a workaround: I need to have 2times the same line to remove both recipes.

remove it twice if you have two recipes.
mods.forestry.Carpenter.removeRecipe(Forestry:soil);
mods.forestry.Carpenter.removeRecipe(Forestry:soil);

@JasonMcRay
I see you make Gt Recipes for your pack too. I make addon mod for minetweaker adding fluid support and missing gt 5 machnines. http://forum.industrial-craft.net/index.php?page=Thread&threadID=11353

Nette Werbung @Dream-Master ;) @JasonMcRay a new build was just built, please test it with that. Otherwise @Voidi shall take a look at it.

@Yulife Kann es auch löschen wenn es euch stört.
Wäre übrigens sehr schön wenn eure aktuellen Builds verfügbar währen auch ohne Passwort.

Ne ne, ist ok :) Ist ja im Endeffekt zur Hilfe der Anderen.
Jared muss das machen. @jaredlll08 open up the Modtweaker2 jenkins!

@Yulife
Danke

Kein Problem. Außerdem gute Arbeit bei dem GT6 addon :+1: !!

@Yulife Danke. Bin noch am Anfang mit meinen Java Kenntnissen. Werden aber immer mehr ;-)

From now on, whenever I see german or any other language besides english, I am automatically closing the issue...

 If @Dream-Master is more comfortable in German and I speak it too, he is allowed to use it. @Dream-Master Try to put a translation into English under your German text though.

 GG, the probldm is, i have no idea what you guys
are talking about... So yea...
On Monday, April 13, 2015, Martin<EMAIL_ADDRESS>wrote:

;-)
—
Reply to this email directly or view it on GitHub
https://github.com/jaredlll08/ModTweaker2/issues/103#issuecomment-92508851
.

I am congratulating him for successing a Minetweaker addon. lol

Fixed in #153


Please drop OTA and add AEAD

Deprecate OTA (One-Time-Auth).
Add new ciphers for SIP004: aes-128-gcm, aes-192-gcm, aes-256-gcm, chacha20-poly1305 and chacha20-ietf-poly1305.

Deprecate stream ciphers with insufficient IV length

@JimLee1996 aead is abandoned?

@JimLee1996 there get 2 new designed reconstruction version on this repo, and the release will be soon

Gocha! Thank you.

What's time it will be release ?  I can't wait anymore. Thx!

testing branch will release before Apr.

On 23 Mar 2018, at 12:44 PM, larryhu<EMAIL_ADDRESS>wrote:
What's time it will be release ? I can't wait anymore. Thx!
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub https://github.com/shadowsocks/shadowsocks-go/issues/267#issuecomment-375543534, or mute the thread https://github.com/notifications/unsubscribe-auth/AKnjrtmbQ5HCdmKnIalBWJmz6hWcRapiks5thH2UgaJpZM4SH17_.


Selectively enable change from PR 28 for net45 compilation, reverting for netstandard1.6 compilation

Due to netstandard1.6 Type API changes, needed to restrict changes from PR #28 to only be compiled for the net45 target, using the code previous to that PR for compilation for netstandard1.6.

does this mean then that the wire format will be different on .NET Standard vs .NET 4.5?

Closing as there is the potential to make wire format inconsistent between netstandard1.6 and net45 clients.


add bottom tool bar support

tool bar need to have below options

toggle inline help with dropped down list
info on current kubeconfig context used, namespace
vi/emacs mode
exit

refer to saws/aws-shell for bottom toolbar reference

Would be great to have a hokey to quickly switch clusters, users and namespaces

Thanks @fhemberger for the feedback. makes lot of sense. AFAIK, python prompt kit toolbar can not have drop down/up many so we will have to use function keys to toggle between the clusters/users/namespace. we will incorporate the feedback in best way possible.


typo: Double word "file"

@SnehaGunda @divyaswarnkar Can you please review the changes that @nschonni made and sign off? He fixed some typos that duplicate the word "file". Thanks!

#sign-off

@SnehaGunda: I'm sorry - only the author of this article, @divyaswarnkar, can sign off on your changes. But we do have an exception process - if you are on the Microsoft content or product team for this product area, you can ask the PR review team to review and merge it by sending mail to the techdocprs alias.

@v-shils can you please merge.


[RFC] Use lowecase on config nodes

Using lower-case on config tree nodes is easier to type during navigation (e.g. cd /ceph_cluster/minions), and consistent with other tools like targetcli and gwcli.
Signed-off-by: Ricardo Marques<EMAIL_ADDRESS>

:100:  as long as the CI passes


Textcomponent Fix and commands

Description

Fix Style click_event and hover_event
Add RGB support to Textcomponent
Add me and seed command

Testing

Checklist
Things need to be done before this Pull Request can be merged.

[x] Code is well-formatted and adheres to project style guidelines: cargo fmt
[x] Code does not produce any clippy warnings cargo clippy

Please split the RGB Support and the new Command into 3 different PRs. I prefer to have a new PR for every new Command which is added

Will do that


Allow cross compiling Windows projects with MinGW

If the -mingw flag is set when compiling the windows target from another host OS, it will now use MinGW instead of neko.

@player-03 Thanks for merging! As we discussed in #1610, we will also have to clean up the logic for deciding which target to use for a cross compilation build (and make sure everything works properly in non xml projects).

@ahmutkadim This PR was merged into the 8.2.0-Dev branch. Lime 8.2 won't be released until some point after that branch has been merged into the develop branch. It's coming soon-ish, I think, but it'll still be a bit of time while we work to stabilize that release.


Remove ClusterPermission: Check namespace before creating it for managed operators

/kind feature
ODLM can manage any operator in any namespace.
In one namespace mode, the dedicated namespace already exists, so we can enhance to check if check the manged operator is deployed in the same namespace as the ODLM. If it is, then skip the check.
Describe the solution you'd like
[A clear and concise description of what you want to happen.]
Anything else you would like to add:
[Miscellaneous information that will assist in solving the issue.]

WATCH_NAMESPACE will be a comma separated string, such as namespace1,namespace2,namespace3.

if WATCH_NAMESPACE is blank string(“”), the ODLM is in all namespace mode, so create the managed operator namespace
if the managed operator namespace is in WATCH_NAMESPACE, skip creating
if the managed operator namespace is not in WATCH_NAMESPACE, throw no permission or error configuration message


Update CSS to version 6, update ESLint configs and add Node 18 to CI

The main goal here was to bump the Community Solid Server dependency to version 6, because it was stuck on 5 and 6 has been out for a while now. The latest version of the CSS also allows .meta files with FixedContentTypeMapper, which makes it possible to add triples to containers themselves for benchmarking purposes. I have adjusted the server configuration in templates to work with the new CSS version.
The other changes in this PR that I wanted to have feedback on (making it a draft) are the following:

Updating @rubensworks/eslint-config to version 2, and removing the dependencies from here that are provided by that package already. Three rules had to be disabled in .eslintrc.js after this, but otherwise it seemed to just work.
Setting rimraf to use an actual version rather than latest, because the tag was causing some warnings about unpack paths and something being skipped with Yarn version 1.
Adding Node 18.x to the CI
Adding --ignore-engines to avoid 'package not compatible with Node version' errors
Adding --frozen-lockfile to make sure the CI installs exactly what is in the lockfile.

Any feedback is welcome. I can also remove changes if some of them seem dubious. :slightly_smiling_face:

Yes, the server works still. I ran the generate and serve commands locally after the changes and both worked. Generating the validation things did not work, but it also did not work before the changes (it produces a JSON-like error about something query-related).
Thank you for the feedback!

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

1 of 1 (100.0%)  changed or added relevant line in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 100.0%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
116

Relevant Lines:
116

💛  - Coveralls

Is it enough to change the Node version requirement in readme to 15? According to the MDN, replaceAll has been in Node since version 15.

I have changed the Node requirement to 16. Are there any other things that should preferably be changed before merging?

I think Node was it indeed! Is this PR ready for another review? (you can click re-request review on top of this page)

Thanks @surilindur! Do you need a new release of this?

Yes, but not immediately. If there will be a new release at some point within the next month or two that should be enough. It will take me a while to get the code ready for benchmarking.

Ok, just ping me as soon as you need it. (unlikely that a new release will show up otherwise)


add sparknet demo file

Note that this is copy of demo-staging.ts file with difference of endpoint changing to wss://sparknet.cord.network and account changing to something unique.


update readme

Just some very minor changes that could use some house keeping :)

Use .svg for travis-ci badge (scales well with @x2 displays)
Better syntax highlighting in readme.md

Thank you Søren, commited in 615bafdbdd226ad6ffbf2642c4f729845e287f2d


Star Trek Armada no backgrounds with Intel integrated graphics Windows 11

Hate to pile onto the "Armada doesn't work" wagon, but I'm getting the same problem as described in https://github.com/elishacloud/dxwrapper/issues/28#issue-339708355 wherein the backgrounds during the missions aren't loading.
I'm using the fix as described in https://github.com/elishacloud/dxwrapper/wiki/Star-Trek-Armada-1, and I've tried with the assets in the zip file linked from the wiki page. I have also tried using the updated ddraw.dll and dxwrapper.dll from the latest (1.0.6542.21) release with the dxwrapper.ini settings from the wiki zip.
Everything opens and runs decently (a few hiccups here and there between the opening cutscene, menus, and mission start, but nothing affecting gameplay). The only issue is the black layer blocking all background textures in both the main screen and the mini map. Ships, planets, etc. still draw, but no grids.
1.2 retail CD release, patched to 1.3
Intel Iris Xe Graphics <IP_ADDRESS>4 (also attempted with earlier graphics driver to no avail)
Windows 11 Pro
No compatibility settings enabled
Let me know if you need anything else for diagnosis, and thank you for all your hard work!

Ok, try with the following update.  Unzip this into the Armada folder, overwriting any existing files:  dxwrapper.zip

Stumbled on this issue.  Having the same problem.  Still on Windows 10.  No luck with the above (attached) version.
For reference, a workaround is to configure 'shroud off' in the game creation settings (although this does not help with single player story mode).

Habe leider auch noch keine lösung gefunden ;(

This might have to do with D3D9On12.  A lot of Intel systems are using that.  I need to check on this later.

I tested this and it is an issue with D3D9On12.  However, I just posted an update patch that should address this issue.  You can see the update here:  Star Trek Armada 1 patch

Hey, thanks!  I'll give this a try and report back :-D

Darn, no dice.  (Thanks for trying though!)
Here's the log:
dxwrapper-armada.log

If it's an issue with D3D9On12, then I feel like it should be reported there.
In the meantime, idk if Intel hasn't added a mechanism to switch back between that and their original/native/old trinity d3d9 codepath, but worst case scenario I suppose you could just use dxvk.
p.s. a number was missed in the "patch updated" date

Hi @mirh ,
Thanks...it's been about 10 years since I've done any DirectX programming so I wasn't aware of a bunch of the recent developments you mentioned (D3d9On12 and DxVK).  I did some quick Googling/reading about these things and I think I understand what might be going on.  Thanks!  I'll do some tinkering!

I found out the reason that the backgrounds are missing during the missions.  This game uses a rare render state type D3DRENDERSTATE_COLORKEYENABLE which is not implemented by some Intel video cards.

@Squall-Leonhart was it ever eventually possible to switch between igd9trinity and d3d9on12?

intel handles it all transparently and doesn't expose any controls for it.

Ok, try with this update.  I have implemented the menu using GDI and the actual game play using Direct3D9.  I added a shader for D3DRENDERSTATE_COLORKEYENABLE support.
Here is the new update: dxwrapper.zip

It works!!!!
Wow, that was an unexpected surprise!

Great!  Thanks for the confirmation.

what intel cpu do you have accwebs, there shouldn't have been any issues with the pre-Xe/XeMax/Arc/7x0 gpus in the DCH driver, and if you have one of these but still using the DCH driver then it was your issue all along.

From the dxwrapper log file here is what the graphics card is reading as:
8904 20:06:42.521 Intel(R) UHD Graphics

BTW: here are two more good discussions on color keying.  Though they are related to Nvidia it is still good info.
https://github.com/narzoul/DDrawCompat/issues/116#issuecomment-946084312
https://github.com/narzoul/DDrawCompat/issues/241#issuecomment-1671964348

what intel cpu do you have accwebs, there shouldn't have been any issues with the pre-Xe/XeMax/Arc/7x0 gpus in the DCH driver, and if you have one of these but still using the DCH driver then it was your issue all along.

11th Gen Intel Core i9-11900H.  It's a laptop in case that matters (idk if Intel is still doing their 'mobile vs desktop edition' thing they used to do without giving the processors a unique product number despite the difference).

The IGP in the Tigerlake-H is an Xe variant, so it is supported by the Arc and Iris drivers.
With the DCH variant, you're stuck using 9on12, which is the cause of the issue with DXWrapper

I thought both the Arc and GCC drivers were DCH-based?

I thought both the Arc and GCC drivers were DCH-based?

They are, but Intel maintains DCH in the title and filename of the old driver that includes the 9on12 implementation for Iris/Xe parts it supports, and drops DCH from the title and file name of the Iris and Arc Xe package.

With the DCH variant, you're stuck using 9on12, which is the cause of the issue with DXWrapper

9on12 is not an issue with dxwrapper.  The issue happens without dxwrapper.  There are several fixes in dxwrapper for cards that use 9on12.

9on12 is not an issue with dxwrapper. The issue happens without dxwrapper. There are several fixes in dxwrapper for cards that use 9on12.

The capabilities of D3D8, DDraw and D3DImm are directly tied to the D3D9 capabilitys of the hardware and its driver, the D3D9 UMD and DX runtime in combination handle emulation of the fixed function capabilities, including those going back to the legacy DDraw D3D primitives and the colour combiner caps provided in D3D8, this is why some Drivers are better than others for legacy games with less than 32/24 bit formats.
The issue is going to happen whether you use dxwrapper or not for obvious reasons, the capabiltiy just isn't exposed by the driver with the Iris and Xe parts because it doesn't have a true legacy DX UMD, just an emulation layer.

Yes, I understand.  dxwrapper has a feature to convert the game from DDraw/Direct3D or d3d8 to d3d9.  So functions like D3DRENDERSTATE_COLORKEYENABLE need to be re-implemented on d3d9.  In this case, since d3d9 does not have this function I use shaders to emulate it.

Makes sense for a promotion to D3D9 vs keeping it on D3D8, D3DRENDERSTATE_COLORKEYENABLE is definitely not a d3d9type.

Just for the records (after banging my head a little on the topic) I think one better way to frame the issue is simply that Xe drivers anywhere before <IP_ADDRESS>59 didn't ship igd9trinity.
Because "DCH" hasn't been updated since october last year (except perhaps this for old cpus, but build number is still quite lower), so of course it couldn't ship anything better. Also of note that for a very short time "Arc DCH" was also a thing.

This issue should be fixed with the latest update here:  https://github.com/elishacloud/dxwrapper/wiki/Star-Trek-Armada-1


An ode to charger

This didn't include any of the 'An ode to chargers' code, by the way - just a few file renames.

yeah, it is intentional :-P


Use fetchApi convenience wrappers in UAM modules.

:warning: Please install the  to ensure uploads and comments are reliably processed by Codecov.
Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 100.00%. Comparing base (0e48d58) to head (79d94ee).

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff            @@
##              main       #36   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           14        14
  Lines         1369      1369
  Branches       116       116
=========================================
  Hits          1369      1369

Flag
Coverage Δ

unittests
100.00% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

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


Support for SM6225 ? (Redmi Note 11 spes/spesn)

Prerequisites

[x] Have you read the wiki?
[ ] Is your device in the supported list?
[ ] Does the device have a Snapdragon SOC which is supported in this repo?

Description
As the title says, support for this model ?
Kernel source was recently made avalable (or so I think) : https://github.com/MiCode/Xiaomi_Kernel_OpenSource/tree/spes-r-oss

yes , i hope someone develop this device working with renegade

hi, are there any news about the development, i own an Honor Pad X9 with SD685  (SM6225).
Can we be of any help in some way ?
thanks !
Victor


Tests are failing

When I'm on master and run tests, two of them fail - here's the interesting part of command line output:
    itext ids for itemsets are extracted
ERROR: Unsupported data type 'rank' found.
      ✓ works for itemset nodesets using a simple randomize()
ERROR: Unsupported data type 'rank' found.
      ✓ works for itemset nodesets using a randomize() with static seed
      1) works for itemset nodesets using a simple randomize() with complex multi-parameter predicate function
      2) works for itemset nodesets using a randomize() with a static seed and with a complex multi-parameter predicate function

  169 passing (4s)
  2 failing

  1) transformer
       itext ids for itemsets are extracted
         works for itemset nodesets using a simple randomize() with complex multi-parameter predicate function:
     Error: Extra content at the end of the document

      at Object.module.exports.fromXml (node_modules/libxmljs-mt/lib/document.js:167:21)
      at Promise (src/transformer.js:104:28)
      at tryToUnwrap (node_modules/lie/lib/index.js:191:5)
      at tryCatch (node_modules/lie/lib/index.js:203:17)
      at safelyResolveThenable (node_modules/lie/lib/index.js:194:16)
      at new Promise (node_modules/lie/lib/index.js:32:5)
      at _parseXml (src/transformer.js:102:12)
      at Object.transform (src/transformer.js:28:12)
      at Context.it (test/transformer.spec.js:508:40)

  2) transformer
       itext ids for itemsets are extracted
         works for itemset nodesets using a randomize() with a static seed and with a complex multi-parameter predicate function:
     Error: Extra content at the end of the document

      at Object.module.exports.fromXml (node_modules/libxmljs-mt/lib/document.js:167:21)
      at Promise (src/transformer.js:104:28)
      at tryToUnwrap (node_modules/lie/lib/index.js:191:5)
      at tryCatch (node_modules/lie/lib/index.js:203:17)
      at safelyResolveThenable (node_modules/lie/lib/index.js:194:16)
      at new Promise (node_modules/lie/lib/index.js:32:5)
      at _parseXml (src/transformer.js:102:12)
      at Object.transform (src/transformer.js:28:12)
      at Context.it (test/transformer.spec.js:515:40)

Thanks. Will comment them out until ready to work on the issue they refer to: https://github.com/enketo/enketo-core/issues/532


Bug fix z-index for have before background on tabs

Pull Request Test Coverage Report for Build 103

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 82.081%

Totals

Change from base Build 101:
0.0%

Covered Lines:
2542

Relevant Lines:
2904

💛  - Coveralls


Help with project source - How can I invoke the CSS parser in isolation?

I am digging through the source trying to understand how the CSS parser works and finding it a little challenging.
I'm not sure how the parsing logic works but I am essentially looking for an internal function which takes CSS and flattens/processes it like:
import { parse } from './???'

const css = `
   div {
      &:before {
         content: 'Hello World';
      }
   }
`

const result = parse(css)

// result
div:before {
   content: 'Hello World';
}

does that exist in that form, or where should I start looking to find this?

Here you go: https://github.com/thysultan/stylis.js


Mention MKSYS_URLMONIKER in MKSYS enumeration?

MKSYS_URLMONIKER can be obtained from IsSystemMoniker (see https://docs.microsoft.com/en-us/windows/win32/api/objidl/nf-objidl-imoniker-issystemmoniker), but is not mentioned in the linked MKSYS enumeration documentation.
I see that it is not defined in the enum (at least not in my ObjIdl.h), but it is defined in urlmon.h and seems to fill exactly the gap in ObjIdl.h.

@phimuemue : Thanks for your contribution! The author(s) have been notified to review your proposed change.

Thanks for your submission. However, MKSYS_URLMONIKER is not part of the MKSYS enumeration (as defined in objidl.h; you can see it is commented out of the enum definition in objidl.idl, which also ships in the Windows SDK). Therefore, it does not belong in the article you updates, so I'm going to close this pull request.
Instead, MKSYS_URLMONIKER is a standalone #define value in urlmon.h and urlmon.idl (that is, it's not defined in the context of an enum). Given this, I'll update the IsSystemMoniker article to indicate where this value is defined vs. the other MKSYS values referenced in that article.


Virtual Env Setting Windows

When you set the environment variable for VIRTUAL_ENV in Windows it appends /lib/python2.7/site-packages. It should be /Lib/site-packages in Windows.

Oh man, I'll bet there's more too. We haven't really done any testing at all on Windows yet, and I don't know of any ways to do Windows testing with a CI.
PR's are also graciously accepted, but really we just need somebody who can really dive into it on Windows.
Thanks for reporting!

Sure thing. I just submitted a small PR, but I'll keep an eye out for more. Great library!

Merged! Takk!

Just ran into this issue. Any idea when this will make it into a release?

Latest release was pushed yesterday, are you using that? If not, can you paste your error here, or open a new ticket if it's a different issue?

I just did a pip install zappa --upgrade and it installed version 0.20.2. However the problem persists and I double checked my zappa.py and it does not contained the fix from the pull request

Huh. That's weird. I'm looking at my own master branch and I see it, but I don't see it in the 0.20.2 code. I don't know how that happened.
Reopening until fixed.

Totally my fault. -dev never got brought into master.


Add coverage for all address spaces in DSE tests

From #773:

Consider expanding test coverage in the device enqueue tests for pointers to all three address spaces (see https://gitlab.khronos.org/opencl/OpenCL-Docs/issues/236).

Discussed on the 2020/09/15 teleconference: DSE and Generic Address Space are coupled in OpenCL 3.0. This covers adding test coverage for DSE built-ins where the input pointers come from the local and global address space. This is nice additional coverage but not required to cover feature changes or additions in OpenCL 3.0. Removing from the OpenCL 3.0 project.

Re-removing this from the OpenCL 3.0 board and un-tagging it, see comment above.  Thanks!


New audit: GITHUB_ENV

GITHUB_ENV can be dangerous to use, particularly if it's used in pull_request_target, workflow_run, or other triggers than run in the parent repo context but can be triggered by an untrusted third party.
In particular: if the attacker can control the environment variable (or add multiple new variables), they can typically achieve code execution (via LD_PRELOAD, or language-specific environment variables).
This can manifest in unintuitive or unusual ways, e.g.:
echo "pr_number=$(cat NR)" >> $GITHUB_ENV

if NR contains multiple lines, each gets added to the environment.
Or even:
        env:
          TITLE: ${{ github.event.pull_request.title }}
        run: |
          message=$(echo "$TITLE" | grep -oP '[{\[][^}\]]+[}\]]' | sed 's/{\|}\|\[\|\]//g')
          echo "message=$message" >> $GITHUB_ENV

...since grep -P will cause each match to receive a new line, meaning that TITLE='[benign][LD_PRELOAD=...]' will inject the latter as an environment variable as well.
One wrinkle with flagging these is noisiness: GITHUB_ENV use in the context of pull_request and other "safe" triggers can result in code injection, but the attacker has no secret or otherwise privileged access to the workflow. As such, a new audit here should only flag on triggers that could allow external, privileged, code execution.
h/t @Ninja3047
Refs:

https://x.com/GHSecurityLab/status/1856787029851320367
https://www.synacktiv.com/en/publications/github-actions-exploitation-repo-jacking-and-environment-manipulation

Basic LD_PRELOAD example
I know your 2nd URL ref points to another site with an example program, but when I was made aware of such a vulnerability I would have appreciated a simple to grok example program, especially one not buried in all the other information on the topic 😅

Sharing here if it helps anyone else, as when this was new to me at the time I had encountered a few hiccups along the way. I went with Rust due to familiarity and how simple / focused it is to grok.

LD_PRELOAD exploit example (Rust)
Basic program with Rust to demonstrate LD_PRELOAD exploit. Create these two files with Rust installed to build it.
Cargo.toml:
[package]
name = "example"
version = "0.1.0"
edition = "2021"

# Required for the extern C `init_log()` function to link dynamically:
[lib]
name = "example"
crate-type = ["cdylib"]

src/lib.rs:
// NOTE: The function name is your choice, it must be referenced in `RUSTFLAGS` as the value after `-Wl,-init,`
#[no_mangle]
pub extern "C" fn init_log() {
    println!("This will output to stdout before the program starts");
}

# Build `libexample.so`:
$ RUSTFLAGS='-C link-arg=-Wl,-init,init_log' cargo build

# Verify `LD_PRELOAD` hook is working:
$ LD_PRELOAD=target/debug/libexample.so /usr/bin/echo test
This will output to stdout before the program starts
test

# NOTE: As `echo` is a shell built-in the dynamic linker would not be called,
# Only when running an actual dynamically linked executable like `/user/bin/echo` like above works.
$ LD_PRELOAD=target/debug/libexample.so echo test
test

A real-world attack would be free to execute any code within the compromised trusted workflow.

Mitigation Advice?
A common use-case this will be seen in workflows AFAIK is for actions with PRs where some later functionality does need access to secrets, but the PR is from a fork which loses the pull_requests event context in workflow_run or similar trusted contexts that adopted the ENV approach.
While awareness of the vulnerability is quite helpful, I often don't see much advice on how maintainers should resolve it properly. Can they safely use the GITHUB_ENV technique by filtering the untrusted input downloaded via artifact? Or can the attacker manipulate the input that it'll not be filtered properly?
That was a concern I had, where I wasn't particularly confident unless you can more strictly validate the expected value for a key (eg: only digits for PR number, or hexadecimal for a commit SHA). There's a variety of approaches that users discuss in communities when they tackle this issue, some lack the needed context for PRs from forks, risk failure due to rate limits, or require extra care due to security risks (this ENV artifact approach, or pull_request_target running untrusted code).
I assume the closest to mitigation advice in zizmor is the audit rules page with "Other Resources" links? Seems related to: https://github.com/woodruffw/zizmor/issues/125

In my case, the affected workflow was a standard documentation preview for PRs with an action that comments on the PR with a link to the preview.
I've chosen to go with pull_request_target as the workflow trigger that calls two workflow_call workflows:

The first job intended to mimic pull_request by cloning the PR branch and building the contribution (while preventing access to secrets and only permitting content: read for the git checkout).
An artifact upload is still used to transfer that build between jobs into the secure/trusted workflow with access to secrets, but GITHUB_ENV is avoided as pull_request_target now passes context to each job via workflow_call inputs (these workflows by default do not inherit secrets, but they do inherit permissions IIRC and cannot add new permissions from the calling workflow, only reduce them.

While awareness of the vulnerability is quite helpful, I often don't see much advice on how maintainers should resolve it properly. Can they safely use the GITHUB_ENV technique by filtering the untrusted input downloaded via artifact? Or can the attacker manipulate the input that it'll not be filtered properly?

This is definitely tough to mitigate properly. I'd say the baseline advice is that "dangerous" triggers (like pull_request_target) shouldn't use GITHUB_ENV at all, if they can avoid it. If they're using it to pass state around, using GITHUB_OUTPUT is much safer.
If GITHUB_ENV can't be avoided for whatever reason, the safest thing to do is:

Ensure that the workflow can't set the environment variable's name, and can't control the variable's value excessively if the variable is a sensitive one
Ensure that the environment variable name chosen is unique and unlikely to have side effects
Ensure that the workflow can't set multiple new environment variables, e.g. via echo "pr_number=$(cat NR)" >> $GITHUB_ENV or the grep -P loophole mentioned above

I assume the closest to mitigation advice in zizmor is the audit rules page with "Other Resources" links? Seems related to: #125

Yep, for now that's the best place! I'd greatly appreciate help improving those docs, including adding examples of vulnerable workflows and their mitigations.

This is definitely tough to mitigate properly.

I've added a new reference link to the top of my previous comment. It's an official GitHub Security Lab (GHSL) advisory with reference to the original vulnerability report at the project, similar to the one I received.
Their mitigation only required the PR number to be validated, which might be suitable for most.

I'd say the baseline advice is that "dangerous" triggers (like pull_request_target) shouldn't use GITHUB_ENV at all, if they can avoid it. If they're using it to pass state around, using GITHUB_OUTPUT is much safer.

I had a two-step workflow run with pull_request => workflow_run triggers like the referenced advisory was doing. The metadata available within pull_request is uploaded as an artifact and downloaded at the 2nd workflow triggered to load for input into an action.
I agree that outputs should work just as fine, considering they're configured in the same format. ENV is likely used as it's a more familiar choice and you'll see it suggested as a solution around the web.
Github would advise on their security blogs for a script to use the ENV as a variable however, rather than via the context ${{ ... }} syntax when it's within the value of a script as the latter is less secure (regardless of env vs output context).

Ensure that the workflow can't set the environment variable's name, and can't control the variable's value excessively if the variable is a sensitive one

I think the problem is more to do with blindly appending to GITHUB_ENV when the source content can be manipulated by the PR author.
When this was reported to me I was not aware that third-party contributors could modify pull_request workflows to run whatever they want, which AFAIK will run without approval if the contributor has previously had a PR merged (such as simple typo fix). That made me reluctant to keep the pull_request trigger for this purpose, even though pull_request_target has it's own risks involved.
Validating the input like litestar did to mitigate seems to be the most appropriate way if keeping the GITHUB_ENV usage. They were already storing only the value itself for a single variable in a file, where the value was not ambiguous in content, so ensuring it was a number was was valid. Once that value is safe, they append to GITHUB_ENV with the expected variable name, avoiding any untrusted input slipping through (technically the PR author could still manipulate the PR number to be a different one).

I'd greatly appreciate help improving those docs, including adding examples of vulnerable workflows and their mitigations.

I'm not sure how appropriate it is to use the litestar reference as an example, but I know that there's a fair amount of workflows with roughly the same approach / requirement out there.
A basic search reveals about 800+ workflows, but that's without double-checking if they're populating the .env from untrusted workflows like pull_request or other dynamic sources.

When this was reported to me I was not aware that third-party contributors could modify pull_request workflows to run whatever they want, which AFAIK will run without approval if the contributor has previously had a PR merged (such as simple typo fix).

They can, but it's worth noting that pull_request workflows aren't as dangerous: a pull_request triggered from a fork runs in that fork's context, meaning that the attacker can't use pull_request to access the secrets.* context or anything else sensitive on the upstream repo. They can still run arbitrary code, but that code has no effect on the upstream repo.
In addition, you can disable the "safe after first time" default under Settings -> Actions:

They can still run arbitrary code, but that code has no effect on the upstream repo.

Yes, but that's the issue when the common problem with $GITHUB_ENV is due to pull_request event being used as the initial workflow trigger, and then storing metadata into a file to carry over context into a trusted workflow with access to secrets to perform some additional functionality.
If the functionality could be done solely in pull_request alone, that'd be fine. Getting access to that pull_request context in a subsequent workflow that requires the additional context has been a known problem for years, it'd be ideal if we had more official guidance / patterns on such.
For reference: The pull_request => workflow_run approach was covered at the GHSL blog (Aug 2021), passing the PR number via file.
At least with zizmor this concern will be caught more easily 😎

In addition, you can disable the "safe after first time" default under Settings -> Actions:

I was not aware of that (or when it was added), good to know thanks :)

FWIW: I've completed my investigation into mitigation for the common workflow scenario with pull_request + workflow_run (as a 2nd stage triggered by the pull_request workflow, get the PR number to do something like post a comment on the PR).

I've documented three different approaches (and this summary) revised from what I found shared by the community, with full examples and insights should it help anyone.
These have also been reviewed by GHSL:

With insights shared of additional dangers from using pull_request_target (cache poisoning at the branch boundary + memory dump access of secrets)
While the endorsed solution is to use gh pr view, otherwise fallback to passing values through artifacts to validate and append to $GITHUB_OUTPUT / $GITHUB_ENV.

@woodruffw I can take this one. I give it a try here, hope it is in the right direction!

Done with #192.


Enable native layer and replication tests.

PR is added to the queue for testing as 1. task. (34e3b48)

Test (Success) 51074821 build is completed (34e3b48)
See https://github.com/ThaliTester/TestResults/tree/5107482134e3b48_Enable_native_layer_and_replication_tests__vjrantal/ for the logs

Test<PHONE_NUMBER>e3b48(34e3b48) has failed
See https://github.com/ThaliTester/TestResults/tree/5107482134e3b48_Enable_native_layer_and_replication_tests__vjrantal/ for the fail logs

PR is added to the queue for testing as 1. task. (f72e61a)

Test (Success) 51074821 build is completed (f72e61a)
See https://github.com/ThaliTester/TestResults/tree/51074821f72e61a_Enable_native_layer_and_replication_tests__vjrantal/ for the logs

Test 51074821f72e61a(f72e61a) has failed
See https://github.com/ThaliTester/TestResults/tree/51074821f72e61a_Enable_native_layer_and_replication_tests__vjrantal/ for the fail logs

Reviewed 3 of 3 files at r2, 1 of 1 files at r3.
Review status: all files reviewed at latest revision, all discussions resolved.

Comments from the review on Reviewable.io


[Task] Add unit test cases for ChatBot component

Task Description:
Currently, we run unit tests using jest which can be found here.
However, the test cases are not yet comprehensive enough and work can be done to cover more grounds. Specifically for this issue, we hope to add test cases for the ChatBot component.
Deliverable(s):
New unit test cases that cover the testing of the ChatBot component.
Additional Context:

The ChatBot component can be found here
An example for AudioButton can be found here which may serve as a good source for reference

hey, can you assign this to me?

hey, can you assign this to me?

Go for it!

Hey @ishitab02, with hacktoberfest coming to a close very soon, I'll be leaving this issue un-assigned for any final PRs. This is to minimize leftover issues and provide an opportunity for those looking to get that last few PRs in. Feel free to continue with a PR if you're still working on this issue and I seek your kind understanding, thank you! 😊

i understand

@tjtanjin can I work on this?

@tjtanjin can I work on this if it is not done already?

Hey @hpatel292-seneca! Any updates for this issue? 🥹


dokku run bundle exec rails console production not working

When I try to  run dokku run bundle exec rails console production console is not showing. When I hit ctrl+d then I can exited console. I guess the issue here is that console is not sending live info.
I've checked and I'm using 0.1.6 version of gem that might be the problem.

Hi the latest gem has removed this functionality. Please use one of the other toolsets for Dokku to do this instead.


test

I merged this by mistake when testing travis.
I've reverted it, no further action is required.


Recipes Aren't Consistently Kicked Off From Ingests

Recipes are not consistently kicked off from ingest jobs. Somtimes they start successfully, but more often than not they aren't. Possibly related to the recipes/jobs being queued from inside the ingest job by calling Queue.objects.queue_new_recipe_v6 instead of using a command message?

DoesNotExist errors are thrown by both ingest jobs and recipes. Adding in logging allows you to see the recipe is seemingly queued while inside the ingest job. Possibly a timing issue then if the ingest job doesn't complete quick enough for the recipe message to be executed? I'm seeing one out of every three ingest jobs actually kick a recipe off in Dev.

Closed via https://github.com/ngageoint/scale/pull/1677/