Setup pubsub topic

Why
We want to expose pubsub notifications when storage transfer service jobs are complete (relevant ticket).
This PR

Enables the google pubsub API in the HCA dev project
Sets up a topic + subscription

Terraform Format and Style 🖌success
hca - Terraform Initialization ⚙success
hca - Terraform Validation 🤖Success! The configuration is valid.
hca - Terraform Plan 📖success
hca - Show Plan
Refreshing Terraform state in-memory prior to plan...
A]
module.dns_names.google_dns_record_set.a_dns["hca-grafana"]: Refreshing state... [id=monster-dev/hca-grafana-global.monster-dev.broadinstitute.org./A]
module.dns_names.google_dns_record_set.cname_dns["hca-argo"]: Refreshing state... [id=monster-dev/hca-argo.monster-dev.broadinstitute.org./CNAME]
module.dns_names.google_dns_record_set.cname_dns["hca-grafana"]: Refreshing state... [id=monster-dev/hca-grafana.monster-dev.broadinstitute.org./CNAME]
module.k8s_network.google_compute_router_nat.nat: Refreshing state... [id=broad-dsp-monster-hca-dev/us-central1/hca-network-router/hca-network-nat]
module.master.google_container_cluster.master: Refreshing state... [id=projects/broad-dsp-monster-hca-dev/locations/us-central1-c/clusters/hca-cluster]
module.master.vault_generic_secret.master_secrets: Refreshing state... [id=secret/dsde/monster/dev/ingest/hca/gke]
module.node_pool.google_container_node_pool.pool: Refreshing state... [id=projects/broad-dsp-monster-hca-dev/locations/us-central1-c/clusters/hca-cluster/nodePools/hca-node-pool]
module.cloudsql.google_sql_database.db["argo"]: Refreshing state... [id=projects/broad-dsp-monster-hca-dev/instances/command-center-postgres-c42fe702ebe633c9/databases/argo]

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

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
  + create
  ~ update in-place

Terraform will perform the following actions:

  # module.cloudsql.google_sql_database_instance.postgres will be updated in-place
  ~ resource "google_sql_database_instance" "postgres" {
        connection_name               = "broad-dsp-monster-hca-dev:us-central1:command-center-postgres-c42fe702ebe633c9"
        database_version              = "POSTGRES_9_6"
      + deletion_protection           = true
        first_ip_address              = "<IP_ADDRESS>"
        id                            = "command-center-postgres-c42fe702ebe633c9"
        ip_address                    = [
            {
                ip_address     = "<IP_ADDRESS>"
                time_to_retire = ""
                type           = "PRIMARY"
            },
        ]
        name                          = "command-center-postgres-c42fe702ebe633c9"
        project                       = "broad-dsp-monster-hca-dev"
        public_ip_address             = "<IP_ADDRESS>"
        region                        = "us-central1"
        self_link                     = "https://sqladmin.googleapis.com/sql/v1beta4/projects/broad-dsp-monster-hca-dev/instances/command-center-postgres-c42fe702ebe633c9"
        server_ca_cert                = [
            {
                cert             = <<~EOT
                    -----BEGIN CERTIFICATE-----
                    MIIDfzCCAmegAwIBAgIBADANBgkqhkiG9w0BAQsFADB3MS0wKwYDVQQuEyQ1OTU2
                    MWMxMS04NzM3LTQ4ZjctYTMxNS05ZDg5NDY4M2FjMTkxIzAhBgNVBAMTGkdvb2ds
                    ZSBDbG91ZCBTUUwgU2VydmVyIENBMRQwEgYDVQQKEwtHb29nbGUsIEluYzELMAkG
                    A1UEBhMCVVMwHhcNMjAwNjAyMjExNDE2WhcNMzAwNTMxMjExNTE2WjB3MS0wKwYD
                    VQQuEyQ1OTU2MWMxMS04NzM3LTQ4ZjctYTMxNS05ZDg5NDY4M2FjMTkxIzAhBgNV
                    BAMTGkdvb2dsZSBDbG91ZCBTUUwgU2VydmVyIENBMRQwEgYDVQQKEwtHb29nbGUs
                    IEluYzELMAkGA1UEBhMCVVMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
                    AQCvX9J23AsOb4Xo8NYZYx2cnJtwgOOmNAMBm8jmvf8dneDadwmqNZBScGEEXT9R
                    JDaRqCZt7XTsKqXCgI/UmOUjAlr9qgp8d8lBebLNnHMxJY9UGUrEAHkBo+6xsvyj
                    2pH/xAu2jBawin0gnv0wVS8ShW7iZsmI284Bf0M3Mg82VGlMPgKXgaHYsgqlHrhz
                    KAge4Mm6/NrfiS+95G9BwnUASwPk/emRjZyQdNnmAUk52M+7N4zWDFhpGt4hIwlW
                    ywug3YKxR2PRw14mBNVX5aNX3r89lfPnx59qeJ3kwFPOAK4Ae3w1e391Up3zXnss
                    jNpZOi5BwI01+sJDH6txjJJ5AgMBAAGjFjAUMBIGA1UdEwEB/wQIMAYBAf8CAQAw
                    DQYJKoZIhvcNAQELBQADggEBAHZuKxIVG3vzOv2LqkRQZXlBJYWbOlEzsX+XF05D
                    jAqFcPGbXFZOBk/Kd3SDEocJ4zV1L8IibGlVxKWc4GOC2KNZmejZtMX2snjL4y2Z
                    EuAA3FzANHdYLeG5EFnYJkI05Blv03DRxJ5NjLMOMbV7znSmcB5DrVkbEK4X6dce
                    ZEk8DzGeZo6NcEnuxisCrLyUWechHHROSYwIcXaUsbbw73VkmnIas1pv/8CgE19Y
                    aX4vDPpuW96uFDDnSlwqN4BK4pO1j2XREhmDDxkMb6xU+zS7cA4aO3x2Q1fTj5KD
                    4uV7C8PtBKxF/5y8p1h9YJYPwx7yiyNinnthc8Byyr2akks=
                    -----END CERTIFICATE-----
                EOT
                common_name      = "C=US,O=Google\\, Inc,CN=Google Cloud SQL Server CA,dnQualifier=59561c11-8737-48f7-a315-9d894683ac19"
                create_time      = "2020-06-02T21:14:16.061Z"
                expiration_time  = "2030-05-31T21:15:16.061Z"
                sha1_fingerprint = "11c06ca17a8ca467d3e01dc75e98c34388acb6fb"
            },
        ]
        service_account_email_address =<EMAIL_ADDRESS>
        settings {
            activation_policy           = "ALWAYS"
            authorized_gae_applications = []
            availability_type           = "ZONAL"
            crash_safe_replication      = false
            disk_autoresize             = true
            disk_size                   = 10
            disk_type                   = "PD_SSD"
            pricing_plan                = "PER_USE"
            replication_type            = "SYNCHRONOUS"
            tier                        = "db-custom-4-15360"
            user_labels                 = {
                "app"   = "hca"
                "role"  = "database"
                "state" = "active"
            }
            version                     = 34

            backup_configuration {
                binary_log_enabled             = false
                enabled                        = true
                point_in_time_recovery_enabled = false
                start_time                     = "06:00"
            }

            ip_configuration {
                ipv4_enabled = true
                require_ssl  = true

                authorized_networks {
                    name  = "Broad"
                    value = "<IP_ADDRESS>/18"
                }
            }

            location_preference {
                zone = "us-central1-a"
            }
        }
    }

  # module.ebi_staging_notification_pubsub_topic.google_project_iam_member.token_creator_binding[0] will be created
  + resource "google_project_iam_member" "token_creator_binding" {
      + etag    = (known after apply)
      + id      = (known after apply)
      + member  =<EMAIL_ADDRESS>      + project = "broad-dsp-monster-hca-dev"
      + role    = "roles/iam.serviceAccountTokenCreator"
    }

  # module.ebi_staging_notification_pubsub_topic.google_pubsub_subscription.pull_subscriptions[0] will be created
  + resource "google_pubsub_subscription" "pull_subscriptions" {
      + ack_deadline_seconds       = 10
      + id                         = (known after apply)
      + message_retention_duration = "604800s"
      + name                       = "ebi"
      + path                       = (known after apply)
      + project                    = "broad-dsp-monster-hca-dev"
      + topic                      = "broad-dsp-monster-hca-dev.staging-transfer-notifications.ebi"

      + expiration_policy {
          + ttl = (known after apply)
        }
    }

  # module.ebi_staging_notification_pubsub_topic.google_pubsub_subscription_iam_member.pull_subscription_binding[0] will be created
  + resource "google_pubsub_subscription_iam_member" "pull_subscription_binding" {
      + etag         = (known after apply)
      + id           = (known after apply)
      + member       =<EMAIL_ADDRESS>      + project      = "broad-dsp-monster-hca-dev"
      + role         = "roles/pubsub.subscriber"
      + subscription = "ebi"
    }

  # module.ebi_staging_notification_pubsub_topic.google_pubsub_topic.topic[0] will be created
  + resource "google_pubsub_topic" "topic" {
      + id      = (known after apply)
      + name    = "broad-dsp-monster-hca-dev.staging-transfer-notifications.ebi"
      + project = "broad-dsp-monster-hca-dev"

      + message_storage_policy {
          + allowed_persistence_regions = (known after apply)
        }
    }

  # module.ebi_staging_notification_pubsub_topic.google_pubsub_topic_iam_member.pull_topic_binding[0] will be created
  + resource "google_pubsub_topic_iam_member" "pull_topic_binding" {
      + etag    = (known after apply)
      + id      = (known after apply)
      + member  =<EMAIL_ADDRESS>      + project = "broad-dsp-monster-hca-dev"
      + role    = "roles/pubsub.publisher"
      + topic   = "projects/broad-dsp-monster-hca-dev/topics/broad-dsp-monster-hca-dev.staging-transfer-notifications.ebi"
    }

  # module.enable_services.google_project_service.services[19] will be created
  + resource "google_project_service" "services" {
      + disable_on_destroy = false
      + id                 = (known after apply)
      + project            = (known after apply)
      + service            = "pubsub.googleapis.com"
    }

Plan: 6 to add, 1 to change, 0 to destroy.

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

Note: You didn't specify an "-out" parameter to save this plan, so Terraform
can't guarantee that exactly these actions will be performed if
"terraform apply" is subsequently run.

Pusher: @aherbst-broad, Action: pull_request, Working Directory: /home/runner/work/monster-deploy/monster-deploy/environments/hca/terraform, Workflow: Terraform Plan

@aherbst-broad this looks promising.

Terraform Format and Style 🖌success
hca - Terraform Initialization ⚙success
hca - Terraform Validation 🤖Success! The configuration is valid.
hca - Terraform Plan 📖success
hca - Show Plan
Refreshing Terraform state in-memory prior to plan...
A]
module.dns_names.google_dns_record_set.a_dns["hca-grafana"]: Refreshing state... [id=monster-dev/hca-grafana-global.monster-dev.broadinstitute.org./A]
module.dns_names.google_dns_record_set.cname_dns["hca-argo"]: Refreshing state... [id=monster-dev/hca-argo.monster-dev.broadinstitute.org./CNAME]
module.dns_names.google_dns_record_set.cname_dns["hca-grafana"]: Refreshing state... [id=monster-dev/hca-grafana.monster-dev.broadinstitute.org./CNAME]
module.k8s_network.google_compute_router_nat.nat: Refreshing state... [id=broad-dsp-monster-hca-dev/us-central1/hca-network-router/hca-network-nat]
module.master.google_container_cluster.master: Refreshing state... [id=projects/broad-dsp-monster-hca-dev/locations/us-central1-c/clusters/hca-cluster]
module.master.vault_generic_secret.master_secrets: Refreshing state... [id=secret/dsde/monster/dev/ingest/hca/gke]
module.node_pool.google_container_node_pool.pool: Refreshing state... [id=projects/broad-dsp-monster-hca-dev/locations/us-central1-c/clusters/hca-cluster/nodePools/hca-node-pool]
module.cloudsql.google_sql_database.db["argo"]: Refreshing state... [id=projects/broad-dsp-monster-hca-dev/instances/command-center-postgres-c42fe702ebe633c9/databases/argo]

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

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
  + create
  ~ update in-place

Terraform will perform the following actions:

  # module.cloudsql.google_sql_database_instance.postgres will be updated in-place
  ~ resource "google_sql_database_instance" "postgres" {
        connection_name               = "broad-dsp-monster-hca-dev:us-central1:command-center-postgres-c42fe702ebe633c9"
        database_version              = "POSTGRES_9_6"
      + deletion_protection           = true
        first_ip_address              = "<IP_ADDRESS>"
        id                            = "command-center-postgres-c42fe702ebe633c9"
        ip_address                    = [
            {
                ip_address     = "<IP_ADDRESS>"
                time_to_retire = ""
                type           = "PRIMARY"
            },
        ]
        name                          = "command-center-postgres-c42fe702ebe633c9"
        project                       = "broad-dsp-monster-hca-dev"
        public_ip_address             = "<IP_ADDRESS>"
        region                        = "us-central1"
        self_link                     = "https://sqladmin.googleapis.com/sql/v1beta4/projects/broad-dsp-monster-hca-dev/instances/command-center-postgres-c42fe702ebe633c9"
        server_ca_cert                = [
            {
                cert             = <<~EOT
                    -----BEGIN CERTIFICATE-----
                    MIIDfzCCAmegAwIBAgIBADANBgkqhkiG9w0BAQsFADB3MS0wKwYDVQQuEyQ1OTU2
                    MWMxMS04NzM3LTQ4ZjctYTMxNS05ZDg5NDY4M2FjMTkxIzAhBgNVBAMTGkdvb2ds
                    ZSBDbG91ZCBTUUwgU2VydmVyIENBMRQwEgYDVQQKEwtHb29nbGUsIEluYzELMAkG
                    A1UEBhMCVVMwHhcNMjAwNjAyMjExNDE2WhcNMzAwNTMxMjExNTE2WjB3MS0wKwYD
                    VQQuEyQ1OTU2MWMxMS04NzM3LTQ4ZjctYTMxNS05ZDg5NDY4M2FjMTkxIzAhBgNV
                    BAMTGkdvb2dsZSBDbG91ZCBTUUwgU2VydmVyIENBMRQwEgYDVQQKEwtHb29nbGUs
                    IEluYzELMAkGA1UEBhMCVVMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
                    AQCvX9J23AsOb4Xo8NYZYx2cnJtwgOOmNAMBm8jmvf8dneDadwmqNZBScGEEXT9R
                    JDaRqCZt7XTsKqXCgI/UmOUjAlr9qgp8d8lBebLNnHMxJY9UGUrEAHkBo+6xsvyj
                    2pH/xAu2jBawin0gnv0wVS8ShW7iZsmI284Bf0M3Mg82VGlMPgKXgaHYsgqlHrhz
                    KAge4Mm6/NrfiS+95G9BwnUASwPk/emRjZyQdNnmAUk52M+7N4zWDFhpGt4hIwlW
                    ywug3YKxR2PRw14mBNVX5aNX3r89lfPnx59qeJ3kwFPOAK4Ae3w1e391Up3zXnss
                    jNpZOi5BwI01+sJDH6txjJJ5AgMBAAGjFjAUMBIGA1UdEwEB/wQIMAYBAf8CAQAw
                    DQYJKoZIhvcNAQELBQADggEBAHZuKxIVG3vzOv2LqkRQZXlBJYWbOlEzsX+XF05D
                    jAqFcPGbXFZOBk/Kd3SDEocJ4zV1L8IibGlVxKWc4GOC2KNZmejZtMX2snjL4y2Z
                    EuAA3FzANHdYLeG5EFnYJkI05Blv03DRxJ5NjLMOMbV7znSmcB5DrVkbEK4X6dce
                    ZEk8DzGeZo6NcEnuxisCrLyUWechHHROSYwIcXaUsbbw73VkmnIas1pv/8CgE19Y
                    aX4vDPpuW96uFDDnSlwqN4BK4pO1j2XREhmDDxkMb6xU+zS7cA4aO3x2Q1fTj5KD
                    4uV7C8PtBKxF/5y8p1h9YJYPwx7yiyNinnthc8Byyr2akks=
                    -----END CERTIFICATE-----
                EOT
                common_name      = "C=US,O=Google\\, Inc,CN=Google Cloud SQL Server CA,dnQualifier=59561c11-8737-48f7-a315-9d894683ac19"
                create_time      = "2020-06-02T21:14:16.061Z"
                expiration_time  = "2030-05-31T21:15:16.061Z"
                sha1_fingerprint = "11c06ca17a8ca467d3e01dc75e98c34388acb6fb"
            },
        ]
        service_account_email_address =<EMAIL_ADDRESS>
        settings {
            activation_policy           = "ALWAYS"
            authorized_gae_applications = []
            availability_type           = "ZONAL"
            crash_safe_replication      = false
            disk_autoresize             = true
            disk_size                   = 10
            disk_type                   = "PD_SSD"
            pricing_plan                = "PER_USE"
            replication_type            = "SYNCHRONOUS"
            tier                        = "db-custom-4-15360"
            user_labels                 = {
                "app"   = "hca"
                "role"  = "database"
                "state" = "active"
            }
            version                     = 34

            backup_configuration {
                binary_log_enabled             = false
                enabled                        = true
                point_in_time_recovery_enabled = false
                start_time                     = "06:00"
            }

            ip_configuration {
                ipv4_enabled = true
                require_ssl  = true

                authorized_networks {
                    name  = "Broad"
                    value = "<IP_ADDRESS>/18"
                }
            }

            location_preference {
                zone = "us-central1-a"
            }
        }
    }

  # module.ebi_staging_notification_pubsub_topic.google_project_iam_member.token_creator_binding[0] will be created
  + resource "google_project_iam_member" "token_creator_binding" {
      + etag    = (known after apply)
      + id      = (known after apply)
      + member  =<EMAIL_ADDRESS>      + project = "broad-dsp-monster-hca-dev"
      + role    = "roles/iam.serviceAccountTokenCreator"
    }

  # module.ebi_staging_notification_pubsub_topic.google_pubsub_subscription.pull_subscriptions[0] will be created
  + resource "google_pubsub_subscription" "pull_subscriptions" {
      + ack_deadline_seconds       = 10
      + id                         = (known after apply)
      + message_retention_duration = "604800s"
      + name                       = "ebi"
      + path                       = (known after apply)
      + project                    = "broad-dsp-monster-hca-dev"
      + topic                      = "broad-dsp-monster-hca-dev.staging-transfer-notifications.ebi"

      + expiration_policy {
          + ttl = (known after apply)
        }
    }

  # module.ebi_staging_notification_pubsub_topic.google_pubsub_subscription_iam_member.pull_subscription_binding[0] will be created
  + resource "google_pubsub_subscription_iam_member" "pull_subscription_binding" {
      + etag         = (known after apply)
      + id           = (known after apply)
      + member       =<EMAIL_ADDRESS>      + project      = "broad-dsp-monster-hca-dev"
      + role         = "roles/pubsub.subscriber"
      + subscription = "ebi"
    }

  # module.ebi_staging_notification_pubsub_topic.google_pubsub_topic.topic[0] will be created
  + resource "google_pubsub_topic" "topic" {
      + id      = (known after apply)
      + name    = "broad-dsp-monster-hca-dev.staging-transfer-notifications.ebi"
      + project = "broad-dsp-monster-hca-dev"

      + message_storage_policy {
          + allowed_persistence_regions = (known after apply)
        }
    }

  # module.ebi_staging_notification_pubsub_topic.google_pubsub_topic_iam_member.pull_topic_binding[0] will be created
  + resource "google_pubsub_topic_iam_member" "pull_topic_binding" {
      + etag    = (known after apply)
      + id      = (known after apply)
      + member  =<EMAIL_ADDRESS>      + project = "broad-dsp-monster-hca-dev"
      + role    = "roles/pubsub.publisher"
      + topic   = "projects/broad-dsp-monster-hca-dev/topics/broad-dsp-monster-hca-dev.staging-transfer-notifications.ebi"
    }

  # module.enable_services.google_project_service.services[19] will be created
  + resource "google_project_service" "services" {
      + disable_on_destroy = false
      + id                 = (known after apply)
      + project            = (known after apply)
      + service            = "pubsub.googleapis.com"
    }

Plan: 6 to add, 1 to change, 0 to destroy.

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

Note: You didn't specify an "-out" parameter to save this plan, so Terraform
can't guarantee that exactly these actions will be performed if
"terraform apply" is subsequently run.

Pusher: @aherbst-broad, Action: pull_request, Working Directory: /home/runner/work/monster-deploy/monster-deploy/environments/hca/terraform, Workflow: Terraform Plan

@aherbst-broad this looks promising.

@raaidbroad a service account to publish to the topic gets provisioned automatically as part of this plan. More importantly, this raises the issue that the EBI writer SA won't be able to consume from the ebi-writer subscription. I've updated this PR to grant the SA what I believe are the needed permissions.

@raaidbroad a service account to publish to the topic gets provisioned automatically as part of this plan. More importantly, this raises the issue that the EBI writer SA won't be able to consume from the ebi-writer subscription. I've updated this PR to grant the SA what I believe are the needed permissions.


Split API routes into multiple files

We're revisiting this due to a cognitive complexity issue being encountered by @Ovyerus.
While previously the performance tradeoff for this was not reasonable, it makes sense in current development context right now as its literally incoherent and messy figuring out which route is which.
For the next dev iteration, we shall focus on these TODOs:

[ ] Document some routes in-script
[x] Split routes into multiple files, Express-style.

This would heavily imply routes will be split according to their category and permission requirement.

[ ] Further standardize the entire application by adding comments on unclear parts.

This would heavily imply routes will be split according to their category and permission requirement.
This is already the case, but I will rename the files to make it clear what permission level they are.
Documentation will be done as soon as I find the time to do so.

Finished in #22


Stop caching manager as it no longer fits the design

Pull Request Description
[Add a description of your pull request here]

Future Release Comment
[Add description of your change, to include in the next release]
[Delete any or all irrelevant sections, e.g. if your change does not warrant a release comment at all]
Breaking Changes:

None

Features:

None

Fixes:

None

Codecov Report

Merging #71 (1d8aaae) into master (8f1ba97) will increase coverage by 0.18%.
The diff coverage is 87.50%.

@@            Coverage Diff             @@
##           master      #71      +/-   ##
==========================================
+ Coverage   49.79%   49.97%   +0.18%
==========================================
  Files          28       28
  Lines        4107     4096      -11
==========================================
+ Hits         2045     2047       +2
+ Misses       1919     1906      -13
  Partials      143      143

Impacted Files
Coverage Δ

kusto/ingest/ingest.go
0.00% <0.00%> (ø)

kusto/test/etoe/etoe_env.go
48.00% <100.00%> (+2.16%)
:arrow_up:

Continue to review full report at Codecov.

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


Drizzle Integration

@mishushakov do you have some high level thoughts on what an API would look like for this integrations? Is the scope primarily crud operations ?

Not really, this is open to discussion

I have just remembered what this one was about. See pothos-prisma and nexus-prisma for comparison

The actual information needed for a Drizzle description and for your Garph description overlap hugely.  If there were a way to take a Drizzle db description, add a “ignore this column” here and a “change the type of that column” there to make a GraphQL description, that would be huge.

Drizzle Team is now working on their own Garph integration:
https://discord.com/channels/1043890932593987624/1214214721570611200


Close and Reset button don't work

Hey guys,
good morning and thank you for this great tool.
I have just imported the library (npm package) in my react app and since the menu is opened the close and reset buttons are not working.
The menu will only close only if I reload my page.
Any idea what I am doing wrong?

Hi @NiobeTM 👋🏼
Can you please create a Stackblitz or something similar where I can reproduce the issue?

Hey Ran,
I have the same issue, you can see it in my public repo: https://github.com/natig4/look-in-their-eyes.
Btw great solution, thank you very much for this, let me know if there is anything I can do to help.

@natig4 Thank you for the update. According to what you wrote with the next.js version update it looks like the issue is not related to this repo. Do you agree or would you suggest otherwise?

@ranbuch Yes, it wasn't related to this repo, according to what I saw you can close the issue.
thanks and have a great day,
Nati.


✨(frontend) add faqs to a category and get them from a course

We at NAU identified the need to provide more information according to the characteriscts of a course.
In quick words this PR includes:

add additional_information placeholder to category detail page
additional_information is a Section with NestedItemPlugin as children
get the additional_information placeholder from the course detail page using the category id page

This PR is related to  Contextual Course FAQ by Category #2506.
Purpose
Dynamically provide information according to a category business logic.
Through additional information content the organizations using the Richie can provide more specific information according to a category. For exemple, using the category Available on edX.org we can describe how the learner will access this course on the next platform, for exemple edX.org. It would be an advantage as well in terms of payment methods, or promotional periods, as all the courses assigned to certain category will have their additional information.
An additional information can be FAQ's or any complementary information that seems important clarify for a course. The mechanism used to make these information available is a placeholder called by Addiotional Information on the category page.
Proposal
Provide a placeholder to be filled with varied information and at the same time be easy to maintain. The way of using is simple, described below.
Create the content
In a category page, use the placeholder Additional Information to create a section with nested items. According to the category needs insert the information that sounds relevant to be shown in a course that has the corresponding category. For exemple, if the course is distribuied by another platform, the Additional Information in this case could describre how this process of learning works.
Additional Information is a Section, which has a title field where can be filled according to the importance of their content, that is, for additional information about frequently asked questions, the Section plugin can be named as Course FAQ's, but in other cases where this section needs to signal high importance to these information, the Section plugin can be name as Extremely Important Information, and then reduce the possibilty of learners skipping this section. It is a open field to be used according to the needs.

On the category page it will be shown as

Set the page id
To dinamically create or edit a category Additional Information content and impact all the courses that have it, the tag
show_placeholder is used. This tag receives as parameter, the placeholder name and the page lookup, which is interpreted as reverse_id. For this logic to work, in Advanced Settings of the category page, if it not exists, use the field id to register the page unique information, so the page can be found by the show_placeholder tag.

Result
With added information, and id defined for this category page, all the courses that have this category, have also their information, as shown following in a course page.

As all the information come from category page, the maintenence of these contents is excellent, by changing the category page it changes all the courses that have it.

I think we should use the same expressions on both Category page and the Course page.
We should use a more generic naming of the Placeholder, like "Additional Information".
Just run a find and replace of course_faq with additional_information.
Remove the title "Category FAQ's" on the category page: http://localhost:8070/en/categories/level/expert/

On the course page, remove the visible title "Additional information": http://localhost:8070/en/courses/cloned-local-array/

@igobranco it is possible to repeat the review, I have completed the suggestions.

@igobranco the suggestions are done.

@Tiago-Salles you have to move your CHANGELOG.md line up on the file, it must be on the Unrealeased section.


BlobManager asserts: duplicate payloads

Server will dedup same content and return same ID.
This was not accounted in asserts I've added, so changing them to make less strict.

Need sign off to unblock release/0.35 integration


Clean old revisions

Describe the feature you'd like
Like image cleanup script, we would be able to clean old revisions through scripts or a new interface.
We could filter according to a date or range of them, simply selecting those we want to remove.
Describe the benefits this would bring to existing BookStack users
The main benefit is to clear the database with old data. Few persons do not want to keep old revisions after weeks, months, weeks... Or they just want to keep revision clean.
Can the goal of this request already be achieved via other means?
No
Have you searched for an existing open/closed issue?

[x] I have searched for existing issues and none cover my fundamental request

How long have you been using BookStack?
1 to 5 years
Additional context
No response

Thanks for the request @Eragaus.
Can you confirm specifically what you want to achieve as a result of cleaning revisions? What is your functional end goal via such a feature? You mention clearing the database, but I want to further understand why that's important to you.

Old and useless revisions can take a lot of space because the number of
them can increase significantly. Moreover, the useless ones can be removed.
That is why it would be nice, being able to clean revisions, like cleanup
image buttons. We could also remove them according to a date filter.
Le mer. 12 juin 2024 à 12:23, Dan Brown @.***> a écrit :

Thanks for the request @Eragaus https://github.com/Eragaus.
Can you confirm specifically what you want to achieve as a result of
cleaning revisions? What is your functional end goal via such a feature?
You mention clearing the database, but I want to further understand why
that's important to you.
—
Reply to this email directly, view it on GitHub
https://github.com/BookStackApp/BookStack/issues/5063#issuecomment-2162651947,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AKP3L7ZSGROADUDIH3XKZ43ZHAORRAVCNFSM6AAAAABJFEDNY2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCNRSGY2TCOJUG4
.
You are receiving this because you were mentioned.Message ID:
@.***>

We could also remove them according to a date filter.

+1 as currently I manually delete old revisions one by one, which is quite tedious. A cron job would be also welcome to clean up old revisions.
For the GUI side of things, here are two screenshots from ProcessWire showing how admins can manage log entries in the backend (chop / burn):

I could imagine something similar regarding BookStack's revisions, both globally and on a page-by-page basis.

I imagined the same UI, it perfectly fit with the main Bookstack theme.
Le sam. 15 juin 2024 à 16:32, Szabesz @.***> a écrit :

We could also remove them according to a date filter.
+1 as currently I manually delete old revisions one by one, which is quite
tedious. A cron job would be also welcome to clean up old revisions.
For the GUI side of things, here are two screenshots from ProcessWire
showing how admins can manage log entries in the backend (chop / burn):
ProcessWire-log-manager.png (view on web)
https://github.com/BookStackApp/BookStack/assets/7194945/40694512-7d5b-4830-9f03-de2ae56272e6
ProcessWire-log-manager-chop.png (view on web)
https://github.com/BookStackApp/BookStack/assets/7194945/383c4f0b-8af0-44d8-bacf-2e1875c3bb58
I could imagine something similar regarding BookStack's revisions, both
globally and on a page-by-page basis.
—
Reply to this email directly, view it on GitHub
https://github.com/BookStackApp/BookStack/issues/5063#issuecomment-2169786738,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AKP3L732ZX5GEZ3U6V4HC53ZHRF7JAVCNFSM6AAAAABJFEDNY2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCNRZG44DMNZTHA
.
You are receiving this because you were mentioned.Message ID:
@.***>


Add RFC for constraints & indexes in the schema

 Define constraints & indexes in the core graph schema

@oskarhane I've updated the RFC with what we discussed last week, will merge in now


[Nomination] CosmosArcade

Who are you nominating?
CosmosArcade project built on Juno
What are you nominating them for?
CosmosArcade is a DAO creating fun games as independent smart contracts, connected all togheder by a common tokenomics. They will do an airdrop with a public totally random cerimony
Please provide links to their work.
https://github.com/cosmos-arcade/wasmgame-contracts
https://github.com/cosmos-arcade/airdrop-helper
https://github.com/cosmos-arcade/white-paper

added more links

Looks cool! Proper place to apply and new process is mentioned here: https://medium.com/hack-juno-dao/hack-juno-280670cd71b2


Add specification for moving array axes to new positions

This PR

resolves https://github.com/data-apis/array-api/issues/483 by adding a specification for moveaxis.
signatures across array libraries are consistent. Only TensorFlow does not have moveaxis in its main namespace, but it does include it in its experimental NumPy namespace.

Questions

Bikeshed: we intentionally ensure consistent naming with permute_dims and expand_dims. Should we be consistent here in renaming moveaxis to, e.g., move_dims? PyTorch predominantly uses the dims convention and aliases moveaxis as movedim, which is not a perfect match given the missing _ and plural form dims.

Update: leaving name as is as moveaxis given widespread array library usage of moveaxis. Renaming to something consistent with permute_dims and expand_dims would likely cause unnecessary churn for insufficient benefit.

This looks fairly straightforward, nice.

Bikeshed: we intentionally ensure consistent naming with permute_dims and expand_dims. Should we be consistent here in renaming moveaxis to, e.g., move_dims?

Given signatures for all libraries match and the moveaxis name is fine, I think this is about as good an example as we can have for "go with prior art".

During the consortium workgroup meeting on 27 July 2023, consensus was to move this API forward and that moveaxis is the preferred name given its widespread usage in the array library ecosystem.
Accordingly, this PR should be ready for merge.

As this PR is straightforward, the API has broad support across the ecosystem, and there is working group consensus to move this API forward, I'll go ahead and merge. Any further updates prior to 2023 spec finalization can be made in subsequent PRs. Merging...


Add logging to debug intermittent test

Going to just land this PR to add logging for now to debug this intermittent test as it appears to not do it when you observe it of course.


metasploit: 6.0.53 -> 6.0.54

Motivation for this change
Update to latest upstream release  6.0.54
Things done

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

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

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
21.11 Release Notes (or backporting 21.05 Relase notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 131195 run on x86_64-linux 1

1 package built:

metasploit


wip: new(docker,pkg/driverbuilder): use cmake instead of makefile template to build kmod and bpf

What type of PR is this?
/kind feature
Any specific area of the project related to this PR?
/area pkg
What this PR does / why we need it:
Which issue(s) this PR fixes:

Fixes #
Special notes for your reviewer:
Docker images changes will be split to their own PR if maintainers agree this is the way to go.
Also: while testing i discovered that recent archlinux kmods fail to build (eg: against 6.6.1.arch1-1) even with master images and code.
level=DEBUG msg="\x02\x00\x00\x00\x00\x00\x00\x7f./tools/objtool/objtool: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found (required by ./tools/objtool/objtool)\n"

Will investigate further, but it seems we need a builder image with an updated glibc version.
Opened an issue to track that: #303
Does this PR introduce a user-facing change?:
new(docker,pkg/driverbuilder): use cmake instead of makefile template to build kmod and bpf

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: FedeDP
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [FedeDP]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

cc @falcosecurity/driverkit-maintainers

I will also need to update the new local  builder to use cmake when downloading sources. (this is a reminder for myself!)

Need more fixes to the new local (as in "internal to containers") module and probe paths (that will now be /tmp/driver/build/driver/$drivername.ko and /tmp/driver/build/driver/bpf/probe.o).
Everything else seems working fine though ;)

TODO: i need to also fix the local builder with local sources case.

Done.

/hold for review

So my vote here is to merge this, try it downstream, and then report back. I love this change, and we're ready to merge it. If something breaks downstream, we can handle it in a separate MR/release

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: EXONER4TED, FedeDP
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [EXONER4TED,FedeDP]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: EXONER4TED, FedeDP
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [EXONER4TED,FedeDP]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

/unhold


User Guide minor changes

Also do push from a separate branch and not the master branch next time 👍🏻


[release 0.36] Only send vmi defined event when domain is being created the first time

Manual backport of #6610
NONE

@davidvossel Can this be closed?


TS: do more work in parallel

This PR speeds up TypeScript extraction by making the Java process and Node.js process do more work in parallel.
When the Node.js process has sent an AST, it immediately starts to work on the next AST while the Java process is processing the first one. In order for the Node.js process knows which file to work on next, a list of files to work on is sent in advance using the new prepare-files command.
In principle the Node.js process could prepare more than one file in advance, but then we risk being busy when the Java process is ready to receive the next file, delaying overall extraction. So it only looks one file ahead.
Extraction-time benchmarks:

Project
Before
After
Difference

vscode

Basic
133s
114s
19s  (14%)

Full
259s
211s
48s  (19%)

TypeScript

Basic
48s
41s
7s   (15%)

Full
466s
455s
11s  (2%)

Angular

Basic
153s
138s
15s (10%)

Full
295s
235s
60s (20%)

The full-mode extraction for TypeScript itself is a bit of an outlier, but I'll look into that separately.

@xiemaisi it will most likely conflict with the parallel extraction PR. I'm happy to withhold this until that lands, as long as it gets in before feature freeze.


Not able to move multi tab in the terminal list at the same time

VS Code Version:
Version: 1.91.1 (Universal)
Commit: f1e16e1e6214d7c44d078b1f0607b2388f29d729
Date: 2024-07-09T22:07:54.982Z
Electron: 29.4.0
ElectronBuildId: 9728852
Chromium: 122.0.6261.156
Node.js: 20.9.0
V8: 12.2.281.27-electron.0
OS: Darwin arm64 23.5.0
OS Version: MacOS Sonoma 14.5

Current behaviour

Expect behaviour

Do some digging, it seems like a missing feature. Open a PR to implement this feature.


Suppress setuptools' warning

Setuptools expects distutils to be imported after it.

Codecov Report

Merging #1319 into develop will not change coverage.
The diff coverage is 100.00%.

@@            Coverage Diff            @@
##           develop     #1319   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           34        34
  Lines         2178      2179    +1
=========================================
+ Hits          2178      2179    +1

Thanks for raising this! I've fixed this in develop (couldn't use this exact solution due to linting failing)

@timothycrosley Thanks for the quick fix!


Use standard gateway api bundle

The current gateway CRD is out of sync with current release, which is causing issues with other lib that also include gateway api.
Please use the standard bundle from upstream: https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.1.0/standard-install.yaml

It would be great if the installation of CRDs are optional.
In the same cluster there could be another Gateway controller Helm chart that tries ti deploy upstream CRDs.

can we get this fixed? it is blocking from deploying anything else in cluster that has to do with gateway api

Hi!

It would be great if the installation of CRDs are optional.

You can use the --skip-crds helm install flag to skip CRD installation. In this case,  you can use your gateway api version, but have to manually install the Stunner CRD in your cluster, as shown here:
kubectl apply -f https://raw.githubusercontent.com/l7mp/stunner-helm/refs/heads/main/helm/stunner-gateway-operator/crds/stunner-crd.yaml

We are working on documenting this feature in the install guide.

We are working on documenting this feature in the install guide.

Just for the record: https://docs.l7mp.io/en/latest/INSTALL/#skip-install-crds

I didnt think it was possible to set this per application in argocd, but seems they added the feature in 2.10...
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: cluster-services
  namespace: argocd
  finalizers:
  - resources-finalizer.argocd.argoproj.io
spec:
  goTemplate: true
  generators:
  - matrix:
      generators:
      - git:
          repoURL: ...
          revision: HEAD
          directories:
          - path: "cluster-services/*"
          pathParamPrefix: namespace
      - matrix:
          generators:
          - git:
              repoURL: ...
              revision: HEAD
              directories:
              - path: "{{`cluster-services/{{.namespace.path.basename}}/*`}}"
              pathParamPrefix: service
          - clusters:
              selector:
                matchLabels:
                  argocd.argoproj.io/secret-type: cluster
                  kubernetes.io/environment: dev
  template:
    metadata:
      name: '{{`cluster-services-{{.name}}-{{.service.path.basename}}`}}'
    spec:
      project: default
      source:
        repoURL: ...
        targetRevision: HEAD
        path: '{{`{{.service.path.path}}`}}'
        helm:
          ignoreMissingValueFiles: true
          releaseName: '{{`{{.service.path.basename}}`}}'
          valueFiles:
          - values.yaml
          - {{`values-{{.name}}.yaml`}}
      destination:
        name: '{{`{{.name}}`}}'
        namespace: '{{`{{.namespace.path.basename}}`}}'
      syncPolicy:
        automated:
          prune: true
          selfHeal: false
          allowEmpty: true
        syncOptions:
        - CreateNamespace=true
        - ServerSideApply=true
        retry:
          limit: 3 # number of failed sync attempt retries; unlimited number of attempts if less than 0
          backoff:
            duration: 5s
            factor: 3
            maxDuration: 3m
      ignoreDifferences:
      - group: storage.k8s.io
        kind: CSIDriver
        jsonPointers:
          - /spec/seLinuxMount
      - group: velero.io
        kind: Backup
      - kind: PersistentVolume
        jsonPointers:
        - /spec/claimRef/resourceVersion
        - /spec/claimRef/uid
        - /status/lastPhaseTransitionTime
  templatePatch: |
    {{`{{- if eq .service.path.basename "stunner-gateway-operator" }}`}}
    spec:
      source:
        helm:
          skipCrds: true
    {{`{{- end }}`}}


register error in loadingManager when JSONWriter.put fails

If for whatever reason JSONWriter fails to put the updated document, it causes loadingManager to be indefinitely busy.
This change properly registers the failure.

Merged to rc- 38 https://github.com/Smithsonian/dpo-voyager/commits/rc-38/


Remove Björn

'Cause I'm leeeaaaaaving, on a jetplane!
Going to Sweden for another conference on the 27th of October =/

Merged as 020fda4.


Suez wont launch on v1.9 after update

When attempting to launch suez after update the tool is reinstalled
Once installation is done following is displayed in terminal

Worth to add i am running reckless 23.05 CLN version.

CLM 23.05 could be another problem, they have some breaking changes.
For the suez on v1.9.0 please run once: patch code on command line (or SSHMENU > UPDATE > PATCH > PATCHMENU > PATCH) & reboot.

Now i am getting different errors
I fear its connected with the CLN23.05


argument seems to miss in reselect

Here, https://github.com/wbuchwalter/ng-redux/blob/master/src/components/connector.js#L68
function getStateSlice(state, mapStateToScope) {
  const slice = mapStateToScope(state);

A props argument should be passed (I am newbie in redux/reselect, so I can't tell how, sorry).
I tried to follow the documentation of reselect.
Here is my use case :
import {createSelector} from 'reselect';

const applicationSelector = createSelector(
  (state, ownProps) => {
    console.log('applicationSelector 1', state, ownProps); //got state and undefined, I would have {foo: 'bar'}
    return state.router;
  },
  routerState => routerState.name
});

export class LayoutApplicationSwitcherController {
  constructor($scope, $ngRedux) {
    'ngInject';
    this.foo = 'bar';
    $scope.$on('$destroy', $ngRedux.connect(applicationSelector)(this));
  }
}

oups, I just found connect is not part of redux but redux-react, and the API is not the same (but it would be pretty cool to be similar ;) )

Yea, this is something specific to react.
We don't really have an equivalent to the props object in AngularJS.
Passing a reference to the controller could work with the controllerAs syntax, but will not work otherwise  etc.
I'm closing this issue since I don't plan on doing this in a foreseeable future, and this is not really an issue per se, but if someone wants to play with that and submit a PR it's welcome.
Thanks!

Thank you for the answer. Well if I have no better choices, I may try something.
Btw, thanks for developing this library.


Build release binaries for Terraform Registry

Build recommended operating system and architecture, hash and sign as per TF docs.
Still need to write docs to work with Registry. Raised issue #28

So I have pushed a complete change to the original PR.
I have reverted to using the goreleaser tool. It was too brittle to conform to all the file name subtleties within a makefile.

LGTM


Question re default .format()

Description of the Issue and Steps to Reproduce:
use .format() on a date running in a browser in GMT with daylight savings.  I get a result like "2018-07-03T09:31:11 01:00".   Note the space before the zero offset.
Using IE 11 on Windows 10 and moment 2.22.2.
Pass formatted date to .NET 4.7.1 app and use DateTimeOffset.TryParse(s, out var d).
TryParse fails.
If there is a +/-, e.g. "2018-07-03T09:31:11+00:00" then  TryParse succeeds.
Who is correct in allowing a space with an offset of 0, moment or .NET?

something weird going on.  In the browser there is a plus, when it get's to .NET it's disappeared - sometimes.
Closing.


scilab-bin: adding application launchers

Moving the desktop configuration files from opt/scilab-$ver/share/applications to share/applications, making the required changes, and moving the icons in opt/scilab-$ver/share/icons to share/icons.
Motivation for this change
Presently the scilab-bin package provides no application launchers for the Scilab, Scinotes and Xcos apps. In this PR I am adding these launchers.
On lines 76, 79 and 82 I am replacing Terminal=false with Terminal=true in the Scilab, Scinotes and Xcos desktop config files, as I've tried launching these apps using these launchers, without the Terminal=true change, and they always crash on start up. Changing to Terminal=true fixes this problem for all three apps.
Things done

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

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

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

Largely used sed as I know how to use it, I don't know how to use substituteInPlace. I'll add the comments.

Largely used sed as I know how to use it, I don't know how to use substituteInPlace.

substituteInPlace usually looks like:
substituteInPlace file \
  --replace pattern replacement

Though it isn't a problem if you don't use it.

Are those changes satisfactory?

Are those changes satisfactory?

I think so. I'm verifying locally now.

My last commit is essentially me making things more concise.

$out/opt/scilab-6.0.1/bin/scilab-cli doesn't execute and by extension the desktop file doesn't launch the application.

Aha, lol, forgot to create the needed symlink.

While I'm at it, do you know why there's scilab-${ver} and scilab-${majorVer} symlinks created in $out/bin? What purpose do these two symlinks serve?

While I'm at it, do you know why there's scilab-${ver} and scilab-${majorVer} symlinks created in $out/bin? What purpose do these two symlinks serve?

I don't really know. You could try removing them and see if it works. Git blame reveals that it's always been here.

Ah, that is unexpected.

Would you mind also moving $out/opt/scilab-6.0.1/share/{appdata,locale,mime} to $out/share? Though I'm not certain about locale.

Now I'm going to check if it builds FTR
@GrahamcOfBorg build scilab-bin

@fusion809 Thanks for contributing :sparkles:


docs: Update showcase.md file

Added a new showcase entry for Meme Composer site
PR Checklist
Please check if your PR fulfills the following requirements:

[x] The commit message follows our guidelines: https://github.com/scullyio/scully/blob/main/CONTRIBUTING.md#commit
[ ] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features)

PR Type
What kind of change does this PR introduce?

[ ] Bugfix
[ ] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[x] Other... Please describe: Proposed a new showcase entry addition

What is the current behavior?

Issue Number: N/A
What is the new behavior?
Does this PR introduce a breaking change?

[ ] Yes
[x] No

Other information

 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.


[Bug]: Charset not set properly

What happened?
When uploading a file with ãâá (etc), it bugs out on the file overview page.

What did you expect to happen?
To display the chars properly.
Version
the version up on day 15/06/2024 of the dashboard
Reproduction Steps
upload a file containing ãâáà
Relevant log output
No response
Code of Conduct

[X] I agree to follow this project's Code of Conduct

What version of the SDK are you uploading from?
Tried with a dashboard upload and it worked for Swedish characters:


JS error when building any XCode example

this is what I get when I build any example and create a new project.
/Users/me/code/react-native-desktop/local-cli/cli.js:53
  const setupEnvScript = /^win/.test(process.platform)
  ^^^^^
SyntaxError: Use of const in strict mode.
    at exports.runInThisContext (vm.js:73:16)
    at Module._compile (module.js:443:25)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:501:10)
    at startup (node.js:129:16)
    at node.js:814:3
Process terminated. Press <enter> to close the window

What Node version do you use? ’node -v’
On Fri, 18 Dec 2015 at 19:58, Gregory<EMAIL_ADDRESS>wrote:

this is what I get when I build any example and create a new project.
/Users/me/code/react-native-desktop/local-cli/cli.js:53
const setupEnvScript = /^win/.test(process.platform)
^^^^^
SyntaxError: Use of const in strict mode.
at exports.runInThisContext (vm.js:73:16)
at Module._compile (module.js:443:25)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:501:10)
at startup (node.js:129:16)
at node.js:814:3
Process terminated. Press  to close the window
—
Reply to this email directly or view it on GitHub
https://github.com/ptmt/react-native-desktop/issues/23.

v0.12.2

Sorry, React Native works only on Node 4.2+
On Fri, 18 Dec 2015 at 20:01, Gregory<EMAIL_ADDRESS>wrote:

v0.12.2
—
Reply to this email directly or view it on GitHub
https://github.com/ptmt/react-native-desktop/issues/23#issuecomment-165839708
.

Work after reinstalling. Thanks


Packaging on linux

This PR introduces a way to easily build the application for a Linux environment. Mac and Windows will come as soon as I have more free time (or others wanna help out).
I still need to test if the icons and menu shortcuts work well on a fresh distro install, the workstation I work with is fairly messed up in this regard.
But it's a decent start. Mac release coming soon.

@ddavidebor Thanks so much for doing this! Packaging worked great on my Ubuntu machine. I am running into a problem when I execute the app though. As soon as the app window opens, it just sits on the splash screen and doesn't actually start JupyterLab. This suggests to me that the Jupyter server isn't starting up. Any ideas on how to debug this?
I also have a newbie question for you. Is the use of docker just to make the packaging code platform independent, or is there another reason why it's necessary?

Docker it's not particularly necessary, you can install all the required tools to do the build, but it's convenient and building releases from a standard environment is good practice. It also has Wine and mono included to build for windows.
I am running into a few issues too. For example it finds only my system default python, and not anaconda. I think the problem is that it's being launched from the desktop environment instead of from the terminal and it does not inherit all the environmental variables from the .bashrc (or similar) file.
It should be possible to launch the development tool with the shortcut from #41 #44

Yeah i think that's it: when launched from the terminal with jupyterlab_app works like a charm

mmh perhaps we should let the user search and select the correct jupyter notebook server ? sooner or later we're going to need a well-generalized UI to do that... but it's not immediate to implement.

I agree, I created an issue (#48) to talk about it.

@lucbouchard1 Everything seems ready to build for linux.
Has anyone tested the rpm?

@ddavidebor I haven't tested the rpm yet. I'll spin up a Fedora VM and try it out.

https://transfer.sh/RtFNo/jupyterlab_app_0.0.1_amd64.deb
https://transfer.sh/8ON6h/jupyterlab_app-0.0.1.tar.gz
https://transfer.sh/64Hs4/jupyterlab_app-0.0.1.x86_64.rpm

I needed to yum install libXScrnSaver in order to get the application to launch in Fedora, but other than that the install worked well. There appears to be a couple bugs that are internal to the JupyterLab app, but those are separate from this. I'm going to go ahead and merge this PR.

@lucbouchard1 did you have to install it manually or was the dependency resolved automatically?

@ddavidebor I needed to install manually. Looks like a mirror of atom/atom#13176

yep. #58 . I'll fix it in the following days.

Providing an AppImage would have, among others, these advantages:

Applications packaged as an AppImage can run on many distributions (including Ubuntu, Fedora, openSUSE, CentOS, elementaryOS, Linux Mint, and others)
One app = one file = super simple for users: just download one AppImage file, make it executable, and run
No unpacking or installation necessary
No root needed
No system libraries changed
Works out of the box, no installation of runtimes needed
Optional desktop integration with appimaged
Optional binary delta updates, e.g., for continuous builds (only download the binary diff) using AppImageUpdate
Can optionally GPG2-sign your AppImages (inside the file)
Works on Live ISOs
Can use the same AppImages when dual-booting multiple distributions

Here is an overview of projects that are already distributing upstream-provided, official AppImages.
electron-builder can produce AppImages automatically for you.

I agree i'll open an issue


Localize all dataset names

About the PR
Localizes all names.
This PR makes name localizing possible via standard .ftl files.
Let me know, If I missed something or something should be changed.
This PR will lead to a lot of conflicts for forks, that translated datasets into other language.
Why / Balance
Reject dataset .yml editing, embrace localizedDataset.
Technical details
GetFTLName is no longer static.
In some systems, the variable with type <DatasetPrototype> has been changed to <LocalizedDatasetPrototype> to allow localized strings to work properly.
Media

Everything works as before:

Requirements

[x] I have read and am following the Pull Request and Changelog Guidelines.
[x] I have added media to this PR or it does not require an ingame showcase.

Changelog

No CL

I'm still not sure how string variables should be named, and by that I mean ordering, like in this commit 3ab4257

Test fail seems unrelated.

dear god

conflicts in 3

dear god

Yeah, this PR is going to make a lotta conflicts for forks. Even if I decided to spit it up into separate PRs, one of them was going to have a lot of changes, just because of quantity of names that are used by NamingSystem

is there an easy way to port all datasets lines in locale?

is there an easy way to port all datasets lines in locale?

I was using Notepad++ with some regular expressions to edit more easily. But I think somewhat of dataset migration script could be made to make forks life easier.

I will make a simple and a bit whacky Python script specifically for this PR. I hope it'll save some time for forks.
I will attach it to my PR description with instruction to use.

This pull request has conflicts, please resolve those before we can evaluate the pull request.

unbelievable

Blessed localization effort, but can we somehow split this into smaller PRs? No way I will be able to review a 10k diff.

Blessed localization effort, but can we somehow split this into smaller PRs? No way I will be able to review a 10k diff.

Yeah, sure. But then it will require merging all of them 'case it also requires variables like names to be of type LocalizedDatasetPrototype
Should I close this one, or just move out most of changes into separate PRs?

Blessed localization effort, but can we somehow split this into smaller PRs? No way I will be able to review a 10k diff.

Yeah, sure. But then it will require merging all of them 'case it also requires variables like names to be of type LocalizedDatasetPrototype
Should I close this one, or just move out most of changes into separate PRs?

I think I should just leave variables .cs editing here and make list of PRs that required for this PR

I guess the biggest category is the names dataset. If they can be grouped somehow we can review them one by one, and then hopefully merge them in one go without any conflicts.

I think I should just leave variables .cs editing here and make list of PRs that required for this PR

sounds good to me

I guess the biggest category is the names dataset. If they can be grouped somehow we can review them one by one, and then hopefully merge them in one go without any conflicts.

I think I should just leave variables .cs editing here and make list of PRs that required for this PR

sounds good to me

Got it

I think it is ready. Tell me if I did something wrong or something needs correcting.


linux_4_14: remove

Description of changes
will reach its end of life within 23.11
Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Meanwhile at Amazon Linux...
Linux hostname 4.14.326-245.539.amzn2.x86_64 #1 SMP Tue Sep 26 09:59:02 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux


update readme

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 33.61%. Comparing base (ac3378c) to head (e02b91b).
Report is 7 commits behind head on main.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #111      +/-   ##
==========================================
+ Coverage   33.59%   33.61%   +0.01%
==========================================
  Files         129      129
  Lines       25269    25269
==========================================
+ Hits         8489     8494       +5
+ Misses      16298    16295       -3
+ Partials      482      480       -2

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


Training code for instance-segmentation-security-0050

Training and demo code for instance-segmentation-security-0050 model.

@snosov1 @DmitriySidnev @AlexanderDokuchaev


make test fails

Clean checkout of deepdive, doing make test fails.
05:05:56 [sampler] INFO  Executing: /home/ubuntu/deepdive/util/sampler-dw-linux gibbs -w /home/ubuntu/deepdive/out/test_coin/graph.weights -v /home/ubuntu/deepdive/out/test_coin/graph.variables -f /home/ubuntu/deepdive/out/test_coin/graph.factors -e /home/ubuntu/deepdive/out/test_coin/graph.edges -m /home/ubuntu/deepdive/out/test_coin/graph.meta -o /home/ubuntu/deepdive/out/test_coin -l 500 -i 500 -s 1 --alpha 0.1 --diminish 0.99 --quiet
05:05:56 [sampler] INFO
05:05:56 [sampler] INFO  #################MACHINE CONFIG#################
/usr/share/sbt-launcher-packaging/bin/sbt-launch-lib.bash: line 41: 28595 Killed                  "$@"
make: *** [test] Error 137```

Running the sampler on its own fails too:

ubuntu@deepdive:~/deepdive$ /home/ubuntu/deepdive/util/sampler-dw-linux gibbs -w /home/ubuntu/deepdive/out/test_coin/graph.weights -v /home/ubuntu/deepdive/out/test_coin/graph.variables -f /home/ubuntu/deepdive/out/test_coin/graph.factors -e /home/ubuntu/deepdive/out/test_coin/graph.edges -m /home/ubuntu/deepdive/out/test_coin/graph.meta -o /home/ubuntu/deepdive/out/test_coin -l 500 -i 500 -s 1 --alpha 0.1 --diminish 0.99 --quiet

\#################MACHINE CONFIG#################
\# # NUMA Node        : 1
\# # Thread/NUMA Node : 1
\################################################

\#################GIBBS SAMPLING#################
\# fg_file            : /home/ubuntu/deepdive/out/test_coin/graph.meta
\# edge_file          : /home/ubuntu/deepdive/out/test_coin/graph.edges
\# weight_file        : /home/ubuntu/deepdive/out/test_coin/graph.weights
\# variable_file      : /home/ubuntu/deepdive/out/test_coin/graph.variables
\# factor_file        : /home/ubuntu/deepdive/out/test_coin/graph.factors
\# output_folder      : /home/ubuntu/deepdive/out/test_coin
\# n_learning_epoch   : 500
\# n_samples/l. epoch : 1
\# n_inference_epoch  : 500
\# stepsize           : 0.1
\# decay              : 0.99
\################################################
\# IGNORE -s (n_samples/l. epoch). ALWAYS -s 1. #
\# IGNORE -t (threads). ALWAYS USE ALL THREADS. #
\################################################
\# nvar               : 18
\# nfac               : 0
\# nweight            : 1
\# nedge              : 0
\################################################
LOADED VARIABLES: #18
         N_QUERY: #9
         N_EVID : #9
*** Error in `/home/ubuntu/deepdive/util/sampler-dw-linux': free(): invalid pointer: 0x00007f9030146888 ***
Aborted

which branch are you using?

Head

The problem is not in the sampler. The log info has nfac : 0 and nedge: 0, which indicates the factor graph is not correct. Can you post the full log?

It's pretty long. See http://pastebin.com/un3A01j5

line 3041 sh: 1: bc: not found
Sorry we should have written this clearly: Deepdive makes use of bash calculator bc. I think the problem will be gone if you install bc.

Thanks. That's looking better.

@netj @feiranwang We need to check for dependencies! This is a nasty, annoying bug!

gnuplot is also a dependency (though it doesn't seem to fail without it?)

Thanks for pointing out more dependency issues.  We'll get a fix out there that detects them earlier very soon.  gnuplot is currently used for rendering the calibration plot, and you simply don't get the images in the final output without it.


I cant deploy to zeit now

Hello im trying to deploy graphql-auth example to zeit now platform but is given me this error:
Changelog<EMAIL_ADDRESS>
Deploying ~\Documents\modern-apps\lightmatter\backend2 under golfredopf
Using project express-photon
NOTE: To deploy to production (express-photon-blond-iota.now.sh), run now --prod
https://express-photon-b8wq0blvi.now.sh [2s]
Error! Build failed
Error! Check your logs at https://express-photon-b8wq0blvi.now.sh/_logs or run now logs https://express-photon-b8wq0blvi.now.sh

after use:
now -b POSTGRESQL_URL=@postgresql_url -e POSTGRESQL_URL=@postgresql_url

Hello, what's written in that logs
https://express-photon-b8wq0blvi.now.sh
I think you should check them and show us.

This is the error :D ..

graphql-auth@ postinstall /zeit/100f4e5b
--
08:25:25 AM | > npm -s run generate
08:25:28 AM | Generating Photon.js to ./node_modules/@prisma/photon
08:25:31 AM | Done in 3.40s
08:25:33 AM | npm WARN graphql-auth@ No repository field.
08:25:33 AM | added 430 packages from 348 contributors in 24.438s
08:25:33 AM | Running "npm run build"
08:25:33 AM | > graphql-auth@ build /zeit/100f4e5b
08:25:33 AM | > npm -s run clean && npm -s run generate && tsc
08:25:36 AM | Generating Photon.js to ./node_modules/@prisma/photon
08:25:40 AM | Done in 3.99s
08:25:44 AM | Error: No output directory named "public" found.
08:25:44 AM | More details: https://zeit.co/docs/v2/platform/frequently-asked-questions#missing-public-directory
08:25:44 AM | at validateDistDir (/zeit/569c8a01f40bdc4f/.build-utils/.builder/node_modules/@now/static-build/dist/index.js:132:15)
08:25:44 AM | at Object.build (/zeit/569c8a01f40bdc4f/.build-utils/.builder/node_modules/@now/static-build/dist/index.js:374:13)
08:25:44 AM | at
08:25:44 AM | at process._tickDomainCallback (internal/process/next_tick.js:228:7)
08:25:45 AM | worker exited with code 20 and signal null
08:25:47 AM | done

Have you setup now.json file?
{
  "name": "app-name",
  "version": 2,
  "builds": [
    {
      "src": "src/server.ts",
      "use": "@now/node@canary"
    }
  ],
  "routes": [
    {
      "src": "/",
      "dest": "src/server.ts"
    },
  ],
  "env": {
     ...
  },
  "regions": ["icn1", "hnd1"]
}

This is my now.json file. I placed it on the root directory.
You can change name, routes, env, regions.

thanks that solved the issue... now im have another problem.. :/ .. when i try to fetch something from frontend i get:
Access to fetch at 'https://app-name.golfredopf.now.sh/' from origin 'http://localhost:8080' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

Hi,
This is a CORS issue that can be fixed by using cors module on your server. For more information, read: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
For GraphQL auth example which uses graphql yoga, you can use the cors option bult in to GraphQL Yoga: https://github.com/prisma-labs/graphql-yoga#startoptions-options-callback-options-options--void----null-promisevoid
This is unrelated to Prisma now so I am going to close this, but feel free to reply here if you need any help.

Thanks for you help... i cant get this to work...
My prisma server.ts:
import { GraphQLServer } from 'graphql-yoga'
import { permissions } from './permissions'
import { schema } from './schema'
import { createContext } from './context'
const options = {
cors:{ origin: '*',
methods: ["POST"],
credentials: true,}
}
new GraphQLServer({
schema,
context: createContext,
middlewares: [permissions],
}).start( options =>
console.log(
🚀 Server ready at: http://localhost:4000\n⭐ See sample queries: http://pris.ly/e/ts/graphql-auth#5-using-the-graphql-api,
),
)
And my apollo client:
const httpLink = createHttpLink({
uri: 'https://app-name.golfredopf.now.sh',
})
const client = new ApolloClient({
cache: new InMemoryCache(),
link: errorLink.concat(authLink).concat(httpLink),
});
give me this error:
{error: "idpiframe_initialization_failed", details: "Not a valid origin for the client: http://localhos…itelist this origin for your project's client ID."}error: "idpiframe_initialization_failed"details: "Not a valid origin for the client: http://localhost:8080 has not been whitelisted for client ID<PHONE_NUMBER>96-knrl3gka66fldh83dao2rhgbblmd4un9.apps.googleusercontent.com. Please go to https://console.developers.google.com/ and whitelist this origin for your project's client ID."proto: Object
AppBootstrapper.tsx:39 [GraphQL error]: Message: Error in Photon:
Error: undefined target="exit" timestamp="2020-01-12T21:21:15.596Z" fields={"message":"1"}

Error: undefined target="exit" timestamp="2020-01-12T21:21:15.596Z" fields={"message":"1"}

Can you please use the alpha version of Prisma npm install prisma2@alpha and see what error message is there. We recently fixed the sereloization of error messages and this error would be more descriptive nore.

Are you using Apollo Client for your frontend app?
If then, you can provide your apollo client settings.
I'm not very sure but your client fetch option also matters.

I try this:
const httpLink = createHttpLink({
uri: 'https://app-name.golfredopf.now.sh',
credentials:'same-origin',
fetchOptions: {
mode: 'cors',
method:['POST']
}
})
with:
const options = {
cors:{ origin: '*',
methods: ["POST"],
credentials: true,}
}
new GraphQLServer({
schema,
context: createContext,
middlewares: [permissions],
}).start((options) =>
console.log(
🚀 Server ready at: http://localhost:4000\n⭐ See sample queries: http://pris.ly/e/ts/graphql-auth#5-using-the-graphql-api,
),
)
and i get this error
:
ApolloError.ts:57 Uncaught (in promise) Error: GraphQL error: Error in Photon:
Error: undefined target="exit" timestamp="2020-01-14T17:07:44.932Z" fields={"message":"255"}
at NodeEngine.engineReady (:8080/var/task/node_modules/@prisma/photon/runtime/index.js:3545)
at :8080/var/task/node_modules/@prisma/photon/runtime/index.js:3468
at new ApolloError (ApolloError.ts:57)
at Object.next (QueryManager.ts:225)
at notifySubscription (Observable.js:130)
at onNotify (Observable.js:165)
at SubscriptionObserver.next (Observable.js:219)
at observables.ts:12
at Set.forEach ()
at Object.next (observables.ts:12)
at notifySubscription (Observable.js:130)
at onNotify (Observable.js:165)

try this
FOR BACKEND
just delete options for allow every origin.
new GraphQLServer({
  schema,
  context: createContext,
  middlewares: [permissions],
}).start(() =>
  console.log(
    `🚀 Server ready at: http://localhost:4000\n⭐ See sample queries: http://pris.ly/e/ts/graphql-auth#5-using-the-graphql-api`,
  ),
)

or if you want to allow only few urls
const options = {
  cors:{
  origin: [
  '~~~~'
  'http://localhost:3000',
  ],
  credentials: true,}
  }

FRONTEND
const httpLink = createHttpLink({
  uri: 'https://app-name.golfredopf.now.sh',
  credentials:'include',
  fetchOptions: {
    mode: 'cors',
    method:['POST']
}
})

or
const httpLink = createHttpLink({
  uri: 'https://app-name.golfredopf.now.sh',
  credentials:'include',
  fetchOptions: {
    mode: 'no-cors'
}
})

Try this and let me know!

okok if i use:
new GraphQLServer({
schema,
context: createContext,
middlewares: [permissions],
}).start(() =>
console.log(
🚀 Server ready at: http://localhost:4000\n⭐ See sample queries: http://pris.ly/e/ts/graphql-auth#5-using-the-graphql-api,
),
)
with:
const httpLink = createHttpLink({
uri: 'https://app-name.golfredopf.now.sh',
credentials:'include',
fetchOptions: {
mode: 'no-cors'
}
})
i get :
POST https://app-name.golfredopf.now.sh/ 500
(anonymous) @ httpLink.ts:134
Subscription @ Observable.js:183
subscribe @ Observable.js:262
(anonymous) @ index.ts:24
Promise.then (async)
(anonymous) @ index.ts:23
Subscription @ Observable.js:183
subscribe @ Observable.js:262
(anonymous) @ observables.ts:10
Subscription @ Observable.js:183
subscribe @ Observable.js:262
(anonymous) @ QueryManager.ts:222
(anonymous) @ QueryManager.ts:210
step @ tslib.es6.js:97
(anonymous) @ tslib.es6.js:78
(anonymous) @ tslib.es6.js:71
__awaiter @ tslib.es6.js:67
QueryManager.mutate @ app.js:3212
ApolloClient.mutate @ ApolloClient.ts:348
Mutation._this.mutate @ Mutation.tsx:225
Mutation._this.runMutation @ Mutation.tsx:181
onPress @ CreateTodoPanel.tsx:332
HoverButton._this._onPress @ HoverButton.tsx:39
Button._this.onClick @ Button.js:71
callCallback @ react-dom.development.js:149
invokeGuardedCallbackDev @ react-dom.development.js:199
invokeGuardedCallback @ react-dom.development.js:256
invokeGuardedCallbackAndCatchFirstError @ react-dom.development.js:270
executeDispatch @ react-dom.development.js:561
executeDispatchesInOrder @ react-dom.development.js:583
executeDispatchesAndRelease @ react-dom.development.js:680
executeDispatchesAndReleaseTopLevel @ react-dom.development.js:688
forEachAccumulated @ react-dom.development.js:662
runEventsInBatch @ react-dom.development.js:816
runExtractedEventsInBatch @ react-dom.development.js:824
handleTopLevel @ react-dom.development.js:4820
batchedUpdates$1 @ react-dom.development.js:18932
batchedUpdates @ react-dom.development.js:2150
dispatchEvent @ react-dom.development.js:4899
interactiveUpdates$1 @ react-dom.development.js:18987
interactiveUpdates @ react-dom.development.js:2169
dispatchInteractiveEvent @ react-dom.development.js:4876
Show 11 more frames
ApolloError.ts:57 Uncaught (in promise) Error: Network error: Unexpected end of JSON input
at new ApolloError (ApolloError.ts:57)
at Object.error (QueryManager.ts:256)
at notifySubscription (Observable.js:134)
at onNotify (Observable.js:165)
at SubscriptionObserver.error (Observable.js:224)
at observables.ts:15
at Set.forEach ()
at Object.error (observables.ts:15)
at notifySubscription (Observable.js:134)
at onNotify (Observable.js:165)
And With :
const httpLink = createHttpLink({
uri: 'https://app-name.golfredopf.now.sh',
credentials:'include',
fetchOptions: {
mode: 'cors',
method:['POST']
}
})
i get:
Access to fetch at 'https://app-name.golfredopf.now.sh/' from origin 'http://localhost:8080' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'.
ApolloError.ts:57 Uncaught (in promise) Error: Network error: Failed to fetch
at new ApolloError (ApolloError.ts:57)
at Object.error (QueryManager.ts:256)
at notifySubscription (Observable.js:134)
at onNotify (Observable.js:165)
at SubscriptionObserver.error (Observable.js:224)
at observables.ts:15
at Set.forEach ()
at Object.error (observables.ts:15)
at notifySubscription (Observable.js:134)
at onNotify (Observable.js:165)

Thanks a lot for reporting 🙏
This issue is fixed in the latest version of prisma2.
You can try it out with npm i -g prisma2.
In case it’s not fixed for you - please let us know and we’ll reopen this issue!

Is there a guide how to deploy prisma to zeit? The available guides seem outdated :(
https://www.prisma.io/docs/tutorials/deploy-prisma-servers/zeit-now-and-google-cloud-sql-mohj5eiwot

I recently realized that I was including
  "routes": [
    {
      "headers": {
        "Access-Control-Allow-Origin": "*",
        "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS",
        "Access-Control-Allow-Headers": "X-Requested-With, Content-Type, Accept"
      },
      "src": "/graphql",
      "dest": "src/server.ts"
    },
]

this option in my now.json file.
Maybe this might have cleared my cross origin issue.


Multiple spaces in header triggers error

Description
When typing multiple spaces the ajax search gives errors because PHP does a trim on the input.
Possible Solution
Trim in javascript before calculating search length.
Additional context

Screen Recording 2020-08-25 at 15.09.53.mov.zip

You can convert screen recordings into gif for easier viewing experience :) watch-out 10mb limit

You can convert screen recordings into gif for easier viewing experience :) watch-out 10mb limit

I've added it, but the quality loss is extreme 😅

Enough to get a gist of the actions happening. But I get you. It is not always very pleasant but I had good experiences in the past

Fixed in https://github.com/shopware/platform/pull/1226


Add some text explaining clusterid

Closes #478
Signed-off-by: Doug Davis<EMAIL_ADDRESS>

I retract my previous comments on this PR - LGTM

LGTM

2 needed

LGTM


Time Keeper Wireframe

Create a clock for keeping track of time in game.
Should allow for simple time keeping by way of advancing game time by increments based on common activities in game like 6 seconds per combat turn, or 1hr per short rest.
It should expose it's data for use elsewhere in game specifically in the log.

Wireframes for a time and weather tracking widget - no support in these wireframes for editing the quick time buttons or advancing time or changing weather - all things we will still need.

Default:

Edit Time:

Edit Weather:

The idea then is that you would just need to click an editable portion to enter edit mode. Thus you could easily add custom increments or change the season, weather, or temperature.
Season should auto change based on quarter increments of a year. Weather should be random yet appropriate for the season. Descriptions such as 'very cold' should be logical and have optional dm rules for how they affect the players via exhaustion or other.


🐛 BUG: Unable to parse static_host_map entry

What version of nebula are you using? (nebula -version)
1.9.4
What operating system are you using?
Linux
Describe the Bug
On a client I have the following in the config.yml:
static_host_map:
  "<IP_ADDRESS>": ["PUB_IP:64000"]
  network: ip4

and with ./nebula -config config.yml -test results in:
static_host_map:
  <IP_ADDRESS>:
  - PUB_IP:64000
  network: ip4

While connecting from the client I get:
~ $ ./nebula -config config.yml
INFO[0000] Firewall started                              firewallHashes="SHA:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,FNV:2166136261"
INFO[0000] listening on <IP_ADDRESS>:64000
INFO[0000] Main HostMap created                          network=<IP_ADDRESS>/24 preferredRanges="[]"
INFO[0000] punchy enabled
ERRO[0000] Unable to parse static_host_map entry         entry=2 error="ParseAddr(\"network\"): unable to parse IP" host=network

Logs from affected hosts
 ./nebula -config config.yml
INFO[0000] Firewall rule added                           firewallRule="map[caName: caSha: direction:outgoing endPort:0 groups:[] host:any ip: localIp: proto:0 startPort:0]"
INFO[0000] Firewall rule added                           firewallRule="map[caName: caSha: direction:incoming endPort:0 groups:[] host:any ip: localIp: proto:0 startPort:0]"
INFO[0000] Firewall started                              firewallHashes="SHA:498215dec4e5687a2353f51c10838c113bd1af35ef72b8e8c9f536986ada5417,FNV:2782948616"
INFO[0000] listening on <IP_ADDRESS>:64000
INFO[0000] Main HostMap created                          network=<IP_ADDRESS>/24 preferredRanges="[]"
INFO[0000] punchy enabled
INFO[0000] Loaded send_recv_error config                 sendRecvError=always
INFO[0000] Nebula interface is active                    boringcrypto=false build=-- interface=nebula1 network=<IP_ADDRESS>/24 udpAddr="<IP_ADDRESS>:64000"

Config files from affected hosts
 firewall:
  conntrack:
    default_timeout: 10m
    tcp_timeout: 12m
    udp_timeout: 3m
  inbound:
  - host: any
    port: any
    proto: any
  outbound:
  - host: any
    port: any
    proto: any
lighthouse:
  am_lighthouse: true
  interval: 60
listen:
  host: <IP_ADDRESS>
  port: 64000
logging:
  format: text
  level: info
pki:
  ca: /root/nebula/ca.crt
  cert: /root/nebula/server.crt
  key: /root/nebula/server.key
  network: ip4
punchy:
  punch: true
relay:
  am_relay: false
  use_relays: true
tun:
  dev: nebula1
  disabled: false
  drop_local_broadcast: false
  drop_multicast: false
  mtu: 1300
  routes: null
  tx_queue: 500
  unsafe_routes: null

Why are you putting network: ip4 in your static_host_map?
The https://nebula.defined.net/docs/config/static-host-map/ page does not show that as an option

As @JackDoanRivian pointed out, that belongs in static_map if you do indeed need to set it: https://nebula.defined.net/docs/config/static-map/


POST/PUTing a doc into the replicator db without Content-Type: application/json gives a misleading error

Discovered in: #102.
marten@procyon:~/Bureaublad$ curl -X POST http://localhost:5984/_replicator -d '{ "_id": "aaadd", "source": "test", "target": "test2", "continuous": true}'
(without -H 'Content-Type: application/json') gives the misleading error {"error":"forbidden","reason":"The source' property must exist and be either a string or an object."}`. Find out what CouchDB returns and use that instead.

CouchDB returns
{"error":"bad_content_type","reason":"Content-Type must be application/json"}
(Tested against 1.6.0)

@driak's #104 seems to be a duplicate as mentioned in that issue. It should provide a nice second test for when this is solved.

This is still reproducable; we should probably just infer application/json instead of requiring it.

The hardest part of this bug is figuring out all of our APIs that are supposed to accept application/json and then ensuring that they default to that. There are a lot of such APIs, but some also accept multipart/mixed.


findings: add support for metadata

This commit adds support for metadata on findings.
This is the first PR of a series linked to https://github.com/DefectDojo/django-DefectDojo/issues/2854

This looks good! Are you planning a new migration for each PR in the future?

To be honest I don't know. If there's some best-practices regarding migrations I'd be happy to follow them.

Not really a best practice, but I would rather have one migration instead of a handful of them. That would require all model changes happen in the same PR though.

Yeah makes sense, that's also what I did for this PR packing all migrations together.

hi @xens a PR with the same number migration was merged yesterday. Can you update this one to accommodate?

hi @xens a PR with the same number migration was merged yesterday. Can you update this one to accommodate?

@Maffooch rebased and edited ! (looks like that the pipelines are timing out don't know if you can restart them ?)


installation problem

Hello, when I try to activate the installed addon get an error

As a workaround if you restart Blender you will be able to activate the addon. I will leave this issue open to investigate a better way of packaging my dependency.


The golang runtime is 1.19 which has several CVE-2022 issues

Bug Report
What happened:
Black Duck Binary Analysis scan the binary and reports several CVE-2022 issues
https://github.com/drycc/service-catalog/blob/main/go.mod#L7
What you expected to happen:
It should be free to CVE and I suggest upgrade to 1.20.x (the latest)
How to reproduce it (as minimally and precisely as possible):
Compile to binary and run Black Duck scanning (it should have the same result by using the other CVE scanning tools)
Anything else we need to know?:
NA
Environment:

Kubernetes version (use kubectl version):
service-catalog version:
Cloud provider or hardware configuration:
Do you have api aggregation enabled?

Do you see the configmap in kube-system?
Does it have all the necessary fields?

kubectl get cm -n kube-system extension-apiserver-authentication -o yaml and look for requestheader-XXX fields

Install tools:

Did you use helm? What were the helm arguments? Did you --set any extra values?

Are you trying to use ALPHA features? Did you enable them?

Upgrade to golang1.20 .

@duanhongyi, will you release an image that has golang runtime 1.20.x?


Opinion Neutralization Harms Performance and Not Necessary

Version: (e.g. 3.5.2)
Module: (e.g. quill-core)
Database: (e.g. all)
Ast Opinions have been introduced to Quill in order to allow a secondary channel of propagation of information throughout the AST. In order for these not be considered by BetaReduction (i.e. since it uses Map which relies on hashcode/equals methods of case classes), I have added a mechanism that "neutralizes" these opinions however, as it turns out this mechianism is quite slow because it requries recursive traverse for the sub-ast for every element that beta-reduction must check for replacements. For this reason, I have decided to instead create separate case classes for Ident, Property, and other elements with opinions which are just used for purposes of equals and hashcode functions (they are called IdentId, PropertyId etc....).

I see you removed Replacements in https://github.com/getquill/quill/pull/1911 so this is a bit late now but I made some experimental changes to speed this up after our chat. The replacements change seemed to work very well:
https://github.com/mjsmith707/quill/commit/26e4652429fa2a424f760fd94ac357ba7895ec64 and I was going to submit it upstream. I can't verify it doesn't break anything but I observed no effects in our codebase.
After that I did some probably very controversial changes to try and speed up the AST walking:
https://github.com/mjsmith707/quill/commit/c9c73ecd3b5d8bcf0b0108b22554ba9f353e9fd0#diff-71371a59bb216cadcfcc0425b09e41bbR32 Namely changing it to a switchtable instead of a pattern match + unapply. This had a fairly substantial speedup but is a big drop in readability sadly (scala requires those ints to be constant, can't use a final val).
The sum of those changes took a dynamicQuery call I was building from >35ms to around 12ms per call (only microseconds spent in JDBC and Postgres) in a fairly unscientific benchmark (just running it in an infinite loop). Almost all of that speedup was Replacements + the main apply in StatelessTransformer. It may be better to switch to a visitor pattern instead but that is of course, a massive change.
I'm planning on following up with the performance examination after we address some other issues in our codebase (lots of runSyncUnsafe+Await(future) usage). Let me know if you want more profiling information and thanks again.

@mjsmith707 You changes here make sense but for the future maintainability of Quill, I can't do them. I am really hoping, however, that with ScalaFix something like this can be done in a compile-phase. Please have a look at this video by Dimitry Petrashko for some inspiration:
https://www.youtube.com/watch?v=Xv2Z4ZdInXc&feature=youtu.be&t=1624
One other important thing to mention is that in #1911 I have added Quill Applications Types which will undoubtedly introduce new performance issues. Specifically, for things like renaming properties, I have decided to group paths and use hashing to detect what should be renamed as well as hashtable iteration to match on Quat field comparisons. This is optimized for larger records that have many renames (e.g. 100+), for smaller records however it is possible that a linear search is superior. There will be additional profiling that has to be done. Please let me know your findings.

@mjsmith707 Here's an example of how this could be done with ScalaFix. Firstly I would add some kind of identity-unapply to mark a beta reduction clause as 'pure' i.e. it uses only the case-class-companion unapply method:
object Pure {
	def unapply[T](t: T) = Some(t)
}

This can then be used to mark clauses which we specifically know do not use unapply functions from custom things. For starters, we could even make the assumption that that clauses marked this way are completely flat.
For example, something like this:
// StatelessTransformer.scala
def unapply(q: Query): Option[Query] =
  q match {
    case Map(a, b, c)       => apply(a, c)(Map(_, b, _))
    case FlatMap(a, b, c)   => apply(a, c)(FlatMap(_, b, _))
    ...
  }

Could become this:
// StatelessTransformer.scala
def unapply(q: Query): Option[Query] =
  q match {
    case Pure(Map(a, b, c))       => apply(a, c)(Map(_, b, _))
    case Pure(FlatMap(a, b, c))   => apply(a, c)(FlatMap(_, b, _))
    ...
  }

Then, a ScalaFix rule would identify these clauses and knowingly convert the code to this:
// StatelessTransformer.scala
(q.queryTag: @switch) match {
  case 21 => None
  case 23 =>
    val e = q.asInstanceOf[Map]; apply(e.query, e.body)(Map(_, e.alias, _))
  case 24 =>
    val e = q.asInstanceOf[FlatMap]; apply(e.query, e.body)(FlatMap(_, e.alias, _))

ScalaFix would have to know some other things like the id-integers of the different members of the Quill AST, again, I don't mind adding annotations for these things.
For example:
// Ast.scala
@pureId
case class Map(query: Ast, alias: Ident, body: Ast) extends Query { def quat = body.quat }

@pureId
case class FlatMap(query: Ast, alias: Ident, body: Ast) extends Query { def quat = body.quat }

The nice thing about this kind of code is that it will work whether the Scala-Fix optimization rules are applied or not. That is the sweet-spot that I would like to be at regarding the optimization vs maintainability tradeoff.

@deusaquilus Yes of course the experimental AST stuff was never intended to be merged upstream :). I thought the Replacements stuff probably could be but that has now been removed and is obsolete.
ScalaFix does look like an interesting way to maybe solve that issue. I'll hold off on looking further into it until a new release is cut with https://github.com/getquill/quill/pull/1911 and I get a chance to re-profile against it.

Closing this for now since #1911 largely remove opinion-neutralization.
@mjsmith707 If you'd like, please open a Issue to explore getting switch-optimization of Quill transformations via ScalaFix rewrites.

@deusaquilus I think we're still very much interested but are working through other issues first before we get back around to this. We've also filed https://github.com/getquill/quill/issues/1846 awhile back and may focus on seeing what it takes to fix that first.


@preact/signals-react causes Invalid hook call

What version of Remix are you using?
1.7.0
Steps to Reproduce
Start with an indie stack and add @preact/signals-react as a dependency. On the index page make use of signals:
import { useSignal } from "@preact/signals-react";

export default function Index() {
  const counter = useSignal(0);

  return (<button onClick={() => counter.value++}>Click {counter.value}</button>)
}

Expected Behavior
Have the button rendered
Actual Behavior
remix cannot render the route:
~/Projects/blog-tutorial/node_modules/react-dom/cjs/react-dom-server.node.development.js:4918
    throw new Error('Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for' + ' one of the following reasons:\n' + '1. You might have mismatching versions of React and the renderer (such as React DOM)\n' + '2. You might be breaking the Rules of Hooks\n' + '3. You might have more than one copy of React in the same app\n' + 'See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.');
          ^
Error: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:
1. You might have mismatching versions of React and the renderer (such as React DOM)
2. You might be breaking the Rules of Hooks
3. You might have more than one copy of React in the same app
See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.
    at resolveCurrentlyRenderingComponent (~/Projects/blog-tutorial/node_modules/react-dom/cjs/react-dom-server.node.development.js:4918:11)
    at Object.useReducer (~/Projects/blog-tutorial/node_modules/react-dom/cjs/react-dom-server.node.development.js:5093:33)
    at Object.set [as current] (~/Projects/blog-tutorial/node_modules/@preact/signals-react/src/index.ts:116:25)
    at performWork (~/Projects/blog-tutorial/node_modules/react-dom/cjs/react-dom-server.node.development.js:6625:36)
    at Immediate.<anonymous> (~/Projects/blog-tutorial/node_modules/react-dom/cjs/react-dom-server.node.development.js:6969:12)
    at processImmediate (node:internal/timers:466:21)

Here is an example repo

+1
Here's another example repo.
Doesn't use the hook but uses the signal import and gets the same error message.

I think this needs top be opened with the Preact team since it's an error being fired from that library.  The library states:

Note: The React integration plugs into some React internals and may break unexpectedly in future versions of React

So it doesn't sound like it's guaranteed to work seamlessly with React - let alone with React inside of a server-rendered meta framework.  The Remix team isn't familiar with the internals of this library to debug further.


Signing APK in Azure Devops

I have been trying to make devops build of android apk and my pipeline fails in Signing and aligning Apk Stage.
I am getting the following error
##[error]Error: No matching files were found with search pattern: D:\a\1\s***.apk

This issue tracker is for a command-line tool called "hub" which is written in Go. Your question seems unrelated to this project, and you should find a more appropriate forum to ask it in. Thank you.


Binary Reproduceability

In addition to testing databases created on one platform on different platforms, it would be useful to do direct binary comparisons between the databases (when produced in single threaded mode). That will help cover gaps in the coverage of the binary database tests, and can also enforce that kuzu's output is deterministic and the data is being properly initialized.
It could be implemented by creating a new database alongside the binary database tests, and comparing them with something like diff -r from GNU diffutils. An older version of diffutils is available for windows here (or via chocolatey).

If the database is created under different environment, is the binary directly comparable? Could it depend on parallelism, etc?

It can depend on parallelism when copying, but if we always create databases in single-threaded mode when doing such comparisons it should be able to be directly comparable.
The only differences (except for endianness, but in that case the databases won't be compatible at all) should be the order that the input data is processed when copying, but if we do it single-threaded that should be consistent. Or should be able to be at least. Maybe it turns out that we're doing something inherently non-deterministic, but the databases seemed to be almost identical between the different platforms when I was debugging kuzudb/explorer#129, and it shouldn't be very complicated to set up so I think we should see if it works.

As noted in #3501, the catalog stores and serializes catalog entries using the order produced by an std::unordered_map, which is not consistent across stdlibs. If we want to make them consistent, we could either use an ordered map, or sort the entries by name before serializing them.

If we want to make them consistent, we could either use an ordered map, or sort the entries by name before serializing them.

Serialize them in a certain order makes more sense to me.

I've found that one way of ensuring that directly writing a struct to disk works consistently is to assert that it has a unique object representation via std::has_unique_object_representations_v. Among other things it ensures there is no padding (which isn't guaranteed to be zeroed and particularly in release mode will usually be uninitialized).
Unfortunately it doesn't allow floats/doubles because their spec allows for multiple representations of equal values, which limits its usefulness. I suspect the float/double ambiguity is generally fine though, as I doubt that we will encounter issues with, for example, zero being stored as negative zero on a different platform and breaking binary equality.