[Bug]: Unable to edit Odoo 17 website. Mixed Content Error

Description
I created an Odoo 17 website with the 1-click service.
I was able to add the Recruitment module.
When I tried editing the Website, the editor would not open, I kept getting this error in the web console
Mixed Content: The page at 'https://odoo.coolify.behonbaker.com/web#action=247&cids=1&menu_id=176' was loaded over HTTPS, but requested an insecure frame 'http://odoo.coolify.behonbaker.com/'. This request has been blocked; the content must be served over HTTPS.

After some amount of digging, i stumbled on this post: Mixed Content Error where someone stated that adding a few headers to the Nginx config would fix the problem.
I am not sure of how to do this in the UI of Coolify. This is what I see for this service:

Can you help me or point me to the docs that say how we can add the different heders to the proxy file?
Minimal Reproduction (if possible, example repository)

Create an Odoo 17 app with the 1-click service from the UI
Start the website and visit the live URL given by coolify.
Go to the website editor in Odoo

Exception or Error
Mixed Content: The page at 'https://odoo.coolify.behonbaker.com/web#action=247&cids=1&menu_id=176' was loaded over HTTPS, but requested an insecure frame 'http://odoo.coolify.behonbaker.com/'. This request has been blocked; the content must be served over HTTPS.
Version
4.0.0-beta.335
Cloud?

[ ] Yes
[X] No

im not sure which part is broken for you

The website editor. Try editing the website. I did get the recruitment module to work no problem

@BayBreezy this took way to long to fix, none of the suggestions worked

add a transform rule in cloudflare
modify  response headers
match your odoo domain
then add dynamic Location and set value to
concat("https://", substring(http.response.headers["location"][0], 7))
please note i also have amended some traefik labels, but im not sure they are even necessary at this point

@BayBreezy
- traefik.http.routers.odoo.entryPoints=http
- traefik.http.middlewares.csp-header.headers.customResponseHeaders.Content-Security-Policy=upgrade-insecure-requests
- traefik.http.routers.odoo.middlewares=gzip,csp-header
- 'traefik.http.routers.odoo.rule=Host(`odoo.domain.com`) && PathPrefix(`/`)'
- traefik.http.routers.odoo.priority=100

this is for http, you would need to modify for https
also i added this volume mount
-
        type: bind
        source: ./odoo.conf
        target: /etc/odoo/odoo.conf
        contents: |
          [options]
            addons_path = /mnt/extra-addons
            data_dir = /var/lib/odoo
            proxy_mode = True

i also modified the web.base.url and web.base.url.freeze in Settings -> Technical -> System Parameters in dev mode

note the volume mount will remove the admin password if u have one set up

Ok. Thank you. I will give this a shot when I am around the computer again. I will let you know if it helped

@djsisson well that didn't work :(

@BayBreezy the other option is to install a plugin for traefik that modifies headers, and the nyou can jsut modify the Location header using a regexp, similar to what i did in cloudflare

@djsisson , I will have to do that... after learning how ytaefik works lolol.
I only know about traefik through coolify.
But If i get it to work, I will share my findings. Thanks for the help. I appreciate it

Well maybe you could add nginx to the compose and route all traffic through that

I'm not an expert on reverse proxies unfortunately.
I think the problem complained about is due to the lack of management of port 8072 towards which the /longpolling traffic (up to version 15.0) or /websocket (from version 16.0 onwards) must be directed.
Please see:

https://stackoverflow.com/questions/66151900/odoo-using-traefik-proxy-instead-of-nginx
https://www.odoo.com/documentation/15.0/administration/on_premise/deploy.html#id7
https://www.odoo.com/documentation/18.0/administration/on_premise/deploy.html#id8


"create-ocp-project" workflow not detecting already configured "service" for RHDH at "rhdh-operator" namespace

Scenario:

RHDH already installed on OpenShift (4.15.30_1558_openshift) - This is ROKS on IBM Cloud

Installed Orchestrator by following instructions here (skipped a few steps to adjust to existing install of RHDH)

Verified Orchestrator functions by testing the greetings workflow

Installed create-ocp-project workflow by following instructions located here

A test run of the workflow failed with Unable to invoke request: java.net.UnknownHostException: backstage-backstage.rhdh-operator: Name or service not known error

Expectation: This error should not have occurred
Reasoning:

I didn’t enter a service name called backstage-backstage anywhere during the set up of any of the aforementioned
As mentioned earlier, the system already had RHDH running and it was deployed using operator
The deployment of create-ocp-project workflow should have detected the existing service backstage-developer-hub automatically

Note:
I worked around the issue by creating a new service called backstage-backsatage. Didn’t touch the stock service (backstage-developer-hub) as am afraid that it may break something else.
create-ocp-project-5595448f95-7cw2t-workflow.log

Hi @epnaveen and thanks for reporting this issue.
The workflow is installed with defaults value that match the RHDH installed instance by the orchestrator.
For running against an existing RHDH instance, there is a need to update the configmap that points to the existing RHDH service (no need to create a dedicated service for it).
See https://github.com/parodos-dev/serverless-workflows-config/blob/main/charts/create-ocp-project/templates/01-configmap_create-ocp-project-props.yaml#L5
apiVersion: v1
data:
  application.properties: |
    # Backstage Notifications service
    quarkus.rest-client.notifications.url=${BACKSTAGE_NOTIFICATIONS_URL:http://backstage-backstage.rhdh-operator}
    quarkus.openapi-generator.notifications.auth.BearerToken.bearer-token=${NOTIFICATIONS_BEARER_TOKEN:-}
...

BACKSTAGE_NOTIFICATIONS_URL is a variable to points to the existing RHDH instance.
There are several options to set this variable:

Edit the configmap directly and replace the default value http://backstage-backstage.rhdh-operator with yours
Edit the create-ocp-project Sonataflow CR in sonataflow-infra and set the env var under    podTemplate:
       container:
          env:
            - name: NOTIFICATIONS_BEARER_TOKEN
            - value: http://<existing rhdh service>

By adding the variable to the create-ocp-project-creds secret (this resources is a good fit for credentials, but can be used for any env-var)

Any of the option will make the env variable available for the existing workflow Quarkus service that serves the workflow.
Pls note that same will have to be applied for other required env-vars as defined in https://github.com/parodos-dev/serverless-workflows-config/blob/main/charts/create-ocp-project/templates/01-configmap_create-ocp-project-props.yaml.
There is a place for improvement in the docs for this section and I'll make sure it is better explained.

There is a section that refers to that part:
https://github.com/parodos-dev/serverless-workflows-config/blob/main/charts/create-ocp-project/INSTALL.md#environment-variables


Feature/steam workshop integration

Adds CreateSteamWorkshopItemTask and UpdateSteamWorkshopItemTask.
Already supported in Lua.
TODO:

Needs support for XML configuration @gruenwaldlk
Should improve documentation for usage. Currenty requires a steam_appid.txt containing the app ID in the working directory.

Maybe create this file automatically in a later iteration?

Closing PR, because I found a critical bug regarding conversions between number types that wasn't properly covered because of bad test design. Will re-open as soon as it's fixed.
The changes will be minor though, so if you want to have a look already feel free to check out the PR in your local repo. create_steam_workshop_item will work in Lua. update_steam_workshop_item is where the trouble comes in.


Add IP2Location.io connector

Description
Add IP2Location.io API into Ballerina.
One line release note:

Add IP2Location.io connector

Type of change
Please delete options that are not relevant.

[x] New feature (non-breaking change which adds functionality)

How Has This Been Tested?
Locally test in local Ballerina project.
Test Configuration:

Ballerina Version: 2201.8.2 (Swan Lake Update 8)
Operating System: Windows 10 and Linux Debian 11
Java SDK:

Checklist:
Changes to OpenAPI definition

[x] Modified info section of the OpenAPI definition file - Example

description - what the connector is about
x-ballerina-init-description OpenAPI extension - connector initialization details
x-ballerina-display OpenAPI extension - connector name and path to the connector icon

[x] Added proper description each API Key, if API Key authentication is defined in OpenAPI definition file

Changes to connector module

[x] Added license header at the top of each .bal file.
[x] Added Package.md as per the guide here
[x] Added Module.md for the module of the  connector as per the guide here
[x] Added connector icon to the root of the connector. Icon needs to be a png of 200x200 px size with name icon.png
[x] Added Ballerina.toml file with following information. For keywords refer to guide

Verifying connector module

[x] Compiled the connector successfully with the targeted ballerina version.
[ ] Conducted smoke tests on the connector (Recommended when OpenAPI definition is obtain from an unofficial source)

Security checks

[x] Followed secure coding standards in http://wso2.com/technical-reports/wso2-secure-engineering-guidelines?
[x] Confirmed that this PR doesn't commit any keys, passwords, tokens, usernames, or other secrets?

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Hi @ip2location
Thank you for your valuable contribution and we are really sorry about the late reply. We have missed this PR somehow.
This repository is used to keep the auto-generated Ballerina connectors maintained by the Ballerina team. We are also in the process of revamping these connectors and moving them to separate repositories.
So, unfortunately, we cannot merge this PR to this repo.
But you can publish this connector to the Ballerina Central under your organization. Please refer to the following guides on publishing your connector:

Publish packages to Ballerina Central
Connector development process

Please feel free to contact us via our discord channel if you have any further questions. We are happy to help you publish the connector. Thanks again for your contribution.
I am closing the PR because of the above reasons.


Autapses not allowed by connect()

connect() does not allow the pre and post synaptic compartments to be the same, but this necessary to model autapses, which are ubiquitous throughout the nervous system

This is now allowed -- many changes have been made to the connectivity API since this issue was created


feat: Enable Rule CA1823

What does the pull request do?

What is the current behavior?

What is the updated/expected behavior with this PR?

How was the solution implemented (if it's not obvious)?

Checklist

[ ] Added unit tests (if possible)?
[ ] Added XML documentation to any related classes?
[ ] Consider submitting a PR to https://github.com/AvaloniaUI/Documentation with user documentation

Breaking changes

Obsoletions / Deprecations

Fixed issues

Part of #8944

@workgroupengineering

BrowserNativeControlHost.cs

Can be removed.

DataGrid

If unused, can be removed. Some of the code was left during porting from Silverlight.

Native and Win32

Can be removed if unused.

You can test this PR using the following package version. 11.0.999-cibuild0027494-beta. (feed url: https://pkgs.dev.azure.com/AvaloniaUI/AvaloniaUI/_packaging/avalonia-all/nuget/v3/index.json) [PRBUILDID]

You can test this PR using the following package version. 11.0.999-cibuild0027498-beta. (feed url: https://pkgs.dev.azure.com/AvaloniaUI/AvaloniaUI/_packaging/avalonia-all/nuget/v3/index.json) [PRBUILDID]


Migrate to Java 21

Purpose
Examples
Checklist

[ ] Linked to an issue
[ ] Updated the specification
[ ] Updated the changelog
[ ] Added tests
[ ] Checked native-image compatibility

Some failing tests were disabled. An issue was created to track that (https://github.com/ballerina-platform/ballerina-library/issues/7445)

@ravinperera00 We made a fix for the test failures in SQL module[1]. Please update the SQL version to 1.15.0-20241209-080300-e02c018 and enable testcases again

https://github.com/ballerina-platform/module-ballerina-sql/pull/760


Custom Domain & Netlify

Is it possible to set Github Pages Hubpress up with a custom domain on Netlify.
Netlify is a static constant host for projects on Github Pages.

Hi @greatwarlive
If you just follow the HubPress steps like you would for a normal setup with GH pages, you should then be good to go setting it up in Netlify without any further modification!
Just create a new site in Netlify and choose your repo with HubPress, use the gh-pages branch as "Branch to deploy" and continue. I just tried this on enjikaka.github.io and set up this site with Netlify; http://choreographer-eagle-74080.netlify.com/
Did you not succeed with this? :)

Hi @enjikaka
Thank you for your support. My blog is available at https://greatwarlive.netlify.com
There is only one problem, everytime I click on a post it goes to a .github.io domain. How do you sort this?

@greatwarlive in the settings of your HubPress instance, you have to set the CNAME to greatwarlive.netlify.com

Thank you @anthonny
Is there anyway that you can add sitemaps to submit to Google? Brilliant work - keep it up!

Not yet like i said here https://github.com/HubPress/hubpress.io/issues/493
But it will, i can't say when
Thank you for your kind words ❤

I think we can close this issue, right?
Thank you so much for you tests, @greatwarlive and @enjikaka, now i can explain how to use Netlify with HubPress 👍

I think we can close this issue, right?
https://www.youtube.com/watch?v=mLPklM1w5-s


Scenario "should push only the modified files" fails on 4.4 cluster because of No such file or directory in "/tmp/src/"

/kind bug

What versions of software are you using?
Operating System:
All supported
Output of odo version:
master
How did you run odo exactly?
make test-cmd-push
Actual behavior
Fails
Expected behavior
Should pass
Any logs, error output, etc?
------------------------------
odo push command tests Test push outside of the current working direcory
  should push only the modified files
  /Users/amit/go/src/github.com/openshift/odo/tests/integration/cmd_push_test.go:270

Creating a new project: wldapjazfv
Running odo with args [odo project create wldapjazfv -w -v4]
[odo]  •  Waiting for project to come up  ...
[odo] I0226 17:22:41.209372    3218 occlient.go:538] Project wldapjazfv now exists
[odo]  ✓  Waiting for project to come up [2s]
[odo]  ✓  Project 'wldapjazfv' is ready for use
[odo]  ✓  New project created and now using project: wldapjazfv
Created dir: /var/folders/c9/fb55pf_568dfd1fzj9w1v4n00000gn/T/617678467
Current working dir: /Users/amit/go/src/github.com/openshift/odo/tests/integration
Current working dir: /Users/amit/go/src/github.com/openshift/odo/tests/integration
Setting current dir to: /var/folders/c9/fb55pf_568dfd1fzj9w1v4n00000gn/T/617678467
Running git with args [git clone https://github.com/openshift/nodejs-ex /var/folders/c9/fb55pf_568dfd1fzj9w1v4n00000gn/T/617678467/nodejs-ex]
[git] Cloning into '/var/folders/c9/fb55pf_568dfd1fzj9w1v4n00000gn/T/617678467/nodejs-ex'...
Running odo with args [odo component create nodejs:latest nodejs --project wldapjazfv --context /var/folders/c9/fb55pf_568dfd1fzj9w1v4n00000gn/T/617678467/nodejs-ex --app app]
[odo] Warning: nodejs:latest is not fully supported by odo, and it is not guaranteed to work
[odo]  •  Validating component  ...
[odo]  ✓  Validating component [568ms]
[odo]
[odo] Please use `odo push` command to create the component with source deployed
Running odo with args [odo url create --port 8080 --context /var/folders/c9/fb55pf_568dfd1fzj9w1v4n00000gn/T/617678467/nodejs-ex]
[odo]  ✓  URL nodejs-8080 created for component: nodejs
[odo]
[odo] To create URL on the OpenShift Cluster, please use `odo push`
Running odo with args [odo push --context /var/folders/c9/fb55pf_568dfd1fzj9w1v4n00000gn/T/617678467/nodejs-ex]
[odo] Validation
[odo]  •  Checking component  ...
[odo]  ✓  Checking component [737ms]
[odo]
[odo] Configuration changes
[odo]  ✓  Initializing component
[odo]  •  Creating component  ...
[odo]  ✓  Creating component [2s]
[odo]
[odo] Applying URL changes
[odo]  ✓  URL nodejs-8080: http://nodejs-8080-app-wldapjazfv.apps.gamore44ci2602.devcluster.openshift.com created
[odo]
[odo] Pushing to component nodejs of type local
[odo]  •  Checking files for pushing  ...
[odo]  ✓  Checking files for pushing [3ms]
[odo]  •  Waiting for component to start  ...
[odo]  ✓  Waiting for component to start [30s]
[odo]  •  Syncing files to the component  ...
[odo]  ✓  Syncing files to the component [6s]
[odo]  •  Building component  ...
[odo]  ✓  Building component [12s]
[odo]  ✓  Changes successfully pushed to component
Running oc with args [oc get route -n wldapjazfv -l app.kubernetes.io/instance=nodejs -l app.kubernetes.io/part-of=app -o jsonpath={.items[0].spec.host}]
[oc] nodejs-8080-app-wldapjazfv.apps.gamore44ci2602.devcluster.openshift.comChecking http://nodejs-8080-app-wldapjazfv.apps.gamore44ci2602.devcluster.openshift.com, for Welcome to your Node.js
try 0 of 30
Running oc with args [oc get pods --namespace wldapjazfv --selector=deploymentconfig=nodejs-app -o jsonpath='{.items[0].metadata.name}']
[oc] 'nodejs-app-1-qhf7h'Running oc with args [oc exec nodejs-app-1-qhf7h --namespace wldapjazfv -c nodejs-app -- stat /tmp/src/server.js]
[oc] stat: cannot stat '/tmp/src/server.js': No such file or directory
[oc] command terminated with exit code 1
Running oc with args [oc get pods --namespace wldapjazfv --selector=deploymentconfig=nodejs-app -o jsonpath='{.items[0].metadata.name}']
[oc] 'nodejs-app-1-qhf7h'Running oc with args [oc exec nodejs-app-1-qhf7h --namespace wldapjazfv -c nodejs-app -- stat /tmp/src/views/index.html]
[oc] stat: cannot stat '/tmp/src/views/index.html': No such file or directory
[oc] command terminated with exit code 1
Replacing "Welcome to your Node.js application on OpenShift" with "UPDATED!" in /var/folders/c9/fb55pf_568dfd1fzj9w1v4n00000gn/T/617678467/nodejs-ex/views/index.html
Running odo with args [odo push --context /var/folders/c9/fb55pf_568dfd1fzj9w1v4n00000gn/T/617678467/nodejs-ex]
[odo] Validation
[odo]  •  Checking component  ...
[odo]  ✓  Checking component [751ms]
[odo]
[odo] Configuration changes
[odo]  •  Retrieving component data  ...
[odo]  ✓  Retrieving component data [1s]
[odo]  •  Applying configuration  ...
[odo]  ✓  Applying configuration [1s]
[odo]
[odo] Applying URL changes
[odo]  ✓  URL nodejs-8080 already exists
[odo]
[odo] Pushing to component nodejs of type local
[odo]  •  Checking file changes for pushing  ...
[odo]  ✓  Checking file changes for pushing [2ms]
[odo]  •  Waiting for component to start  ...
[odo]  ✓  Waiting for component to start [254ms]
[odo]  •  Syncing files to the component  ...
[odo]  ✓  Syncing files to the component [3s]
[odo]  •  Building component  ...
[odo]  ✓  Building component [8s]
[odo]  ✓  Changes successfully pushed to component
Checking http://nodejs-8080-app-wldapjazfv.apps.gamore44ci2602.devcluster.openshift.com, for UPDATED!
try 0 of 30
Running oc with args [oc get pods --namespace wldapjazfv --selector=deploymentconfig=nodejs-app -o jsonpath='{.items[0].metadata.name}']
[oc] 'nodejs-app-1-qhf7h'Running oc with args [oc exec nodejs-app-1-qhf7h --namespace wldapjazfv -c nodejs-app -- stat /tmp/src/views/index.html]
[oc] stat: cannot stat '/tmp/src/views/index.html': No such file or directory
[oc] command terminated with exit code 1
Running oc with args [oc get pods --namespace wldapjazfv --selector=deploymentconfig=nodejs-app -o jsonpath='{.items[0].metadata.name}']
[oc] 'nodejs-app-1-qhf7h'Running oc with args [oc exec nodejs-app-1-qhf7h --namespace wldapjazfv -c nodejs-app -- stat /tmp/src/server.js]
[oc] stat: cannot stat '/tmp/src/server.js': No such file or directory
[oc] command terminated with exit code 1
Setting current dir to: /Users/amit/go/src/github.com/openshift/odo/tests/integration
Deleting project: wldapjazfv
Running odo with args [odo project delete wldapjazfv -f]
[odo] This project contains the following applications, which will be deleted
[odo] Application app
[odo] This application has following components that will be deleted
[odo] component named nodejs
[odo] This component has following urls that will be deleted with component
[odo] URL named nodejs-8080 with host nodejs-8080-app-wldapjazfv.apps.gamore44ci2602.devcluster.openshift.com having protocol http at port 8080
[odo] No services / could not get services
[odo]  •  Deleting project wldapjazfv  ...
[odo]  ✓  Deleting project wldapjazfv [13s]
[odo]  ✓  Deleted project : wldapjazfv
Deleting dir: /var/folders/c9/fb55pf_568dfd1fzj9w1v4n00000gn/T/617678467
Setting current dir to: /Users/amit/go/src/github.com/openshift/odo/tests/integration

• Failure [117.375 seconds]
odo push command tests
/Users/amit/go/src/github.com/openshift/odo/tests/integration/cmd_push_test.go:14
  Test push outside of the current working direcory
  /Users/amit/go/src/github.com/openshift/odo/tests/integration/cmd_push_test.go:74
    should push only the modified files [It]
    /Users/amit/go/src/github.com/openshift/odo/tests/integration/cmd_push_test.go:270

    Expected
        <string>:
    not to equal
        <string>:

    /Users/amit/go/src/github.com/openshift/odo/tests/integration/cmd_push_test.go:333
------------------------------

For now i am considering this as a test blocker on 4.4, will investigate it further.

Due to https://github.com/openshift/odo/issues/2663#issuecomment-597507977, the /tmp/src folder is empty. Thus the test scenario fails because we are using hard coded values in the test script https://github.com/openshift/odo/blob/1edac87c8524ff83e49ba3c2bf4f04fcdc0b5968/tests/integration/cmd_push_test.go#L288 We need to change them and replace them with env vars.


Improved Automated cycles

V3.15: Improved Automated cycles; Added arguments for Cubotino_T.py, s_mode parameter (PiCamera V2), 'personalizations' folder

optim_moves2 fails if the solution only has two moves.
Cube status (via BGR color distance): UUUUUUDDDBFFRRRRRRLLLBFFBFFUDDUDDUDDBBFLLLLLLRRRBBFBBF
Camera warm-up, camera setting, cube status (BGR), and solution, in: 38.4 secs

Cube solution: 2 moves  U1 L2
pre optim 16
Robot moves string: not optimization type 1 needed
moves at opt1:  F1R1S3S3F3R1S3R1
len moves at opt1: 16
optim1 16
Traceback (most recent call last):
  File "Cubotino_T.py", line 3809, in <module>
    reset_camera = start_solving(solv_cycle)  # start_solving function is called
  File "Cubotino_T.py", line 3070, in start_solving
    cubeAF()                    # cube reading/solving function is called
  File "Cubotino_T.py", line 3587, in cubeAF
    HSV_detected, start_time, camera_ready_time, cube_detect_time, cube_solution_time)
  File "Cubotino_T.py", line 2668, in robot_solve_cube
    _, robot_moves, total_robot_moves = rm.robot_required_moves(solution, solution_Text)
  File "/home/pi/cubotino/src/Cubotino_T_moves.py", line 366, in robot_required_moves
    moves = optim_moves2(moves)               # removes eventual unnecessary flips
  File "/home/pi/cubotino/src/Cubotino_T_moves.py", line 274, in optim_moves2
    if F_list[-1] == 'F3' and F_list[-2] == 'F2':  # case the second-last flip is 'F3' and last flip is 'F2'
IndexError: list index out of range
(.virtualenvs) root@cubotino:/home/pi/cubotino/src#

Hi John, you're fully right.
I made a very basic mistake, now is solved.

Try this:
Align cube with Green at Front, White Up
Apply R1
Place in Cubotino, and run python Cubotino_T.py --debug
Cube solution: 1 moves  R3
Traceback (most recent call last):
  File "Cubotino_T.py", line 3816, in <module>
    reset_camera = start_solving(solv_cycle)  # start_solving function is called
  File "Cubotino_T.py", line 3077, in start_solving
    cubeAF()                    # cube reading/solving function is called
  File "Cubotino_T.py", line 3594, in cubeAF
    HSV_detected, start_time, camera_ready_time, cube_detect_time, cube_solution_time)
  File "Cubotino_T.py", line 2675, in robot_solve_cube
    _, robot_moves, total_robot_moves = rm.robot_required_moves(solution, solution_Text)
  File "/home/pi/cubotino/src/Cubotino_T_moves.py", line 358, in robot_required_moves
    moves = optim_moves2(moves)               # removes eventual unnecessary flips
  File "/home/pi/cubotino/src/Cubotino_T_moves.py", line 271, in optim_moves2
    if F_list[-1] == 'F3' and F_list[-2] == 'F2':  # case the second-last flip is 'F3' and last flip is 'F2'
IndexError: list index out of range
(.virtualenvs) root@cubotino:/home/pi/cubotino/src#

optim_moves2 crashes there is only 1 move in the solution, because F_list[-2] doesn't exist.
I think line 271 could change to
    if F_count == 2 and F_list[-1] == 'F3' and F_list[-2] == 'F2':  # case the second-last flip is 'F3' and last flip is 'F2'

Only check the F moves if you found a F-pair.

Hi John, as always you're fully right.
The proposed solution is simple and to the point: Update is just committed.
Thank you

Hi John,
on the optim_moves2 function there still was one case not covered, leading to failure :-(
I believe Latest Cubotino_T_moves.py, committed as V3.16_2, works working properly.


Rename selector to target

Also renames the other fields to no longer use
the term "selector"
fixes #202
This is a non-breaking update, as this only contains renames.
All field IDs stay the same.

This is a non-breaking update, as this only contains renames.
We need to split the python bindings to a different repo for this to be 100% true, for the Python bindings it is a breaking change. Just a heads up.


Support multiplayer

Closes #228

Note the score frame is broken in this implementation, this is the same implementation used by spectating so I opened a ticket for it #234


Content Suggestion: dcaTracker

Link to Content: https://dcatracker.com/
Briefly Describe Content: track DCA methods
Suggested Section: get-bitcoin

NACK
One of the listed exchanges supports buying alts.
https://support.coincorner.com/hc/en-us/articles/360002165173-What-coins-can-I-buy-


CRD admission rules with a name other than "local" are ignored

Environment
Platform: k3s
Kubernetes/Platform Version(s): k3s 1.24.11, Neuvector 5.1.1, Ubuntu 20.04
Describe the bug
Admission controller rules which are applied as CR (nvadmissioncontrolsecurityrule) with a metadata.name other than "local" are not visible in the Neuvector GUI and the rules are ignored by the admission controller.
Multiple CRD rules can be created, they all seem to be ignored by the admission controller.
The only way to create CRD admission rules is to create EXACTLY ONE rule with the name "local".
There is no documentation about this behavior on https://open-docs.neuvector.com.
To Reproduce
Steps to reproduce the behavior:
kubectl apply this yaml:
apiVersion: neuvector.com/v1
kind: NvAdmissionControlSecurityRule
metadata:
  name: local1
spec:
  config:
    client_mode: service
    enable: true
    mode: protect
  rules:
  - action: deny
    comment: deny forbidden
    criteria:
    - name: namespace
      op: containsAny
      path: namespace
      value: forbidden

kubectl run sleep -n forbidden alpine:latest --command sleep 99999999
Pod creation in namespace forbidden is allowed.
Expected behavior
Either

Rule should be visible in the GUI
Rule should be active

or

It should not be possible to apply more than one or invalid rules

The behavior (either way) should be documented

It's by design.
Administrator control rule doesn't have name.
All the exported administration control rules must be in the same "local" CR

Ok. Thanks. Then this issue is a documentation issue rather than a technical one.
But it's anyway confusing to be able to add lots of rules which are ignored. You should think about a solution for this imho.


OVMF PCI Host bridge error on snp-latest

Hello,
I am trying to run an AMD SEV SNP Confidential VM with a Nvidia H100 in CC mode. Specifically, I am trying to make it work with the snp-latest branch from the AMDESE/AMDSEV repo (i.e. the branch that uses Linux kernel version 6.9.0-rc7). I am hitting an error when trying to boot the guest with the PCI passthrough. The error occurs before reaching the linux kernel since it happens in the guest firmware initialization (OVMF).
Steps to reproduce
git clone https://github.com/AMDESE/AMDSEV.git
cd AMDSEV/
git checkout snp-latest

Then I patched common.sh adding the following lines (in order to add configure the kernel appropriately):
run_cmd ./scripts/config --enable CONFIG_CRYPTO_ECC
run_cmd ./scripts/config --enable CONFIG_CRYPTO_ECDH
run_cmd ./scripts/config --enable CONFIG_CRYPTO_ECDSA
run_cmd ./scripts/config --enable CONFIG_CGROUP_MISC

Installing the build depencies :
sudo apt install -y python3-venv ninja-build libglib2.0-dev python-is-python3 nasm iasl flex bison libelf-dev debhelper libslirp-dev

# From Nvidia deployment guide:
sudo apt install -y ninja-build iasl nasm flex bison openssl dkms autoconf \
zlib1g-dev python3-pip libncurses-dev libssl-dev libelf-dev libudev-dev libpci-dev \
libiberty-dev libtool libpango1.0-dev libjpeg8-dev \
libpixman-1-dev libcairo2-dev libgif-dev libglib2.0-dev git-lfs jq

Then building
./build.sh --package

I am not applying the two linux patches from the nvtrust repo (I figure they might no longer be needed since I am building a newer kernel)
$ patch -p1 -l < ../../iommu_pagefault.patch
$ patch -p1 -l < ../../iommu_pagesize.patch

Preparing the host
sudo cp kvm.conf /etc/modprobe.d/
cd snp-release-<date>/
sudo ./install.sh

Rebooting and selecting the right kernel
ubuntu@host:~$ uname -r
6.9.0-rc7-snp-host-05b10142ac6a

Following the "Preparing the Guest" steps (omitted here)
Configuring the GPU
Obtain some information
$ lspci -n -d 10de:
82:00.0 0302: 10de:2331 (rev a1)

Setting the GPU in dev CC mode and activating PCI VFIO for the device.
sudo python3 ./nvidia_gpu_tools.py --gpu=0 --query-cc-mode
sudo python3 ./nvidia_gpu_tools.py --gpu=0 --set-cc-mode=devtools --reset-after-cc-mode-switch
sudo sh -c "echo 10de 2331 > /sys/bus/pci/drivers/vfio-pci/new_id

Launch guest VM
Set the appropriate values in the vars :
export AMD_SEV_DIR=/path/to/AMDSEV/snp-release-<date>
export VDD_IMAGE=path/to/disk.qcow2

#Hardware Settings

export NVIDIA_GPU=82:00.0
export MEM=64 #in GBs
export FWDPORT=9899

Launching guest (with sev-snp and GPU passthrough)
cp $AMD_SEV_DIR/usr/local/share/qemu/OVMF_VARS.fd $AMD_SEV_DIR/usr/local/share/qemu/myguest.fd
sudo $AMD_SEV_DIR/usr/local/bin/qemu-system-x86_64 \
  -machine confidential-guest-support=sev0,vmport=off \
  -object sev-snp-guest,id=sev0,cbitpos=51,reduced-phys-bits=1 \
  -enable-kvm -nographic -no-reboot \
  -cpu EPYC-v4 -machine q35 -smp 12,maxcpus=31 -m ${MEM}G,slots=2,maxmem=512G \
  -bios $AMD_SEV_DIR/usr/local/share/qemu/OVMF_CODE.fd \
  -drive if=pflash,format=raw,unit=0,file=$AMD_SEV_DIR/usr/local/share/qemu/myguest.fd \
  -drive file=$VDD_IMAGE,if=none,id=disk0,format=qcow2 \
  -device virtio-scsi-pci,id=scsi0,disable-legacy=on,iommu_platform=true \
  -device scsi-hd,drive=disk0 \
  -device virtio-net-pci,disable-legacy=on,iommu_platform=true,netdev=vmnic,romfile= \
  -netdev user,id=vmnic,hostfwd=tcp::$FWDPORT-:22 \
  -device pcie-root-port,id=pci.1,bus=pcie.0 \
  -device vfio-pci,host=$NVIDIA_GPU,bus=pci.1 \
  -fw_cfg name=opt/ovmf/X-PciMmio64Mb,string=262144

The boot fails with an OVMF error :
[...]
ProtectUefiImage failed to create image properties record
Select Item: 0x0
FW CFG Signature: 0x554D4551
Select Item: 0x1
FW CFG Revision: 0x3
QemuFwCfg interface (DMA) is supported.
Select Item: 0x19
Select Item: 0x19
PciHostBridgeUtilityInitRootBridge: populated root bus 0, with room for 255 subordinate bus(es)
RootBridge: PciRoot(0x0)
  Support/Attr: 70069 / 70069
    DmaAbove4G: No
NoExtConfSpace: No
     AllocAttr: 3 (CombineMemPMem Mem64Decode)
           Bus: 0 - FF Translation=0
            Io: 6000 - FFFF Translation=0
           Mem: 80000000 - DFFFFFFF Translation=0
    MemAbove4G: C000000000 - FFFFFFFFFF Translation=0
          PMem: FFFFFFFFFFFFFFFF - 0 Translation=0
   PMemAbove4G: FFFFFFFFFFFFFFFF - 0 Translation=0
PciHostBridgeDxe: IntersectMemoryDescriptor: desc [FD00000000,<PHONE_NUMBER>0) type 1 cap<PHONE_NUMBER>026000 conflicts with aperture [C000000000,<PHONE_NUMBER>0) cap 1

ASSERT_EFI_ERROR (Status = Invalid Parameter)
ASSERT [PciHostBridgeDxe] /home/ubuntu/corentin/AMDSEV/ovmf/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridge.c(550): !(((INTN)(RETURN_STATUS)(Status)) < 0)

Note that the error disappears if one boots the guest without trying the pass the GPU device. Also there is no error if I keep everything but remove the option "-fw_cfg name=opt/ovmf/X-PciMmio64Mb,string=262144" (but not really useful since I cannot use the device then).
Any idea on how to solve this issue ?
Thanks

AFAIK it is caused by a too-big MMIO address space. The h100 needs at least 128GiB but 256GiB space cause the issue, so I just adjusted the value to be something in between and it worked
-fw_cfg name=opt/ovmf/X-PciMmio64Mb,string=151072 \

Thanks @benschlueter replacing the fw_cmd with yours solved the OVMF issue. I am not there yet though, with the OVMF out of the way, I can boot my OS. Now I've got errors from the Nvidia driver.
[   14.886113] nvidia: loading out-of-tree module taints kernel.
[   14.886129] nvidia: module verification failed: signature and/or required key missing - tainting kernel
[   14.886244] sev-guest sev-guest: Initialized SEV guest driver (using vmpck_id 0)
[   15.093909] nvidia-nvlink: Nvlink Core is being initialized, major device number 239

[   15.094619] ppdev: user-space parallel port driver
[   15.096579] NVRM: The NVIDIA GPU 0000:01:00.0 (PCI ID: 10de:2331)
               NVRM: installed in this system is not supported by the
               NVRM: NVIDIA 555.42.02 driver release.
               NVRM: Please see 'Appendix A - Supported NVIDIA GPU Products'
               NVRM: in this release's README, available on the operating system
               NVRM: specific graphics driver download page at www.nvidia.com.
[   15.097749] nvidia 0000:01:00.0: probe with driver nvidia failed with error -1
[   15.097799] NVRM: The NVIDIA probe routine failed for 1 device(s).
[   15.097811] NVRM: None of the NVIDIA devices were initialized.
[   15.098306] nvidia-nvlink: Unregistered Nvlink Core, major device number 239

And here is the full dmesg output : https://gist.github.com/clauverjat/2e9f46dff7665d07d4bc5f651ca3d59b
Note that I identified a potential cause for the issue. My GPU VBIOS version is <IP_ADDRESS>.01 (obtained with nvidia-smi), but a minimal version of 96.00.5E.00.00 is required according to the Nvidia deployment guide (though the verification normally comes after this step).
Looking at other issues on this repo, it seems that I might now hit the same problem as in https://github.com/NVIDIA/nvtrust/issues/31

Please upgrade the VBIOS by contacting the vendor.

Hi @Tan-YiFan
This is ongoing already. We are renting a baremetal server, so we had to ask our cloud provider which then contacted their vendor. I hope it'll happen quickly, but, reasonably, I know it might take a while before they apply the VBIOS upgrade. So in the meantime, can you confirm that an old VBIOS can result in that kind of error ? I want to be sure that I go as far as I can without the VBIOS upgrade.

Also, please note that the NVIDIA Trusted Computing Solutions (such as CC) are only currently supported on our Enterprise drivers, this currently encompasses:
550.54.14
550.54.15
550.90.07
I will get this list added to our documentation and ensure it is up to date.

Hello @rnertney,
Our system got a VBIOS update and we are now running with VBIOS version 96.00.9F.00.01. After the update, I can run the nvtrust guest tools. I ran the guest_tools/attestation_sdk/tests/SmallCombinedTest.py script and got an output with "GPU Attested Successfully", which seems promising.
However, we are unable to use the GPU for compute (GPU in ERR! state).
We've tested with two different CUDA/driver combinations:

Driver Version: 560.28.03 | CUDA Version: 12.6
Driver Version: 550.54.14 | CUDA Version: 12.4

This brings me to my first question : Is Confidential Compute (CC) compatible with the latest 560 drivers? Your last message suggests that CC might only work with the 550 drivers, but this seems a bit strange to me.
If the 560 driver is indeed supposed to work, here’s the dmesg output while the system is running driver version 560. It includes NVRM nvAssertFailed errors that are likely related to the issue: dmesg output.

Please check:

You have enabled the cc mode in the host.
Run nvidia-persistenced --uvm-persistence-mode before any GPU related command including nvidia-smi
The guest kernel has loaded aesni related kernel module

I also suggest trying 535.104.05 module.

Did you execute nvidia-smi -srs 1 (set ready state to 1)

Hi @Tan-YiFan,

Did you execute nvidia-smi conf-compute -srs 1 (set ready state to 1)

No I didn't, should I ? (I am gonna try next)
In the meantime here are the results of my test with driver 535.104.05
Test with driver 535.104.05
Summary: Nvidia-persistenced failed
Config of the guest:

OS: Ubuntu 22.04 (jammy)
Kernel: 6.9.0-snp-guest
Installed driver: 535.104.05 (as suggested)
Installed CUDA toolkit : 12.2

Guest configuration (after the proper snp kernel where installed):
wget https://us.download.nvidia.com/tesla/535.104.05/nvidia-driver-local-repo-ubuntu2204-535.104.05_1.0-1_amd64.deb
sudo dpkg -i nvidia-driver-local-repo-ubuntu2204-535.104.05_1.0-1_amd64.deb

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda-12-2

# Configuring nvidia-persistenced service
# ...

# Reboot

Result
ubuntu@ubuntu:~$ sudo systemctl status nvidia-persistenced
× nvidia-persistenced.service - NVIDIA Persistence Daemon
     Loaded: loaded (/lib/systemd/system/nvidia-persistenced.service; static)
     Active: failed (Result: exit-code) since Wed 2024-08-21 13:50:17 UTC; 5min ago
    Process: 664 ExecStart=/usr/bin/nvidia-persistenced --user nvidia-persistenced --uvm-persistence-mode --verbose (code=exited, status=1/FAILURE)
    Process: 728 ExecStopPost=/bin/rm -rf /var/run/nvidia-persistenced (code=exited, status=0/SUCCESS)
        CPU: 178ms

Aug 21 13:50:17 ubuntu systemd[1]: Starting NVIDIA Persistence Daemon...
Aug 21 13:50:17 ubuntu nvidia-persistenced[666]: Verbose syslog connection opened
Aug 21 13:50:17 ubuntu nvidia-persistenced[666]: Now running with user ID 113 and group ID 121
Aug 21 13:50:17 ubuntu nvidia-persistenced[666]: Started (666)
Aug 21 13:50:17 ubuntu nvidia-persistenced[666]: device 0000:01:00.0 - registered
Aug 21 13:50:17 ubuntu nvidia-persistenced[666]: device 0000:01:00.0 - failed to open.
Aug 21 13:50:17 ubuntu nvidia-persistenced[664]: nvidia-persistenced failed to initialize. Check syslog for more details.
Aug 21 13:50:17 ubuntu systemd[1]: nvidia-persistenced.service: Control process exited, code=exited, status=1/FAILURE
Aug 21 13:50:17 ubuntu systemd[1]: nvidia-persistenced.service: Failed with result 'exit-code'.
Aug 21 13:50:17 ubuntu systemd[1]: Failed to start NVIDIA Persistence Daemon.

ubuntu@ubuntu:~$ nvidia-smi
No devices were found

ubuntu@ubuntu:~$ sudo dmesg
# beginning of the dmesg output is omitted to save space
[   18.024330] nvidia-nvlink: Nvlink Core is being initialized, major device number 239
[   18.024344] NVRM: loading NVIDIA UNIX x86_64 Kernel Module  560.28.03  Thu Jul 18 19:32:18 UTC 2024
[   18.158345] nvidia-modeset: Loading NVIDIA Kernel Mode Setting Driver for UNIX platforms  560.28.03  Thu Jul 18 20:27:27 UTC 2024
[   18.191985] audit: type=1400 audit(1724248216.707:8): apparmor="STATUS" operation="profile_load" profile="unconfined" name="ubuntu_pro_apt_news" pid=593 comm="apparmor_parser"
[   18.205549] audit: type=1400 audit(1724248216.719:9): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/snapd/snap-confine" pid=597 comm="apparmor_parser"
[   18.205589] audit: type=1400 audit(1724248216.719:10): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/snapd/snap-confine//mount-namespace-capture-helper" pid=597 comm="apparmor_parser"
[   18.213258] [drm] [nvidia-drm] [GPU ID 0x00000100] Loading driver
[   18.226107] audit: type=1400 audit(1724248216.743:11): apparmor="STATUS" operation="profile_load" profile="unconfined" name="tcpdump" pid=596 comm="apparmor_parser"
[   18.295478] NVRM: GPU 0000:01:00.0: RmInitAdapter failed! (0x22:0x38:880)
[   18.297093] NVRM: GPU 0000:01:00.0: rm_init_adapter failed, device minor number 0
[   18.318091] [drm:nv_drm_load [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000100] Failed to allocate NvKmsKapiDevice
[   18.320482] [drm:nv_drm_register_drm_device [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000100] Failed to register device
[   18.340114] nvidia_uvm: module uses symbols nvUvmInterfaceDisableAccessCntr from proprietary module nvidia, inheriting taint.
[   18.371352] nvidia-uvm: Loaded the UVM driver, major device number 237.
[   18.740885] NVRM: GPU 0000:01:00.0: RmInitAdapter failed! (0x22:0x38:880)
[   18.743372] NVRM: GPU 0000:01:00.0: rm_init_adapter failed, device minor number 0
[   18.819872] NVRM: GPU 0000:01:00.0: RmInitAdapter failed! (0x22:0x38:880)
[   18.821706] NVRM: GPU 0000:01:00.0: rm_init_adapter failed, device minor number 0
[   19.292517] loop3: detected capacity change from 0 to 8
[   50.323402] NVRM: GPU 0000:01:00.0: RmInitAdapter failed! (0x22:0x38:880)
[   50.325597] NVRM: GPU 0000:01:00.0: rm_init_adapter failed, device minor number 0
[   83.061967] NVRM: GPU 0000:01:00.0: RmInitAdapter failed! (0x22:0x38:880)
[   83.066463] NVRM: GPU 0000:01:00.0: rm_init_adapter failed, device minor number 0
[   85.968745] NVRM: GPU 0000:01:00.0: RmInitAdapter failed! (0x22:0x38:880)
[   85.973705] NVRM: GPU 0000:01:00.0: rm_init_adapter failed, device minor number 0
[   86.102415] NVRM: GPU 0000:01:00.0: RmInitAdapter failed! (0x22:0x38:880)
[   86.107021] NVRM: GPU 0000:01:00.0: rm_init_adapter failed, device minor number 0
[   86.171687] NVRM: GPU 0000:01:00.0: RmInitAdapter failed! (0x22:0x38:880)
[   86.173727] NVRM: GPU 0000:01:00.0: rm_init_adapter failed, device minor number 0
[   86.271069] NVRM: GPU 0000:01:00.0: RmInitAdapter failed! (0x22:0x38:880)
[   86.274944] NVRM: GPU 0000:01:00.0: rm_init_adapter failed, device minor number 0
[   86.381771] NVRM: GPU 0000:01:00.0: RmInitAdapter failed! (0x22:0x38:880)
[   86.386366] NVRM: GPU 0000:01:00.0: rm_init_adapter failed, device minor number 0
[   86.475908] NVRM: GPU 0000:01:00.0: RmInitAdapter failed! (0x22:0x38:880)
[   86.480248] NVRM: GPU 0000:01:00.0: rm_init_adapter failed, device minor number 0
[  379.333352] NVRM: GPU 0000:01:00.0: RmInitAdapter failed! (0x22:0x38:880)
[  379.338595] NVRM: GPU 0000:01:00.0: rm_init_adapter failed, device minor number 0
[  382.846493] NVRM: GPU 0000:01:00.0: RmInitAdapter failed! (0x22:0x38:880)
[  382.850442] NVRM: GPU 0000:01:00.0: rm_init_adapter failed, device minor number 0

Additional information
535.104.05-nvidia-bug-report.log.gz

You should execute nvidia-smi conf-compute -srs 1 before you run python code.
The log shows driver version is 560.28.03. Please uninstall existing driver before install a new one. After reboot, you would see the latest-installed version.
Cuda 12.3 (driver 54x.xx) and 12.5 (driver 56x.xx) are merging new features of nvidia cc and thus not recommended for install. Cuda 12.2.2 (driver 535.104.05) and 12.4 (driver 550.xx) are stable regarding cc feature, while 12.4 has better performance in cc.

You should execute nvidia-smi conf-compute -srs 1 before you run python code.

Oh, that did the trick! Setting the Confidential Compute GPU to Ready State was exactly what I needed to do.
I retried on Ubuntu Jammy with the NVIDIA driver version 550.90.07 and CUDA 12.6, and after running the nvidia-smi conf-compute -srs 1 command, my script executed successfully.
Surprisingly, I had run almost identical instructions on a system with VBIOS <IP_ADDRESS>.1C (so without your command), and I could execute the script. This makes me wonder if I might have inadvertently triggered the Ready State in some other way, or if perhaps older VBIOS versions don’t require this step to enable the GPU?
In any case, it’s great to see everything working with driver 550.90.07.
That said, I’m still seeing the following kernel errors in dmesg:
[   19.441219] ACPI Warning: \_SB.PCI0.S20.S00._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20230628/nsarguments-61)
[   19.703498] loop3: detected capacity change from 0 to 8
[   22.302161] NVRM: nvAssertFailed: Assertion failed: 0 @ g_kern_gmmu_nvoc.h:1967
[   22.302173] NVRM: nvAssertFailed: Assertion failed: 0 @ g_kern_gmmu_nvoc.h:1967

I don't know what to make of them... Is it expected ? Should I try to get rid of these?
Thanks for your help!

The log shows driver version is 560.28.03. Please uninstall existing driver before install a new one. After reboot, you would see the latest-installed version.

Hmm, I shared the logs from different attempts with different VM and configuration, which log are you talking about? If you are talking about  the dmesg output from this message :

If the 560 driver is indeed supposed to work, here’s the dmesg output while the system is running driver version 560. It includes NVRM nvAssertFailed errors that are likely related to the issue: dmesg output.

Then this is normal driver version 560 is expected. But in all cases the driver announced should match the logs.

Please uninstall existing driver before install a new one. After reboot, you would see the latest-installed version.

The new attempt I did today was on fresh VM to make sure of the version in use.
Anyway, thanks for providing information about the recommended drivers for using CC mode. I will stick to driver 550.xx then.

[   19.441219] ACPI Warning: _SB.PCI0.S20.S00._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20230628/nsarguments-61)
[   19.703498] loop3: detected capacity change from 0 to 8
[   22.302161] NVRM: nvAssertFailed: Assertion failed: 0 @ g_kern_gmmu_nvoc.h:1967
[   22.302173] NVRM: nvAssertFailed: Assertion failed: 0 @ g_kern_gmmu_nvoc.h:1967

These lines are expected.
Setting cc mode to devtools (instead of on) would automatically set ready state to on. Executing the attestation script would also set cc mode to on (you can search "ready" in guest_tools/ of this repo).
The log of 535.104.05 seems to have 560.28.03 installed. But that doesn't matter.
You can close the issue if everything goes well.

These lines are expected.

That's reassuring.

Setting cc mode to devtools (instead of on) would automatically set ready state to on. Executing the attestation script would also set cc mode to on (you can search "ready" in guest_tools/ of this repo).

Makes sense. That could explain my previous experience.

The log of 535.104.05 seems to have 560.28.03 installed. But that doesn't matter.

Indeed you're right. I missed that. Though since it works now it doesn't matter.
Thanks for your help @Tan-YiFan


Parent-to-child binding example: EventCallback confusing/not needed.

In the paragraph 'Parent-to-child binding with component parameters' the use of YearChanged EventCallback is confusing because it's not needed to let the updated year flow down to the child element, what the example tries to show. Setting  is enough to show updated years in the child.
If in the Child component editing the year is made possible, using the EventCallback would make sense. But this is shown in the paragraph following (Child-to-parent binding) in another example concerning editing of a password.

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

ID: b211df59-e1c9-86c0-c904-31fa3c361e6d
Version Independent ID: 3f912dfc-5ba5-6c6c-ba93-1ae78508a5cc
Content: ASP.NET Core Blazor data binding
Content Source: aspnetcore/blazor/components/data-binding.md
Product: aspnet-core
Technology: aspnetcore-blazor
GitHub Login: @guardrex
Microsoft Alias: riande

I agree @mdekok ... and I'm upset about the last round of updates, which has made this content worse in some ways (e.g., headings and examples). I greatly appreciate your feedback and patience.
@captainsafia ... May I have your help to sort this out on the PR? AFAICT ...

The first heading should just be Bind to a property ... or something along those lines with a simple example that performs a @bind to a property in a single component.

The two component examples here across these two sections should be chained bind examples. The first one being a simple example, while the second one is more complex. The first example needs to invoke the delegate, either ...
private Task Update()
{
    return YearChanged.InvokeAsync(...);
}

... or ...
private async Task Update()
{
    await YearChanged.InvokeAsync(...);
}

I'll put up the PR now and we can resolve this ... hopefully once and for all. I'll ping on the PR.


Module option request: configuring weston for SDDM

Project description
I've determine a way to rotate the SDDM Wayland login display with Weston documented here https://github.com/crftbt/NixOSSDDMWaylandRotate/. Is there a better way to do this? Ideally a services.weston.config or something similar to modify the existing weston.ini would remove the need for a rw copy of the weston.ini.
Metadata

homepage URL: https://gitlab.freedesktop.org/wayland/weston
source URL: https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/applications/window-managers/weston/default.nix#L74
license: mit
platforms: i686-linux, aarch64-linux, x86_64-linux

Add a :+1: reaction to issues you find important.

Currently this is how the config file is generated:
https://github.com/NixOS/nixpkgs/blob/ef5142ec5bf85037a16572da3f4d59085833aad0/nixos/modules/services/display-managers/sddm.nix#L112-L126
which you can use this as a starting point to set the compositor command (services.displayManager.sddm.wayland.compositorCommand)
CC @peterhoeg @K900 for input on how they want to handle this

Generally, wrongly rotated screens should be fixed at DRM level, not with hacks like these.

Generally, wrongly rotated screens should be fixed at DRM level, not with hacks like these.

Not really sure what this means. Would you provide some more guidance to help me understand?

Do you have a device where the display orientation is incorrect? Or is your monitor physically rotated from its normal orientation?

Yes

So which is it?

The goal is to update the weston.ini configuration file in NixOS. See original post for details.

This is not a good way to interact with developers from the NixOS project, consider changing your ways or we can close the issue here, to be honest.

This is not a good way to interact with developers from the NixOS project, consider changing your ways or we can close the issue here, to be honest.

Consider a monitor setup where one monitor is manually rotated to portrait orientation. Usually monitors don't come with built-in settings for rotation of the displayed screen, so the software must make that adjustment.
I wouldn't consider that a "hack" as it's just a customization of the weston monitor setup.
When using some XDisplay compositor it's recommended to just use the DisplayCommand= setting in the /etc/ssd.conf pointing to a script that executes some xrandr commands. The problem is that when the compositor is using wayland that script isn't called.
So the idea is to modify the weston.ini config itself.


Removed off by one error.

Right now max_moves 9 means the agent is allowed to do 10 moves.

Hi,
After testing, it seems to me that max_moves = 9 lets the agent perform 9 actions.
Maybe the fact that there is already a fake action in action_history can be misleading.


Use vpiNoDelay flag for vpiStringVar assignments.

Fixes #1014.

Thanks for the patch @cmarqu and thanks for the review @eric-wieser! I've opened https://github.com/potentialventures/cocotb/issues/1024 to explore using vpiNoDelay more.


"Prepare Chromium" utility

I wrote a little utility for myself to prepare Chromium for use by W::M::C:
https://github.com/sdondley/WWW-Mechanize-Chrome-PrepareChromium
Might be useful to others with same set up as me:

MacOS
I have a copy of Chromium installed exclusively for use by W::M::C.

I haven't written it with the public in mind and it has some custom code specific to me. But if you download it, you can get it to work with minimal hacking. Specifically, the internal _quit function uses some custom code for use by me to run a wrapper script for the osascript function. You will definitely want to change this to something normal like:
system ("osascript -e 'quit app "Chromium"'}); # this is untested
There isn't a lot to this module and can be easily adapted to other OSes and browser configurations.

Oops, forgot to make repo public. It's now visible to public.


[Pandemonium] Make the platform standalone

This makes the platform standalone, requiring no changes to the engine itself.
I wasn't able to test the web (and sqlite) functionality as apparently a switch will not connect to a network if it doesn't have internet. If sqlite has issues with the platform layer being in a different compilation unit you might need to revert https://github.com/Relintai/platform_homebrew_switch/commit/925f774455db2bc1b48969abf7a9d03d9d987919 .
Note that this will only build with pandemonium master. (In a few days I'm planning a new patch release (4.2.1), this will work with that aswell.)
Full commit log is available here: https://github.com/Relintai/platform_homebrew_switch/tree/pandemonium_dev
(This is for the Pandemonium branch)

I feel like this needs a thorough review, but it is a much appreciated change! Thank you very much.
By the way, you can just put [Pandemonium] in the title rather than a notice in the description, for future PRs.

I thought this was merged already. 🤔

same


After successful login - it is unclear what [File -> Accounts] is supposed to do or show?

We should add text to dialog and tell how they can add accounts to list

added in https://github.com/datafund/fairos-fuse/pull/102


Fix bug when using karma command with mention

Using the scan command in the following way is expected to work:
?karma @user
But this message is showing in the console:
DEBUG:bot.commands.karma_command:Member <@4440287172636935> could not be found in guild

On the karma command, instead of expecting a string we should be expecting a discord.Member. This would allow discord.py to handle the user lookup for us.

Using the discord.Member solution was almost perfect, but there was an edge-case where if the member cannot be found, None would be returned. This was resulting in the same behavior as using the karma command with no user (hence yourself). I've adjusted the code to instead check if the target string is of the format ^<@(\d+)>$, and if so, extract the user id from that message.


I get "The entered marketplace URL is not valid" if I click ACCOUNT->Subscriptions

Customer is logged in on Marketplace
click ACCOUNT->Subscription
a error message is shown

I have Installed Internal Mode

The problem is because you have used estgoetz as machine name while logging in to marketplace but you base_url property in configuration settings is estgoetz.intern.est...
You have to use address which is set as base_url in configuration settings while accessing the application.


feat(safari): Implement macOS launcher screen

Acceptance Criteria

The macOS launcher app should reflect the designs here.
When a user hits the Enable button, the app is enabled.
When a user clicks the "Need help?" link, it should open https://help.getpocket.com/article/1042-using-pocket-for-safari

https://help.getpocket.com/article/1042-using-pocket-for-safari


0.2.12 casts pd.Int32Dtype() to float64

0.2.12 casts pd.Int32Dtype() to float64

Environment
OS: Windows 7
Python:  3.8.2
Package versions
ipython==7.15.0
ipython-genutils==0.2.0
jupyter-client==6.1.3
jupyter-core==4.6.3
jupyterlab==2.1.4
jupyterlab-server==1.1.5
notebook==6.0.3
pandasgui @ file:///C:/Users/Ray/Desktop/PandasGUI-develop.zip
plotly==4.14.3
PyQt5==5.15.4
PyQt5-Qt5==5.15.2
PyQt5-sip==12.8.0
PyQtWebEngine==5.15.4
PyQtWebEngine-Qt5==5.15.2
In addition, runs fine when opening:
PandasGUI INFO — pandasgui.gui — Opening PandasGUI
but when closing the GUI I get:
[8684:4300:0701/165045.388:ERROR:gles2_cmd_decoder.cc(18938)] [.DisplayCompositor]GL ERROR :GL_INVALID_OPERATION : DoCre
ateAndTexStorage2DSharedImageINTERNAL: invalid mailbox name
[8684:4300:0701/165045.390:ERROR:gles2_cmd_decoder.cc(18959)] [.DisplayCompositor]GL ERROR :GL_INVALID_OPERATION : DoBeg
inSharedImageAccessCHROMIUM: bound texture is not a shared image
[8684:4300:0701/165045.394:ERROR:gles2_cmd_decoder.cc(10716)] [.DisplayCompositor]RENDER WARNING: texture bound to textu
re unit 0 is not renderable. It might be non-power-of-2 or have incompatible texture filtering (maybe)?
[8684:4300:0701/165045.402:ERROR:gles2_cmd_decoder.cc(18988)] [.DisplayCompositor]GL ERROR :GL_INVALID_OPERATION : DoEnd
SharedImageAccessCHROMIUM: bound texture is not a shared image
[8684:4300:0701/165045.403:ERROR:gles2_cmd_decoder.cc(18938)] [.DisplayCompositor]GL ERROR :GL_INVALID_OPERATION : DoCre
ateAndTexStorage2DSharedImageINTERNAL: invalid mailbox name
[8684:4300:0701/165045.416:ERROR:gles2_cmd_decoder.cc(18959)] [.DisplayCompositor]GL ERROR :GL_INVALID_OPERATION : DoBeg
inSharedImageAccessCHROMIUM: bound texture is not a shared image
[8684:4300:0701/165045.420:ERROR:gles2_cmd_decoder.cc(10716)] [.DisplayCompositor]RENDER WARNING: texture bound to textu
re unit 0 is not renderable. It might be non-power-of-2 or have incompatible texture filtering (maybe)?
[8684:4300:0701/165045.438:ERROR:gles2_cmd_decoder.cc(18988)] [.DisplayCompositor]GL ERROR :GL_INVALID_OPERATION : DoEnd
SharedImageAccessCHROMIUM: bound texture is not a shared image
[8684:4300:0701/165045.445:ERROR:gles2_cmd_decoder.cc(18938)] [.DisplayCompositor]GL ERROR :GL_INVALID_OPERATION : DoCre
ateAndTexStorage2DSharedImageINTERNAL: invalid mailbox name
[8684:4300:0701/165045.448:ERROR:gles2_cmd_decoder.cc(18959)] [.DisplayCompositor]GL ERROR :GL_INVALID_OPERATION : DoBeg
inSharedImageAccessCHROMIUM: bound texture is not a shared image
[8684:4300:0701/165045.451:ERROR:gles2_cmd_decoder.cc(10716)] [.DisplayCompositor]RENDER WARNING: texture bound to textu
re unit 0 is not renderable. It might be non-power-of-2 or have incompatible texture filtering (maybe)?
[8684:4300:0701/165045.455:ERROR:gles2_cmd_decoder.cc(18988)] [.DisplayCompositor]GL ERROR :GL_INVALID_OPERATION : DoEnd
SharedImageAccessCHROMIUM: bound texture is not a shared image
[8684:4300:0701/165045.472:ERROR:gles2_cmd_decoder.cc(18938)] [.DisplayCompositor]GL ERROR :GL_INVALID_OPERATION : DoCre
ateAndTexStorage2DSharedImageINTERNAL: invalid mailbox name
[8684:4300:0701/165045.475:ERROR:gles2_cmd_decoder.cc(18959)] [.DisplayCompositor]GL ERROR :GL_INVALID_OPERATION : DoBeg
inSharedImageAccessCHROMIUM: bound texture is not a shared image
[8684:4300:0701/165045.479:ERROR:gles2_cmd_decoder.cc(10716)] [.DisplayCompositor]RENDER WARNING: texture bound to textu
re unit 0 is not renderable. It might be non-power-of-2 or have incompatible texture filtering (maybe)?
[8684:4300:0701/165045.482:ERROR:gles2_cmd_decoder.cc(18988)] [.DisplayCompositor]GL ERROR :GL_INVALID_OPERATION : DoEnd
SharedImageAccessCHROMIUM: bound texture is not a shared image
[8684:4300:0701/165045.485:ERROR:gles2_cmd_decoder.cc(18938)] [.DisplayCompositor]GL ERROR :GL_INVALID_OPERATION : DoCre
ateAndTexStorage2DSharedImageINTERNAL: invalid mailbox name
[8684:4300:0701/165045.489:ERROR:gles2_cmd_decoder.cc(18959)] [.DisplayCompositor]GL ERROR :GL_INVALID_OPERATION : DoBeg
inSharedImageAccessCHROMIUM: bound texture is not a shared image
[8684:4300:0701/165045.513:ERROR:gles2_cmd_decoder.cc(10716)] [.DisplayCompositor]RENDER WARNING: texture bound to textu
re unit 0 is not renderable. It might be non-power-of-2 or have incompatible texture filtering (maybe)?
[8684:4300:0701/165045.516:ERROR:gles2_cmd_decoder.cc(18988)] [.DisplayCompositor]GL ERROR :GL_INVALID_OPERATION : DoEnd
SharedImageAccessCHROMIUM: bound texture is not a shared image
[8684:4300:0701/165045.520:ERROR:gles2_cmd_decoder.cc(18938)] [.DisplayCompositor]GL ERROR :GL_INVALID_OPERATION : DoCre
ateAndTexStorage2DSharedImageINTERNAL: invalid mailbox name
[8684:4300:0701/165045.539:ERROR:gles2_cmd_decoder.cc(18959)] [.DisplayCompositor]GL ERROR :GL_INVALID_OPERATION : DoBeg
inSharedImageAccessCHROMIUM: bound texture is not a shared image
[8684:4300:0701/165045.542:ERROR:gles2_cmd_decoder.cc(10716)] [.DisplayCompositor]RENDER WARNING: texture bound to textu
re unit 0 is not renderable. It might be non-power-of-2 or have incompatible texture filtering (maybe)?
[8684:4300:0701/165045.546:ERROR:gles2_cmd_decoder.cc(18988)] [.DisplayCompositor]GL ERROR :GL_INVALID_OPERATION : DoEnd
SharedImageAccessCHROMIUM: bound texture is not a shared image

I'm unable to reproduce:

Can you share the CSV and code that results in your problem?

Shoot, I think the re-cast problem is my bad
df = pandas.read_csv('df_tmp.csv')
creates float64s.
Should I delete this issue?
I do still get GUI errors after closing the latest version - I could make another for that.

@rjsdotorg No problem yeah I'll close this, make a new one for the other problem (which seems to be Chromium logs from the embedded web browser used for the Grapher, we can discuss in the new issue)


Bugfix/refactorings

Hi,
Most of it is documentation and some refactorings.
Most significant might be the change on GUIState class.
As from what I understood you wanted it to be a Singleton to which I totally agree,
so I made it an enum. In my opinion synchronization of those statics can be omitted.
For logging (I should have done that on a feature branch sorry for that ;-)) I chose
org.apache.commons.logging.Log;
and
org.apache.commons.logging.LogFactory;
If you like we could have a short skype to discuss things....
In this case I would send you my contact details via mail.

Coverage increased (+2.7%) to 44.601% when pulling b1c1ada1d805437404ddea5b4d23b9a286bd3028 on bugfix/refactorings into 50b69d3c905231e79c9af874f702a33218b87d61 on master.

Cool. Concerning the (I call it) Josh-Bloch-Style singleton I am with you.
Concerning the Logging I prefer using slf4j - since this is a supporting lib to be embedded in some other app, the user should decide which logging-framework he is using (in spring boot usually logback).
Send me your contact. I'll add you when I'm in the office.


Feature-Request: pipewire module

May you please add PipeWire support?

Or maybe if anyone has gotten anything to work they could post here? Even with pipewire-pulse installed, the pulse module doesn't work, which surprised me.

@pkulak may you please give #937 a try?

Or maybe if anyone has gotten anything to work they could post here? Even with pipewire-pulse installed, the pulse module doesn't work, which surprised me.

I find out it is working if you restart waybar

For me, waybar-pulseaudio works fine with pipewire-pulse. But somehow, it doesn't recognize if I connect a bluetooth device (e.g. my Apple Air Pods Pro) and doesn't switch to the respective Icon specified in format-bluetooth in the waybar config.

For me, waybar-pulseaudio works fine with pipewire-pulse. But somehow, it doesn't recognize if I connect a bluetooth device (e.g. my Apple Air Pods Pro) and doesn't switch to the respective Icon specified in format-bluetooth in the waybar config.

If pipewire-pulse isn't exposing the bluetooth info in the same way as native PulseAudio, I think that's PipeWire's bug (or missing feature).
That said, a native PipeWire module is probably still a good idea to get access to things like latency data that could be useful in a status bar, but wouldn't be available in the PulseAudio compatibility layer.

If pipewire-pulse isn't exposing the bluetooth info in the same way as native PulseAudio, I think that's PipeWire's bug (or missing feature).
That said, a native PipeWire module is probably still a good idea to get access to things like latency data that could be useful in a status bar, but wouldn't be available in the PulseAudio compatibility layer.

For me, waybar-pulseaudio works fine with pipewire-pulse. But somehow, it doesn't recognize if I connect a bluetooth device (e.g. my Apple Air Pods Pro) and doesn't switch to the respective Icon specified in format-bluetooth in the waybar config.

Hmm... not sure what's different with my setup. For me, the module has been empty since I switched to pipewire-pulse.
https://github.com/pkulak/dotfiles/blob/master/.config/waybar/config

For me, waybar-pulseaudio works fine with pipewire-pulse. But somehow, it doesn't recognize if I connect a bluetooth device (e.g. my Apple Air Pods Pro) and doesn't switch to the respective Icon specified in format-bluetooth in the waybar config.

Hmm... not sure what's different with my setup. For me, the module has been empty since I switched to pipewire-pulse.
https://github.com/pkulak/dotfiles/blob/master/.config/waybar/config

Make sure your PipeWire version is up to date I guess? PipeWire is under heavy development, and regularly gets new features and fixes. Latest is 0.3.20, and the only issue I'm seeing is Waybar isn't showing Bluetooth info.

Make sure your PipeWire version is up to date I guess? PipeWire is under heavy development, and regularly gets new features and fixes. Latest is 0.3.20, and the only issue I'm seeing is Waybar isn't showing Bluetooth info.

I had to rebuild Waybar-git after installing pipewire-pulseaudio on FC33, but works fine for volume display and control after doing so.

I had to rebuild Waybar-git after installing pipewire-pulseaudio on FC33, but works fine for volume display and control after doing so.

Anyway we have pipewire-pulse
Is Waybar working with it?

Anyway we have pipewire-pulse
Is Waybar working with it?

works fine for me

Anyway we have pipewire-pulse
Is Waybar working with it?

Doesn't work for me.  Always shows 100% volume whatever the real volume is and does not adjust the volume on scroll.

I'm on pw 0.3.23 too, works fine for me (and has for months).

On waybar 0.9.7 pulseaudio module works normally with pipewire.

On pipewire 0.3.28 and waybar 0.9.7,
removing these two lines solved the issue for me
...
            "format-bluetooth": "{volume}% {icon} {format_source}",
            "format-bluetooth-muted": " {icon} {format_source}",

Waybar wouldn't launch otherwise

I found out that pulseaudio module doesn't like the pipewire-pulse daemon restart and stops working after that.

Anyway we have pipewire-pulse
Is Waybar working with it?

Doesn't work for me. Always shows 100% volume whatever the real volume is and does not adjust the volume on scroll.

default source/sink probably got fucked check to make sure
personally for me, the headphones icon sometimes shows and sometimes doesn't, especially when selecting different codecs. Usually always shows up with aptX [HD] codec, but only sometimes shows with SBC and AAC codecs (selected in pavucontrol). A native pipewire module would be quite nice and would at least be a step in not being forced to use a Pulse server

default source/sink probably got fucked check to make sure

This problem only appeared when restarting pipewire-pulse. And since pipewire became stable enough I don't need to restart it from time to time, this is not a problem.

personally for me, the headphones icon sometimes shows and sometimes doesn't

For me it never showed. Even when I used pulseaudio.

This problem only appeared when restarting pipewire-pulse

For me, reloading Sway (which also relaunches Waybar) fixed it. When restarting pipewire, it did freeze like that, but unfroze after a reload

For me, reloading Sway (which also relaunches Waybar) fixed it.

Of course id did. Why wouldn't it? I start waybar as systemd user unit, so for me restarting waybar is a matter of systemctl --user restart waybar.

on a void install (sway & no dbus) waybar pulse sound control functions with pipewire-pulse but in the absence of a microphone it shows 100% microphone on the bar.
pavucontrol shows no input devices

Why close this issue? Is it fixed? I don't see anything like that in waybar code.

pw-volume is native PipeWire volume level changer. It can be added as Waybar module

@Alexays Why close this issue? Is it fixed?

@mizzunet better to use wpctl util. It comes with WirePlumber.

I commented here to point out my desire for a native pipewire module (i.e. not using pipewire-pulse)

This issue probably shouldn't have been closed. This hasn't been fixed, I use waybar with a different wm than sway, and there's no easy way to simply reload it, and I don't feel like hacky workarounds are the right solution.
The volume indicator often freezes when I enable EasyEffects, for example, killing and relaunching waybar seems to be the only temporary fix I've found so far.

https://github.com/Alexays/Waybar/wiki/Module:-WirePlumber

I use PipeWire, but don't use WirePlumber, so this is useless for me.

@eternal-sorrow

I use PipeWire, but don't use WirePlumber, so this is useless for me.

Ngl I actually laughed when I saw all those thumbs down. I don't know if you are joking or not so I'll just tell you that wireplumber is a tool to manage pipewire my dude.
So, yes, wireplumber is in fact not useless for you.

No, wireplumber is uselesss for me. I use pipewire-media-session to manage my pipewire daemon.

Pipewire-media-session is succeeded by wireplumber. Media session is the example implementation. I would very highly recommend moving to it (it's 2 lines in your config)

I won't install wireplumber because it requires lua-5.4. If it lowered it's requirements to lua 5.1, I'd consider it, but that's unlikely. Or if LuaJIT supported Lua 5.4, which is even less likely. So, I'll stick with media-session until I'll be forced to move.

I won't install wireplumber because it requires lua-5.4

This reasoning makes zero sense. 5.3 is supported by WirePlumber. Lua 5.3 is halfway to being a legal adult. You've had 9 years to switch... and something tells me @Alexays isn't gonna bend to the will of one random kid who cares so deeply about getting a 1% performance boost on an 18 year old version of a programming language. (sidenote: newer versions of Lua are faster than 5.1 with LuaJIT)

I'm not talking about performance here. I just don't want to have anything to do with Lua versions higher than 5.2. The reasoning was stated multiple times by Mike Pall (the developer of LuaJIT). In short - the design is awful. I'm appaled that WirePlumber developers decided to support only Lua 5.3+ while most opensource projects still support 5.1. That's why I don't want to install it.

No need to support media-session. I only ask to support pipewire.

You sacrifice nothing by installing

That's a very dangerous notion, no matter what follows this.

No need to support media-session. I only ask to support pipewire.

As far as I remember it needs a media session for this. Pipewire relies on the media server architecture.

You sacrifice nothing by installing

That's a very dangerous notion, no matter what follows this.

I disagree. A programming language you never use that takes up a couple megabytes doesn't cost you anything unless you're absolutely fighting for every byte of space.

As far as I remember it needs a media session for this

Pipewire itself needs it, yes. The software that talks to pipewire via it's native protocol - doesn't.
Wireplumber module circumvents the use of pipewire native protocol by talking to the wireplumber itself through DBus.

I disagree

Okay.


Incompatibility between package_info_plus v7.0.0 and sentry v7.19.0

Problem Statement
Can someone take a look and possibly make latest sentry compatible package_info_plus v7.0.0?
Thanks.
Solution Brainstorm
No response
Are you willing to submit a PR?
None

Duplicate of https://github.com/getsentry/sentry-dart/issues/1974

Maybe someone from the Sentry team can rename the other issue so it is easier to find.

hey we will do a 7.20.0 release today so this should be out very soon

Fixed now in 7.20.0


Restore benefits-if-you-are-abroad

LGTM :+1:

I'm a bit slow on the uptake, but it would be good if you could explain a bit about why it's been brought back and/or maybe link to a PT story.


Canceled jobs don't clean up networks

We've discovered that currently running jobs using this plugin, when canceled, clean up their containers but don't clean up the networks that were created.  They are cleaned up when the job runs successfully.
This has resulted in our build server repeatedly breaking due to no IP space being left.

@jdotjdot we had similar issue as well, but as a workaround we created a pre-exit hook and deleted the  networks using a script
DOCKER_NETWORKS=$(docker network ls -f "name=buildkite${BUILDKITE_JOB_ID//-}" -q)
if [ -n "$DOCKER_NETWORKS" ]; then
  docker network rm $DOCKER_NETWORKS
fi

Sorry about that @jdotjdot / @praveensastry. Currently this plugin is executed as a single command hook, so if it's cancelled it will be interrupted and not do the cleanup.
I think it would make a lot of sense to move the cleanup to a pre-exit, along the lines of what @praveensastry did above, as the pre-exit will be run on cancel.


Update to use slinky 0.2.0

Would really like to use this with the latest slinky release! Happy to provide a PR if you'd give a couple of pointers on what needs to be done...

The changes shouldn't be too big, just need to replace Component with ComponentWrapper. Might want to wait on making a PR for a couple of days though, Slinky 0.3.0 is coming soon!


Enhancement to the forms component: error validation

Current documentation for error validation: http://www.patternfly.org/pattern-library/forms-and-controls/help-on-forms/#overview
Latest forms design PDF (See page 1)

[x] Interaction design requirements
[x] Visuals
[ ] First checkpoint complete and approved
[ ] CSS
[ ] React
[ ] Second checkpoint complete and approved

Contacts:

IxD
Visual
CSS

This will be addressed as part of #200 See requirements there.

Hi @mcarrano  Is it necessary to submit jquery code implementation for "errors and validation" pattern?

Not sure I understand your question @dabeng . We are not doing jquery implementations for PatternFly-Next.

Updated with the latest PDF above.

@kybaker @mceledonia  when implementing the help text for errors I've noticed that the standard help text uses $pf-color-black-700 can we change this to $pf-color-black-600? We can add the new colour in the global variables but wanted to make sure we needed it first.

@matthewcarleton I am okay with that change.


Test removing snyk

Coverage remained the same at 77.948% when pulling df524e7523adb392514a9654e051c18c72419da7 on test into 05fe063b345a5b03771d380093891e192016344b on master.


Dataplane get_segment_state() Api call fails when gap between segments is too large

In this example I was running chunk sizes of 60s with 25fps. Meaning every chunk had 1500 featurer results to return. The segment state api call returns all the data back to the last labelled segment. So when this amount of data becomes to large the API returns a 413 error.
Running MRE v2.0.0
Logs from Segmenter plugin lambda

Logs from dataplane-APIHandler

Doesn't seem to be a problem at the start of the video as when State = None the api only returns featurer data from the current chunk?

Hi @BenvanNoorden, thanks for bringing this issue to our attention! It looks like when there are lots of data outputted by the dependent plugins of the segmentation plugin (either due to higher processing fps or bigger gaps between segments or both), the get_segment_state API is possibly hitting the Lambda response payload limit (which is a hard limit). To work around this issue, we could add pagination support in the get_segment_state API (and also in other APIs that retrieve data from the dependent plugins). We have taken this as an action item and will follow-up with more information once we start working on a fix.
We understand that your plugin is processing 25 fps for every video chunk. To keep the cost and latency low, the processing fps is typically configured with a smaller value (5 fps or sometimes even 1 fps) when creating a profile in MRE which every plugin in the profile would then receive this config as a part of their input payload for the developer to use. So, is there a specific reason why your plugin needs to process 25 frames per second? Thanks!

Hi @BenvanNoorden! Pagination support for all the Dataplane helper APIs (such as the get_segment_state) was recently added as a part of v2.5.0 release of MRE (https://github.com/awslabs/aws-media-replay-engine/blob/main/CHANGELOG.md). This should help overcome the HTTP 413 error when the amount of data to be returned becomes too large. Please upgrade MRE to v2.5.0 by following this guide - https://github.com/awslabs/aws-media-replay-engine#upgrading and as always, feel free to reach out to us if you have any questions/issues. Thanks!


Use the more naive crate name to support renaming

Fixes #834
::defmt points to the crate called defmt. This is nice to use because it avoids bad renames. One example I saw was use mini_serde as serde.
However, people have started renaming the crate in their own crates. Notably, embedded-hal does this which renames it defmt-03.
With the inclusion of defmt in these kinds of foundational crates, they will want to be able to support multiple defmt versions at the same time and they kinda need the renaming. (I don't see another way to do it)
Previously before #800 this all worked, but this PR changed it from defmt to ::defmt which breaks code. (And defmt released this as a minor update, so everyone who does cargo update will get this).
This PR simply reverts that.
Also note that ::defmt isn't even used everywhere. It was a mix. With this PR it's all the same (as far as I can see).

Btw, I suggest merging this an immediately publishing it as version 0.3.8 since the last version breaks a lot of codebases. Some of them will be trivial to fix, but others not.

@diondokter do you think we should yank 0.3.7?

@diondokter do you think we should yank 0.3.7?

Probably yes. It is breaking peoples builds, but not all builds. It's not necessarily your fault, but only your yank will fix it sadly

@diondokter I've released defmt-macros v0.3.9 and yanked v0.3.8. Can you test if that un-breaks the builds?

@Urhengulas seems to compile on my end!
Thanks for the fast response :)


How to identify disabled elements in dropdown in selenium with java?

This has nothing to do with JMeter-WebSocketSampler, You must close this.


Uncaught exception: file too big for single read

I encountered the following issue when reading the content of .OVA file “test.ova” (its size is 2.1GB).
Uncaught exception: file too big for single read
e:/RailsInstaller/Ruby2.3.0/lib/ruby/gems/2.3.0/gems/rbvmomi-1.10.0/lib/rbvmomi/vim/OvfManager.rb:43:in read' e:/RailsInstaller/Ruby2.3.0/lib/ruby/gems/2.3.0/gems/rbvmomi-1.10.0/lib/rbvmomi/vim/OvfManager.rb:43:in deployOVF'
My sample code is as follows:
vim = RbVmomi::VIM.connect :host => hyper, :user => user, :password => password, :insecure => true
dc = vim.serviceInstance.find_datacenter(dcName) or abort "datacenter not found"
network = dc.network.first  #Network
computeResourceArray =  dc.hostFolder.children #Array for ComputeResource
computeResourceForDeploy=nil    #ComputeResource
computeResourceForDeploy = computeResourceArray.find { |x| x.host.first.summary.config.name  == 'crName' }
hostForDeploy=nil   #HostSystem
computeResourceArray.each do |x|
host = x.host.first
if host.summary.config.name == 'hostName'
hostForDeploy = host
break;
end
end
dataStoreArray =  dc.datastore  #Array for DataStore
dataStoreDeploy=nil    #DataStore
dataStoreDeploy = dataStoreArray.find { |x| x.name ==’dsName’ }
VIM = RbVmomi::VIM
root_vm_folder = dc.vmFolder
vm_folder = root_vm_folder
vm_name = 'test327'
ovf_url='//fileServer/test.ova'
vm = vim.serviceContent.ovfManager.deployOVF(
uri: ovf_url,
vmName: vm_name,
vmFolder: vm_folder,
host: hostForDeploy,
resourcePool: computeResourceForDeploy.resourcePool,
datastore: dataStoreDeploy,
)
Did anyone encounter the same issue ? Does anyone know how to resolve it?

Hi ,
Could you pls. tell me if there is any update?
Thank you very much

@Bindong18 Unfortunately, I haven't been able to track this down. What version of Windows are you using? From the looks of it, you installed Ruby via the Rails Installer. Is that the case?

@jrgarcia windows: win2008r2 ,Yes Rails Installer3.3.0

So it looks like this is an issue with reading large files with Ruby. You can see here where we call .read. Ruby can't handle reading a file of that size in that way. I'll look at changing this for reading large files, but I probably won't be able to modify that this week (I'm traveling right now).

If you are using 32bit then you have a limit of 2GB (https://en.wikipedia.org/wiki/2_GB_limit)
Could you check if your Ruby is 32 or 64 bit.

@bergholdt
C:\Users\administrator>ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [i386-mingw32]
C:\Users\administrator>irb
irb(main):001:0> ['foo'].pack('p').size
=> 4

@Bindong18 Yeah, it looks like you have a 32-bit version of Ruby installed (i386-mingw32). This means there is no way to read a file that large. When I get a chance, I'll test to see if there is a way to stream this rather than just reading it that will work, but this will never work with 32-bit.

@jrgarcia
@bergholdt
I changed ruby to 64bit, but still got the same error:
Uncaught exception: file too big for single read
C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rbvmomi-1.10.0/lib/rbvmomi/vim/OvfManager.rb:43:in read' 	C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rbvmomi-1.10.0/lib/rbvmomi/vim/OvfManager.rb:43:in deployOVF'
C:\Users\administrator.CRE3>ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [x64-mingw32]

@Bindong18 can you output ['foo'].pack('p').size again? If it's 8, then there isn't a problem with the OS. If it's 4, Ruby is still somehow installed as 32-bit. Aside from that, I'm guessing the problem is just that Ruby itself can not read a file that large. I can change the implementation from the stdlib File#read, but I'll need to test it quite a bit to ensure I don't break anything that worked previously.

@jrgarcia
C:\Users\administrator.CRE3>irb
irb(main):001:0>  ['foo'].pack('p').size
=> 8
irb(main):002:0>

Ok, so the problem then is that Ruby's File#read can't read files that large. I'll look at changing to something that can handle large files.

@jrgarcia
Thank you very much


istio.citadel.server.root_cert_expiry_timestamp is not shown as timestamp.

Steps to reproduce the issue:

open metrics explorer
add istio.citadel.server.root_cert_expiry_timestamp in "graph"

Describe the results you received:
metrics shown as 22000 days
Describe the results you expected:
Actual expiry unix timestamp
Information:
We need to monitor root certificate expiry for istio.
As per this doc https://docs.datadoghq.com/integrations/istio/#data-collected
, istio.citadel.server.root_cert_expiry_timestamp should be "The unix timestamp (in seconds) when Citadel root cert will expire. Negative in case of internal error"
Actual istio metrics shown in datadog metrics explorer is istio.citadel.server.root_cert_expiry_timestamp: 22000 days
Verified that the metrics by isito is  citadel_server_root_cert_expiry_timestamp: 1.915748889e+09,
which is<PHONE_NUMBER>, timestamp for Monday, September 16, 2030 12:28:09 AM GMT
Expected, same timestamp metric value from istio.

Hello @ameyajoshi99 and thank you for submitting this issue!
I am not able to reproduce your error. I see the correct value for iistio.citadel.server.citadel_root_cert_expiry_timestamp on my graphs.
More Info:
I am running istio 1.2.3 with datadog_checks.istio v3.11.0
If I query the istio API, at /metrics, I see the value for  citadel_server_citadel_root_cert_expiry_timestamp:
# HELP citadel_server_citadel_root_cert_expiry_timestamp The unix timestamp, in seconds, when Citadel root cert will expire. We set it to negative in case of internal error.
# TYPE citadel_server_citadel_root_cert_expiry_timestamp gauge
citadel_server_citadel_root_cert_expiry_timestamp 1.936277892e+09

Which seems to match up with what I see on the Datadog UI:

Hi @ameyajoshi99 it seems we are going to need more information about the specifics of your environment to address this issue. Can you please contact support?


ci: fix playwright cache

🔗 Linked issue

❓ Type of change

[ ] 📖 Documentation (updates to the documentation, readme or JSdoc annotations)
[ ] 🐞 Bug fix (a non-breaking change that fixes an issue)
[ ] 👌 Enhancement (improving an existing functionality like performance)
[ ] ✨ New feature (a non-breaking change that adds functionality)
[x] 🧹 Chore (updates to the build process or auxiliary tools and libraries)
[ ] ⚠ Breaking change (fix or feature that would cause existing functionality to change)

📚 Description
I think playwright cache in the ci action has been ignored (always downloadin & installing) since replacing playwright with playwright-core. This (should) fix the cache.
Main thing I wanted to fix is that the action sometimes fails running this command:
$env:PLAYWRIGHT_VERSION="$(pnpm ls --depth 0 --json -w playwright | jq --raw-output '.[0].unsavedDependencies[\"playwright\"].version')"

With the following error:
jq: error: syntax error, unexpected INVALID_CHARACTER (Windows cmd shell quoting issues?) at <top-level>, line 1:
.[0].unsavedDependencies[\"playwright\"].version
jq: 1 compile error

Honestly I'm not sure why this command doesn't consistently error, and when it doesn't error it resolves to null, and I think that since there is no local playwright installed with version null it downloads and installs instead. This will likely reduce flakiness for the erroring actions.

📝 Checklist

[ ] I have linked an issue or discussion.
[ ] I have added tests (if possible).
[ ] I have updated the documentation accordingly.

Maybe it should still be using unsavedDependencies instead of devDependencies?

Looks like caching is working now for the Ubuntu actions, but not quite for Windows.. Not sure why that is, at least playwright version parsing is working for Windows now as well.

Actually caching should work for Windows actions as well, I think the cache just still unset on the first run 😅


implement method call stack

For deeper analysis of dead code (for example, to recognize that a method you've thought was dead is being called and you want to know what it is), we also support the feature that enables you to see the method call stack.

Which one to use to record the call stack?

thread stack
https://github.com/raphw/weak-lock-free
....


Crashes when there are very few input reads

I'm getting a crash when I run RefSeq Masher on very few input reads.
I can run Mash on the command line using my data and the Mash sketch provided from RefSeq Masher (the output is the same with or without the -w flag):
> mash screen -w -p 4 RefSeqSketches.msh tiny.fastq

Loading RefSeqSketches.msh...
   4669418 distinct hashes.
Streaming from tiny.fastq...
   Estimated distinct k-mers in mixture: 68
Summing shared...
Reallocating to winners...
Computing coverage medians...
Writing output...
0.687656	1/400	3	6.33297e-06	./rcn/refseq-NC-765187-PRJNA50279-.-.-.-Chimaera_fulva.fna
0.689638	1/382	2	6.04799e-06	./rcn/refseq-NZ-670-PRJNA224116-SAMN03349604-GCF_000960665.1-unnamed-Vibrio_parahaemolyticus.fna

However, when I run RefSeq Masher:
> refseq_masher contains tiny.fastq

Loading miniconda3/envs/proksee-dev/lib/python3.7/site-packages/refseq_masher/data/RefSeqSketches.msh...
   4669418 distinct hashes.
Streaming from tiny.fastq...
   Estimated distinct k-mers in mixture: 68
Summing shared...
Computing coverage medians...
Writing output...
Traceback (most recent call last):
  File "miniconda3/envs/proksee-dev/bin/refseq_masher", line 10, in <module>
    sys.exit(cli())
  File "miniconda3/envs/proksee-dev/lib/python3.7/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "miniconda3/envs/proksee-dev/lib/python3.7/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "miniconda3/envs/proksee-dev/lib/python3.7/site-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "miniconda3/envs/proksee-dev/lib/python3.7/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "miniconda3/envs/proksee-dev/lib/python3.7/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "miniconda3/envs/proksee-dev/lib/python3.7/site-packages/refseq_masher/cli.py", line 136, in contains
    parallelism=parallelism)
  File "miniconda3/envs/proksee-dev/lib/python3.7/site-packages/refseq_masher/mash/screen.py", line 46, in vs_refseq
    df = mash_screen_output_to_dataframe(stdout)
  File "miniconda3/envs/proksee-dev/lib/python3.7/site-packages/refseq_masher/mash/parser.py", line 117, in mash_screen_output_to_dataframe
    df = pd.read_table(StringIO(mash_out))
  File "miniconda3/envs/proksee-dev/lib/python3.7/site-packages/pandas/io/parsers.py", line 765, in read_table
    return read_csv(**locals())
  File "miniconda3/envs/proksee-dev/lib/python3.7/site-packages/pandas/io/parsers.py", line 686, in read_csv
    return _read(filepath_or_buffer, kwds)
  File "miniconda3/envs/proksee-dev/lib/python3.7/site-packages/pandas/io/parsers.py", line 452, in _read
    parser = TextFileReader(fp_or_buf, **kwds)
  File "miniconda3/envs/proksee-dev/lib/python3.7/site-packages/pandas/io/parsers.py", line 946, in __init__
    self._make_engine(self.engine)
  File "miniconda3/envs/proksee-dev/lib/python3.7/site-packages/pandas/io/parsers.py", line 1178, in _make_engine
    self._engine = CParserWrapper(self.f, **self.options)
  File "miniconda3/envs/proksee-dev/lib/python3.7/site-packages/pandas/io/parsers.py", line 2008, in __init__
    self._reader = parsers.TextReader(src, **kwds)
  File "pandas/_libs/parsers.pyx", line 540, in pandas._libs.parsers.TextReader.__cinit__
pandas.errors.EmptyDataError: No columns to parse from file

I cannot upload my mock reads (tiny.fastq), so I will post them as text here:
@READ1
ACGTAACCGGTTAAACCCGGGTTTAAAACCCCGGGGTTTTAAAAACCCCCGGGGGTTTTTAAAAAACCCCCCGGGGGGTTTTTTAAAAAAACCCCCCCGGG
+
CCCCCCCCCCCCCCCCCCCCC;CCCCCCCCCCCCCC;CCCCCCCCCCCCCCCCC-CCCCCCCCCCCCCCCCCCCCCCCCCC;CCCCCCCCCCCCC-CCCCC
@READ2
ACGTAACCGGTTAAACCCGGGTTTAAAACCCCGGGGTTTTAAAAACCCCCGGGGGTTTTTAAAAAACCCCCCGGGGGGTTTTTTAAAAAAACCCCCCCG
+
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
@READ3
ACGTAACCGGTTAAACCCGGGTTTAAAACCCCGGGGTTTTAAAAACCCCCGGGGGTTTTTAAAAAACCCCCCGGGGGGTTTTTTAAAAAAACCCCCCCGGG
+
CCCCCCCCCCCCCCCCCCCCCCC;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC;-CCCCCCCCCCCCC;CCCCCCCC-CC;CCCCC

It appears that when running Mash screen on the above test file with the same default values RefSeq Masher uses (mash screen -v 0.01 -p 1 -i 0.9), Mash screen reports no output. That is, the output file is empty. RefSeq Masher then tries to process this file with the assumption that there will be a certain number of columns in the Mash output, but there are no columns because the file is empty.
I've opened a pull request (#4) that handles empty Mash output by returning None instead of a dataframe is some places. I've added logic to check for None dataframes.

I think the winner-takes-all strategy (mash screen -w ...) was added to Mash screen soon after I wrote this tool and I was using certain options to filter out most of the spurious looking results. Those options could probably be replaced with the -w flag, but that might require some testing.

Resolved in #4.


A strange name display in notifications

a strange name view in notifications:

Rechecked, now I can see my .chain name on the main screen.

The same name displays as Fellow Superhero in notifications.


SWC-6391 - Add recovery code login

Add and integrate RecoveryCodeForm.tsx
Return isLoading state from useLogin, determined now by using useMutation
Update UsernamePasswordForm to use HTML5 validation (required text fields)

https://user-images.githubusercontent.com/17580037/221054048-1b4da6cc-1cc7-4140-a3f2-bc1625dfacd6.mov

I'm confused by the build output.  It looks like the DetailsView.test.tsx suite passed...

I'm confused by the build output. It looks like the DetailsView.test.tsx suite passed...

Because we have so many console warnings and errors, the console output isn't easy to read--and I think Nx truncates the output. The GitHub Actions workflow emits an artifact containing the HTML test report, which shows what actually failed.


version is updated to 5.2.0

Version is updated to 5.2.0

Windows test PASSed.

Linux test PASSed.

Windows test PASSed.

Windows test PASSed.

Linux test PASSed.

Could you replace 5.1.0 on Reference_Manual.md file ?

Do you mean the log outputs? I did not change them consciously. I think they are temporary outputs, it would be better not to change. What do you say?

Could you replace 5.1.0 on Reference_Manual.md file ?

5.1.0 in logs is updated as 5.x.x

Linux test PASSed.

Windows test PASSed.


Support Animated.ScrollView with Animated.event()

Hi,
Current implementation does not support passing a onScroll listener using Animated.event() listener, which is particularly useful when you want to implement a ScrollView with native driver parallax effects or things like that.
I just discovered there's this "Animated.forkEvent" method which permit to add a listener to the existing user onScroll callback. It works with both original function and Animated.event(): https://github.com/facebook/react-native/blob/c6b96c0df789717d53ec520ad28ba0ae00db6ec2/Libraries/Animated/src/AnimatedImplementation.js#L477

LGTM but FYI you could attach a parallax effect to the current implementations (we've done that several times).
You PR looks a bit more correct for the actual RN implementation. Merging.

unfortunately this PR is not enough to provide support for Animated.ScrollView, I only tested on Android with the feature disabled, will make another PR


Build without --merge-install flag

Is it possible to build vrx without the --merge-install flag? This flag is not compatible with the rest of my ROS workspace, and mainly external sensor drivers. With the flag, other parts of my repo do not build.
When I build without the  --merge-install flag, the following errors occur: see screenshots.
To Reproduce
List the steps to reproduce the problem:

colcon build
source install setup.bash
ros2 launch vrx_gz competition.launch.py world:=sydney_regatta

System Configuration:

OS: PopOS 22.04
ROS Version: ROS2 Humble
Gazebo Version: Gazebo 7.6.0
Graphics Card: Nvidia 4060
Are you using VRX or VRX Classic? VRX

Screenshots

From https://github.com/osrf/vrx/issues/732, it seems that the GZ_SIM_RESOURCE_PATH has to be set correctly. With the --merge-install flag, it points to vrx_ws/install/share/wamv_description/models, which is indeed where the files are installed.
Without the --merge-install flag, the wamv_description package is installed in vrx_ws/install/wamv_description/share/wamv_description/models. So I add this path to the GZ_SIM_RESOURCE_PATH environment variable, but Gazebo can still not find the files. If I manually move the files from vrx_ws/install/wamv_description/share/wamv_description/models to vrx_ws/install/share/wamv_description/models, Gazebo does find them.
How can I make Gazebo search for the files in the correct folder?

@caguero Do you know if this can be accomplished?

@caguero Do you know if this can be accomplished?

From #732, it seems that the GZ_SIM_RESOURCE_PATH has to be set correctly. With the --merge-install flag, it points to vrx_ws/install/share/wamv_description/models, which is indeed where the files are installed.
Without the --merge-install flag, the wamv_description package is installed in vrx_ws/install/wamv_description/share/wamv_description/models. So I add this path to the GZ_SIM_RESOURCE_PATH environment variable, but Gazebo can still not find the files. If I manually move the files from vrx_ws/install/wamv_description/share/wamv_description/models to vrx_ws/install/share/wamv_description/models, Gazebo does find them.
How can I make Gazebo search for the files in the correct folder?

did you get it to work?

Nope, I built my own Gazebo sim lol. VRX was too complex for my use case


Fix Spelling Issue

Fixes a misspelled word.

@TimCorey : Thanks for your contribution! The author, @srdan-bozovic-msft, has been notified to review your proposed change.

Merging typo fix
@TimCorey Thanks!


relative link of images

This PR modify absolute link to relative link.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.xingfeng01 seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Remove dependencies

Demonstration implementation of paketo-buildpacks/rfcs#214

SBOM now generated from installation directory
Will no longer reuse layers
Installed version now retrieved using 'poetry --version'
Only exact version matching is supported

Checklist

[x] I have viewed, signed, and submitted the Contributor License Agreement.
[x] I have linked issue(s) that this PR should close using keywords or the Github UI (See docs)
[x] I have added an integration test, if necessary.
[x] I have reviewed the styleguide for guidance on my code quality.
[x] I'm happy with the commit history on this PR (I have rebased/squashed as needed).

Closing in favor of #75