Initial Packages Commit

☝ It seems that the file that describes the changes for the changeset is missing

I will create a release in the documentation PR right after

I would expect to find a .vscode folder in this repository with default settings.

I am not sure for "eslint" that having a folder named "by-use-cases" really show the intent here.
In the Tech Design document there's a "by use cases" section but it's abandonned for a "by project" approach. In the "by project" approach those files are defined as "configuration parts" rather "use cases" because they are not intended to fulfill specific use cases but rather being a linting configuration for a specific library or language.
Personally I would merge anything in a single folder to avoir confusion or least rename the "by use cases" one.


spark operator deployment out of date

Describe the bug
Appears the spark operator version is out of date in roles/k8s_start_services/vars/main.yml:operator_image_tag: v1beta2-1.2.3-3.1.1
# kubectl get pods -n spark-operator
NAME                                         READY   STATUS             RESTARTS   AGE
my-release-spark-operator-57b8df564b-bfwwr   0/1     ImagePullBackOff   0          152m

kubectl describe pod -n spark-operator my-release-spark-operator-57b8df564b-bfwwr
.
.
.
Events:
  Type     Reason   Age                     From     Message
  ----     ------   ----                    ----     -------
  Normal   BackOff  9m36s (x570 over 139m)  kubelet  Back-off pulling image "ghcr.io/googlecloudplatform/spark-operator:v1beta2-1.2.3-3.1.1"
  Warning  Failed   4m39s (x592 over 139m)  kubelet  Error: ImagePullBackOff

Tried to download manually:
[root@c119 ~]# docker pull ghcr.io/googlecloudplatform/spark-operator:v1beta2-1.2.3-3.1.1
Error response from daemon: manifest unknown

We should consider removing the image tag from the deployment, and using the the helm collection
roles/k8s_start_services/tasks/deploy_k8s_services.yml:  command: helm install my-release spark-operator/spark-operator --set image.tag={{ operator_image_tag }} --namespace spark-operator --create-namespace

I agree @j0hnL. We need to migrate away from direct YAML deployments and towards Helm and/or operator-based management of all extensions and services.


Installing Python and Jupyter on fresh macOS multiple prompts

On a freshly installed macOS, the very moment we install Python and Jupyter extension per kernel source suggestion (Select Kernel -> Install Recommended Extensions), I got a prompt from the system and an error notification from Jupyter

Error from Python extension saying it's not recommended to use
Prompt from macOS, it's probably triggered by the access of Python interpreter

Not sure who is initiating the Python environment access so let's start the investigation from here. If it's not recommended to use the default Python on macOS, I expect not to see any prompt from system or Python extension.

Clicking on Select Interpreter shows a quick pick, which tells me there is Python is not installed

@rebornix  please could you file issues related to python extension in their repo
Eg the walk through and interpreter picker is clearly on issue in python extension

Not sure who is initiating the Python environment access so let's start the investigation from here

please could you share the debug logs with the latest insider release and pre/release


Update secure-apis-using-mutual-ssl.md

The diagram for MTLS described is not technically possible with AWS or Azure load balancer and so added explicitly nginx load balancer in description.
Purpose

Describe the problems, issues, or needs driving this feature/fix and include links to related issues in the following format: Resolves issue1, issue2, etc.

Goals

Describe the solutions that this feature/fix will introduce to resolve the problems described above

Approach

Describe how you are implementing the solutions. Include an animated GIF or screenshot if the change affects the UI (email<EMAIL_ADDRESS>to review all UI text). Include a link to a Markdown file or Google doc if the feature write-up is too long to paste here.

User stories

Summary of user stories addressed by this change>

Release note

Brief description of the new feature or bug fix as it will appear in the release notes

Documentation

Link(s) to product documentation that addresses the changes of this PR. If no doc impact, enter “N/A” plus brief explanation of why there’s no doc impact

Training

Link to the PR for changes to the training content in https://github.com/wso2/WSO2-Training, if applicable

Certification

Type “Sent” when you have provided new/updated certification questions, plus four answers for each question (correct answer highlighted in bold), based on this change. Certification questions/answers should be sent to<EMAIL_ADDRESS>and NOT pasted in this PR. If there is no impact on certification exams, type “N/A” and explain why.

Marketing

Link to drafts of marketing content that will describe and promote this feature, including product page changes, technical articles, blog posts, videos, etc., if applicable

Automation tests

Unit tests

Code coverage information

Integration tests

Details about the test cases and coverage

Security checks

Followed secure coding standards in http://wso2.com/technical-reports/wso2-secure-engineering-guidelines? yes/no
Ran FindSecurityBugs plugin and verified report? yes/no
Confirmed that this PR doesn't commit any keys, passwords, tokens, usernames, or other secrets? yes/no

Samples

Provide high-level details about the samples related to this feature

Related PRs

List any other related PRs

Migrations (if applicable)

Describe migration steps and platforms on which migration has been tested

Test environment

List all JDK versions, operating systems, databases, and browser/versions on which this feature/fix was tested

Learning

Describe the research phase and any blog posts, patterns, libraries, or add-ons you used to solve the problem.

This is not required, as this is a common diagram.
verified with @tharindu1st

This is not required, as this is a common diagram.
verified with @tharindu1st


test: behaviors-message_on_lock_failure (2024-03-02 00:09:19.668534+00:00)

automatic test cleanup


Free functions are broken on the OptiX path

Problem
The OptiX paths in testshade and testrender are broken following #1852. The main problem is that there are no definitions available for the new rs_* functions, which results in a pipeline link error in OptiX.
../../dist/bin/testshade -optix -res 512 512 test_texture -o Cout test_texture.png

Output Cout to test_texture.png
[OPTIX ERROR] OptiX call 'optixPipelineCreate(m_optix_ctx, &pipeline_compile_options, &pipeline_link_options, final_groups.data(), int(final_groups.size()), msg_log, &sizeof_msg_log, &m_optix_pipeline)' failed with error: OPTIX_ERROR_PIPELINE_LINK_ERROR (.../osl/src/testshade/optixgridrender.cpp:648)
Message: Creating optix pipeline: COMPILE ERROR:
Info: Pipeline statistics
	module(s)                            :     4
	entry function(s)                    :    10
	trace call(s)                        :     0
	continuation callable call(s)        :     0
	direct callable call(s)              :     2
	basic block(s) in entry functions    :    12
	instruction(s) in entry functions    :   402
	non-entry function(s)                :   606
	basic block(s) in non-entry functions:  2945
	instruction(s) in non-entry functions: 107104
	debug information                    :    no
Error: Symbol 'osl_texture' was defined multiple times. First seen in: '0xc73f206abd2a3738__direct_callable__dummy_rend_lib'
Error: Unresolved external symbol 'rs_environment' in module '0x2806c92a7917af88__direct_callable__dummy_shadeops'
Error: Unresolved external symbol 'rs_get_texture_info' in module '0x2806c92a7917af88__direct_callable__dummy_shadeops'
Error: Unresolved external symbol 'rs_get_texture_info_st' in module '0x2806c92a7917af88__direct_callable__dummy_shadeops'
Error: Unresolved external symbol 'rs_pointcloud_get' in module '0x2806c92a7917af88__direct_callable__dummy_shadeops'
Error: Unresolved external symbol 'rs_pointcloud_search' in module '0x2806c92a7917af88__direct_callable__dummy_shadeops'
Error: Unresolved external symbol 'rs_pointcloud_write' in module '0x2806c92a7917af88__direct_callable__dummy_shadeops'
Error: Unresolved external symbol 'rs_texture' in module '0x2806c92a7917af88__direct_callable__dummy_shadeops'
Error: Unresolved external symbol 'rs_texture3d' in module '0x2806c92a7917af88__direct_callable__dummy_shadeops'
Error: Unresolved external symbol 'rs_trace' in module '0x2806c92a7917af88__direct_callable__dummy_shadeops'
Error: Unresolved external symbol 'rs_trace_get' in module '0x2806c92a7917af88__direct_callable__dummy_shadeops'

There are no definitions present in the LLVM IR used to seed the Module for each ShaderGroup, and therefore no definitions present in the PTX generated for each shader. There are declarations for the rs_* functions in the initial Module, but no definitions. Likewise, there are no definitions present in any of the rendlib or shadeops bitcode or PTX.
It's not clear to me where these definitions are expected to be coming from in #1852. Some functions were removed from the rendlib CUDA files (e.g., osl_get_noise_options), but no corresponding functionality was added to the free functions. In testshade/rs_simplerend.cpp, most of the functions are stubs when being compiled for CUDA. So even if those stub definitions could satisfy the linker, they would not provide the functionality of the removed functions.
OSL_RSOP OSL_HOSTDEVICE bool
rs_texture(OSL::OpaqueExecContextPtr ec, OSL::ustringhash filename,
           OSL::TextureSystem::TextureHandle* texture_handle,
           OSL::TextureSystem::Perthread* texture_thread_info,
           OSL::TextureOpt& options, float s, float t, float dsdx, float dtdx,
           float dsdy, float dtdy, int nchannels, float* result,
           float* dresultds, float* dresultdt, OSL::ustringhash* errormessage)
{
#ifndef __CUDA_ARCH__
    auto sg = (OSL::ShaderGlobals*)ec;
    return sg->renderer->texture(filename, texture_handle, texture_thread_info,
                                 options, sg, s, t, dsdx, dtdx, dsdy, dtdy,
                                 nchannels, result, dresultds, dresultdt,
                                 errormessage);
#else
    return false;
#endif
}

Steps to Reproduce

Compile testshade or testrender with OptiX enabled
Run testshade or testrender in OptiX mode

Versions

OSL branch/version: main
OS: Ubuntu 20.04 (I don't think this is relevant)
C++ compiler: g++ 9.4.0
LLVM version: 14.0.3
OIIO version: 3.0.0

Thanks, Tim. I'm sorry about the inconvenience. We should have caught that before the merge.


Support more WPF usecases (nested libraries user controls, basic themes)

Add almost full? support for WPF by adding support for nested libraries User Control and classes usage in XAML
If there's anything to be said is that I had to make the Res.data field mutable in order for the chain of res processors to work properly.

I've added support for Generic.xaml in Themes as well :D. A more comprehensive support will come soon, but this can be merged in the meantime if wanted.


[Post-purchase UI] Session token has invalid API key

Please list the package(s) involved in the issue, and include the version you are using
@shopify/post-purchase-ui-extensions-react: ^0.13.5
Describe the bug
When sending API requests back to my Shopify App backend, I get this error:
08:53:56 │ web-backend  │ [shopify-app/INFO] Running validateAuthenticatedSession
08:53:56 │ web-backend  │ [shopify-app/ERROR] Error when loading session from storage: Error: Session token had
invalid API key

and

Steps to reproduce the behavior:

Use this code in a post-purchase extension:

// APP_URL and inputData have been defined
const wallet = await fetch(`${APP_URL}/api/create-client-wallet`, {
      method: "POST",
      headers: {
        Authorization: `Bearer ${inputData.token}`,
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        walletName,
      }),
    })
      .then((response) => response.json())
      .then((response) => console.log(response))
      .catch((err) => {
        console.error(err);
        return error;
      });

Expected behavior
The API successfully returns '200'.
Screenshots
None.
Additional context
I'm not very sure how to go about this. Shopify only has documentation for remix backends, so I'm not sure if I'm doing something wrong.

This doesn't look like a bug.
Looking at your extension code, it looks like you're making an API call to your app backend. Your app backend is parsing the request and not finding the expected Authorization header. You should be able to confirm that the fetch request is hitting your backend by looking at your server logs.
One thing to note, depending on how you have your backend setup, there may be endpoints configured with the expectation that the request is coming from the Shopify admin. For security reasons, you do not want to copy the required tokens to be able to make those requests from within and extension. Instead, you should configure a separate authentication method that can be securely called from an extension.
Something that might help with this last part is the Extension Session Token API. This would give you a secure way to generate a JWT token that can be validated on your backend server.
Another option that might work for you would be to setup an App Proxy.
There are security and compatibility considerations for both extension session tokens and app proxies that are detailed at the bottom of the Extension Configuration docs in the Network Access section.