Set bool inputs to type bool

what

set bool type on applicable inputs
bumped test version to latest in example module

why

ecs_service_enabled wasn't set correctly

references
command
terraform plan -var "ecs_service_enabled=false" -var-file=fixtures.us-east-2.tfvars
  # aws_ecs_cluster.default will be created
  + resource "aws_ecs_cluster" "default" {
      + arn                = (known after apply)
      + capacity_providers = (known after apply)
      + id                 = (known after apply)
      + name               = "eg-test-ecs-alb-service-task"
      + tags               = {
          + "Name"      = "eg-test-ecs-alb-service-task"
          + "Namespace" = "eg"
          + "Stage"     = "test"
        }
      + tags_all           = {
          + "Name"      = "eg-test-ecs-alb-service-task"
          + "Namespace" = "eg"
          + "Stage"     = "test"
        }

      + default_capacity_provider_strategy {
          + base              = (known after apply)
          + capacity_provider = (known after apply)
          + weight            = (known after apply)
        }

      + setting {
          + name  = (known after apply)
          + value = (known after apply)
        }
    }

  # module.ecs_alb_service_task.aws_ecs_task_definition.default[0] will be created
  + resource "aws_ecs_task_definition" "default" {
      + arn                      = (known after apply)
      + container_definitions    = jsonencode(
            [
              + {
                  + cpu                    = 256
                  + environment            = [
                      + {
                          + name  = "false_boolean_var"
                          + value = "false"
                        },
                      + {
                          + name  = "integer_var"
                          + value = "42"
                        },
                      + {
                          + name  = "string_var"
                          + value = "I am a string"
                        },
                      + {
                          + name  = "true_boolean_var"
                          + value = "true"
                        },
                    ]
                  + essential              = true
                  + image                  = "cloudposse/geodesic"
                  + memory                 = 256
                  + memoryReservation      = 128
                  + mountPoints            = []
                  + name                   = "geodesic"
                  + portMappings           = [
                      + {
                          + containerPort = 80
                          + hostPort      = 80
                          + protocol      = "tcp"
                        },
                      + {
                          + containerPort = 443
                          + hostPort      = 443
                          + protocol      = "udp"
                        },
                    ]
                  + readonlyRootFilesystem = false
                  + volumesFrom            = []
                },
            ]
        )
      + cpu                      = "256"
      + execution_role_arn       = (known after apply)
      + family                   = "eg-test-ecs-alb-service-task"
      + id                       = (known after apply)
      + memory                   = "512"
      + network_mode             = "awsvpc"
      + requires_compatibilities = [
          + "FARGATE",
        ]
      + revision                 = (known after apply)
      + skip_destroy             = false
      + tags                     = {
          + "Name"      = "eg-test-ecs-alb-service-task"
          + "Namespace" = "eg"
          + "Stage"     = "test"
        }
      + tags_all                 = {
          + "Name"      = "eg-test-ecs-alb-service-task"
          + "Namespace" = "eg"
          + "Stage"     = "test"
        }
      + task_role_arn            = (known after apply)
    }

  # module.ecs_alb_service_task.aws_iam_role.ecs_exec[0] will be created
  + resource "aws_iam_role" "ecs_exec" {
      + arn                   = (known after apply)
      + assume_role_policy    = jsonencode(
            {
              + Statement = [
                  + {
                      + Action    = "sts:AssumeRole"
                      + Effect    = "Allow"
                      + Principal = {
                          + Service = "ecs-tasks.amazonaws.com"
                        }
                      + Sid       = ""
                    },
                ]
              + Version   = "2012-10-17"
            }
        )
      + create_date           = (known after apply)
      + force_detach_policies = false
      + id                    = (known after apply)
      + managed_policy_arns   = (known after apply)
      + max_session_duration  = 3600
      + name                  = "eg-test-ecs-alb-service-task-exec"
      + name_prefix           = (known after apply)
      + path                  = "/"
      + tags                  = {
          + "Attributes" = "exec"
          + "Name"       = "eg-test-ecs-alb-service-task-exec"
          + "Namespace"  = "eg"
          + "Stage"      = "test"
        }
      + tags_all              = {
          + "Attributes" = "exec"
          + "Name"       = "eg-test-ecs-alb-service-task-exec"
          + "Namespace"  = "eg"
          + "Stage"      = "test"
        }
      + unique_id             = (known after apply)

      + inline_policy {
          + name   = (known after apply)
          + policy = (known after apply)
        }
    }

  # module.ecs_alb_service_task.aws_iam_role.ecs_task[0] will be created
  + resource "aws_iam_role" "ecs_task" {
      + arn                   = (known after apply)
      + assume_role_policy    = jsonencode(
            {
              + Statement = [
                  + {
                      + Action    = "sts:AssumeRole"
                      + Effect    = "Allow"
                      + Principal = {
                          + Service = "ecs-tasks.amazonaws.com"
                        }
                      + Sid       = ""
                    },
                ]
              + Version   = "2012-10-17"
            }
        )
      + create_date           = (known after apply)
      + force_detach_policies = false
      + id                    = (known after apply)
      + managed_policy_arns   = (known after apply)
      + max_session_duration  = 3600
      + name                  = "eg-test-ecs-alb-service-task-task"
      + name_prefix           = (known after apply)
      + path                  = "/"
      + tags                  = {
          + "Attributes" = "task"
          + "Name"       = "eg-test-ecs-alb-service-task-task"
          + "Namespace"  = "eg"
          + "Stage"      = "test"
        }
      + tags_all              = {
          + "Attributes" = "task"
          + "Name"       = "eg-test-ecs-alb-service-task-task"
          + "Namespace"  = "eg"
          + "Stage"      = "test"
        }
      + unique_id             = (known after apply)

      + inline_policy {
          + name   = (known after apply)
          + policy = (known after apply)
        }
    }

  # module.ecs_alb_service_task.aws_iam_role_policy.ecs_exec[0] will be created
  + resource "aws_iam_role_policy" "ecs_exec" {
      + id     = (known after apply)
      + name   = "eg-test-ecs-alb-service-task-exec"
      + policy = jsonencode(
            {
              + Statement = [
                  + {
                      + Action   = [
                          + "ssm:GetParameters",
                          + "logs:PutLogEvents",
                          + "logs:CreateLogStream",
                          + "logs:CreateLogGroup",
                          + "ecr:GetDownloadUrlForLayer",
                          + "ecr:GetAuthorizationToken",
                          + "ecr:BatchGetImage",
                          + "ecr:BatchCheckLayerAvailability",
                        ]
                      + Effect   = "Allow"
                      + Resource = "*"
                      + Sid      = ""
                    },
                ]
              + Version   = "2012-10-17"
            }
        )
      + role   = (known after apply)
    }

  # module.ecs_alb_service_task.aws_security_group.ecs_service[0] will be created
  + resource "aws_security_group" "ecs_service" {
      + arn                    = (known after apply)
      + description            = "Allow ALL egress from ECS service"
      + egress                 = (known after apply)
      + id                     = (known after apply)
      + ingress                = (known after apply)
      + name                   = "eg-test-ecs-alb-service-task-service"
      + name_prefix            = (known after apply)
      + owner_id               = (known after apply)
      + revoke_rules_on_delete = false
      + tags                   = {
          + "Attributes" = "service"
          + "Name"       = "eg-test-ecs-alb-service-task-service"
          + "Namespace"  = "eg"
          + "Stage"      = "test"
        }
      + tags_all               = {
          + "Attributes" = "service"
          + "Name"       = "eg-test-ecs-alb-service-task-service"
          + "Namespace"  = "eg"
          + "Stage"      = "test"
        }
      + vpc_id                 = (known after apply)
    }

  # module.ecs_alb_service_task.aws_security_group_rule.allow_all_egress[0] will be created
  + resource "aws_security_group_rule" "allow_all_egress" {
      + cidr_blocks              = [
          + "<IP_ADDRESS>/0",
        ]
      + description              = "Allow all outbound traffic to any IPv4 address"
      + from_port                = 0
      + id                       = (known after apply)
      + protocol                 = "-1"
      + security_group_id        = (known after apply)
      + self                     = false
      + source_security_group_id = (known after apply)
      + to_port                  = 0
      + type                     = "egress"
    }

  # module.subnets.data.aws_vpc.default[0] will be read during apply
  # (config refers to values not yet known)
 <= data "aws_vpc" "default"  {
      + arn                     = (known after apply)
      + cidr_block              = (known after apply)
      + cidr_block_associations = (known after apply)
      + default                 = (known after apply)
      + dhcp_options_id         = (known after apply)
      + enable_dns_hostnames    = (known after apply)
      + enable_dns_support      = (known after apply)
      + id                      = (known after apply)
      + instance_tenancy        = (known after apply)
      + ipv6_association_id     = (known after apply)
      + ipv6_cidr_block         = (known after apply)
      + main_route_table_id     = (known after apply)
      + owner_id                = (known after apply)
      + state                   = (known after apply)
      + tags                    = (known after apply)

      + timeouts {
          + read = (known after apply)
        }
    }

  # module.subnets.aws_eip.default[0] will be created
  + resource "aws_eip" "default" {
      + allocation_id        = (known after apply)
      + association_id       = (known after apply)
      + carrier_ip           = (known after apply)
      + customer_owned_ip    = (known after apply)
      + domain               = (known after apply)
      + id                   = (known after apply)
      + instance             = (known after apply)
      + network_border_group = (known after apply)
      + network_interface    = (known after apply)
      + private_dns          = (known after apply)
      + private_ip           = (known after apply)
      + public_dns           = (known after apply)
      + public_ip            = (known after apply)
      + public_ipv4_pool     = (known after apply)
      + tags                 = {
          + "Attributes"          = "private"
          + "Name"                = "eg-test-ecs-alb-service-task-private-use2a"
          + "Namespace"           = "eg"
          + "Stage"               = "test"
          + "cpco.io/subnet/type" = "private"
        }
      + tags_all             = {
          + "Attributes"          = "private"
          + "Name"                = "eg-test-ecs-alb-service-task-private-use2a"
          + "Namespace"           = "eg"
          + "Stage"               = "test"
          + "cpco.io/subnet/type" = "private"
        }
      + vpc                  = true
    }

  # module.subnets.aws_eip.default[1] will be created
  + resource "aws_eip" "default" {
      + allocation_id        = (known after apply)
      + association_id       = (known after apply)
      + carrier_ip           = (known after apply)
      + customer_owned_ip    = (known after apply)
      + domain               = (known after apply)
      + id                   = (known after apply)
      + instance             = (known after apply)
      + network_border_group = (known after apply)
      + network_interface    = (known after apply)
      + private_dns          = (known after apply)
      + private_ip           = (known after apply)
      + public_dns           = (known after apply)
      + public_ip            = (known after apply)
      + public_ipv4_pool     = (known after apply)
      + tags                 = {
          + "Attributes"          = "private"
          + "Name"                = "eg-test-ecs-alb-service-task-private-use2b"
          + "Namespace"           = "eg"
          + "Stage"               = "test"
          + "cpco.io/subnet/type" = "private"
        }
      + tags_all             = {
          + "Attributes"          = "private"
          + "Name"                = "eg-test-ecs-alb-service-task-private-use2b"
          + "Namespace"           = "eg"
          + "Stage"               = "test"
          + "cpco.io/subnet/type" = "private"
        }
      + vpc                  = true
    }

  # module.subnets.aws_nat_gateway.default[0] will be created
  + resource "aws_nat_gateway" "default" {
      + allocation_id        = (known after apply)
      + connectivity_type    = "public"
      + id                   = (known after apply)
      + network_interface_id = (known after apply)
      + private_ip           = (known after apply)
      + public_ip            = (known after apply)
      + subnet_id            = (known after apply)
      + tags                 = {
          + "Attributes" = "nat"
          + "Name"       = "eg-test-ecs-alb-service-task-nat-use2a"
          + "Namespace"  = "eg"
          + "Stage"      = "test"
        }
      + tags_all             = {
          + "Attributes" = "nat"
          + "Name"       = "eg-test-ecs-alb-service-task-nat-use2a"
          + "Namespace"  = "eg"
          + "Stage"      = "test"
        }
    }

  # module.subnets.aws_nat_gateway.default[1] will be created
  + resource "aws_nat_gateway" "default" {
      + allocation_id        = (known after apply)
      + connectivity_type    = "public"
      + id                   = (known after apply)
      + network_interface_id = (known after apply)
      + private_ip           = (known after apply)
      + public_ip            = (known after apply)
      + subnet_id            = (known after apply)
      + tags                 = {
          + "Attributes" = "nat"
          + "Name"       = "eg-test-ecs-alb-service-task-nat-use2b"
          + "Namespace"  = "eg"
          + "Stage"      = "test"
        }
      + tags_all             = {
          + "Attributes" = "nat"
          + "Name"       = "eg-test-ecs-alb-service-task-nat-use2b"
          + "Namespace"  = "eg"
          + "Stage"      = "test"
        }
    }

  # module.subnets.aws_network_acl.private[0] will be created
  + resource "aws_network_acl" "private" {
      + arn        = (known after apply)
      + egress     = [
          + {
              + action          = "allow"
              + cidr_block      = "<IP_ADDRESS>/0"
              + from_port       = 0
              + icmp_code       = null
              + icmp_type       = null
              + ipv6_cidr_block = ""
              + protocol        = "-1"
              + rule_no         = 100
              + to_port         = 0
            },
        ]
      + id         = (known after apply)
      + ingress    = [
          + {
              + action          = "allow"
              + cidr_block      = "<IP_ADDRESS>/0"
              + from_port       = 0
              + icmp_code       = null
              + icmp_type       = null
              + ipv6_cidr_block = ""
              + protocol        = "-1"
              + rule_no         = 100
              + to_port         = 0
            },
        ]
      + owner_id   = (known after apply)
      + subnet_ids = (known after apply)
      + tags       = {
          + "Attributes"          = "private"
          + "Name"                = "eg-test-ecs-alb-service-task-private"
          + "Namespace"           = "eg"
          + "Stage"               = "test"
          + "cpco.io/subnet/type" = "private"
        }
      + tags_all   = {
          + "Attributes"          = "private"
          + "Name"                = "eg-test-ecs-alb-service-task-private"
          + "Namespace"           = "eg"
          + "Stage"               = "test"
          + "cpco.io/subnet/type" = "private"
        }
      + vpc_id     = (known after apply)
    }

  # module.subnets.aws_network_acl.public[0] will be created
  + resource "aws_network_acl" "public" {
      + arn        = (known after apply)
      + egress     = [
          + {
              + action          = "allow"
              + cidr_block      = "<IP_ADDRESS>/0"
              + from_port       = 0
              + icmp_code       = null
              + icmp_type       = null
              + ipv6_cidr_block = ""
              + protocol        = "-1"
              + rule_no         = 100
              + to_port         = 0
            },
        ]
      + id         = (known after apply)
      + ingress    = [
          + {
              + action          = "allow"
              + cidr_block      = "<IP_ADDRESS>/0"
              + from_port       = 0
              + icmp_code       = null
              + icmp_type       = null
              + ipv6_cidr_block = ""
              + protocol        = "-1"
              + rule_no         = 100
              + to_port         = 0
            },
        ]
      + owner_id   = (known after apply)
      + subnet_ids = (known after apply)
      + tags       = {
          + "Attributes"          = "public"
          + "Name"                = "eg-test-ecs-alb-service-task-public"
          + "Namespace"           = "eg"
          + "Stage"               = "test"
          + "cpco.io/subnet/type" = "public"
        }
      + tags_all   = {
          + "Attributes"          = "public"
          + "Name"                = "eg-test-ecs-alb-service-task-public"
          + "Namespace"           = "eg"
          + "Stage"               = "test"
          + "cpco.io/subnet/type" = "public"
        }
      + vpc_id     = (known after apply)
    }

  # module.subnets.aws_route.default[0] will be created
  + resource "aws_route" "default" {
      + destination_cidr_block = "<IP_ADDRESS>/0"
      + id                     = (known after apply)
      + instance_id            = (known after apply)
      + instance_owner_id      = (known after apply)
      + nat_gateway_id         = (known after apply)
      + network_interface_id   = (known after apply)
      + origin                 = (known after apply)
      + route_table_id         = (known after apply)
      + state                  = (known after apply)

      + timeouts {
          + create = "2m"
          + delete = "5m"
        }
    }

  # module.subnets.aws_route.default[1] will be created
  + resource "aws_route" "default" {
      + destination_cidr_block = "<IP_ADDRESS>/0"
      + id                     = (known after apply)
      + instance_id            = (known after apply)
      + instance_owner_id      = (known after apply)
      + nat_gateway_id         = (known after apply)
      + network_interface_id   = (known after apply)
      + origin                 = (known after apply)
      + route_table_id         = (known after apply)
      + state                  = (known after apply)

      + timeouts {
          + create = "2m"
          + delete = "5m"
        }
    }

  # module.subnets.aws_route.public[0] will be created
  + resource "aws_route" "public" {
      + destination_cidr_block = "<IP_ADDRESS>/0"
      + gateway_id             = (known after apply)
      + id                     = (known after apply)
      + instance_id            = (known after apply)
      + instance_owner_id      = (known after apply)
      + network_interface_id   = (known after apply)
      + origin                 = (known after apply)
      + route_table_id         = (known after apply)
      + state                  = (known after apply)

      + timeouts {
          + create = "2m"
          + delete = "5m"
        }
    }

  # module.subnets.aws_route_table.private[0] will be created
  + resource "aws_route_table" "private" {
      + arn              = (known after apply)
      + id               = (known after apply)
      + owner_id         = (known after apply)
      + propagating_vgws = (known after apply)
      + route            = (known after apply)
      + tags             = {
          + "Attributes"          = "private"
          + "Name"                = "eg-test-ecs-alb-service-task-private-use2a"
          + "Namespace"           = "eg"
          + "Stage"               = "test"
          + "cpco.io/subnet/type" = "private"
        }
      + tags_all         = {
          + "Attributes"          = "private"
          + "Name"                = "eg-test-ecs-alb-service-task-private-use2a"
          + "Namespace"           = "eg"
          + "Stage"               = "test"
          + "cpco.io/subnet/type" = "private"
        }
      + vpc_id           = (known after apply)
    }

  # module.subnets.aws_route_table.private[1] will be created
  + resource "aws_route_table" "private" {
      + arn              = (known after apply)
      + id               = (known after apply)
      + owner_id         = (known after apply)
      + propagating_vgws = (known after apply)
      + route            = (known after apply)
      + tags             = {
          + "Attributes"          = "private"
          + "Name"                = "eg-test-ecs-alb-service-task-private-use2b"
          + "Namespace"           = "eg"
          + "Stage"               = "test"
          + "cpco.io/subnet/type" = "private"
        }
      + tags_all         = {
          + "Attributes"          = "private"
          + "Name"                = "eg-test-ecs-alb-service-task-private-use2b"
          + "Namespace"           = "eg"
          + "Stage"               = "test"
          + "cpco.io/subnet/type" = "private"
        }
      + vpc_id           = (known after apply)
    }

  # module.subnets.aws_route_table.public[0] will be created
  + resource "aws_route_table" "public" {
      + arn              = (known after apply)
      + id               = (known after apply)
      + owner_id         = (known after apply)
      + propagating_vgws = (known after apply)
      + route            = (known after apply)
      + tags             = {
          + "Attributes"          = "public"
          + "Name"                = "eg-test-ecs-alb-service-task-public"
          + "Namespace"           = "eg"
          + "Stage"               = "test"
          + "cpco.io/subnet/type" = "public"
        }
      + tags_all         = {
          + "Attributes"          = "public"
          + "Name"                = "eg-test-ecs-alb-service-task-public"
          + "Namespace"           = "eg"
          + "Stage"               = "test"
          + "cpco.io/subnet/type" = "public"
        }
      + vpc_id           = (known after apply)
    }

  # module.subnets.aws_route_table_association.private[0] will be created
  + resource "aws_route_table_association" "private" {
      + id             = (known after apply)
      + route_table_id = (known after apply)
      + subnet_id      = (known after apply)
    }

  # module.subnets.aws_route_table_association.private[1] will be created
  + resource "aws_route_table_association" "private" {
      + id             = (known after apply)
      + route_table_id = (known after apply)
      + subnet_id      = (known after apply)
    }

  # module.subnets.aws_route_table_association.public[0] will be created
  + resource "aws_route_table_association" "public" {
      + id             = (known after apply)
      + route_table_id = (known after apply)
      + subnet_id      = (known after apply)
    }

  # module.subnets.aws_route_table_association.public[1] will be created
  + resource "aws_route_table_association" "public" {
      + id             = (known after apply)
      + route_table_id = (known after apply)
      + subnet_id      = (known after apply)
    }

  # module.subnets.aws_subnet.private[0] will be created
  + resource "aws_subnet" "private" {
      + arn                                            = (known after apply)
      + assign_ipv6_address_on_creation                = false
      + availability_zone                              = "us-east-2a"
      + availability_zone_id                           = (known after apply)
      + cidr_block                                     = "<IP_ADDRESS>/19"
      + enable_dns64                                   = false
      + enable_resource_name_dns_a_record_on_launch    = false
      + enable_resource_name_dns_aaaa_record_on_launch = false
      + id                                             = (known after apply)
      + ipv6_cidr_block_association_id                 = (known after apply)
      + ipv6_native                                    = false
      + map_public_ip_on_launch                        = false
      + owner_id                                       = (known after apply)
      + private_dns_hostname_type_on_launch            = (known after apply)
      + tags                                           = {
          + "Attributes"          = "private"
          + "Name"                = "eg-test-ecs-alb-service-task-private-use2a"
          + "Namespace"           = "eg"
          + "Stage"               = "test"
          + "cpco.io/subnet/type" = "private"
        }
      + tags_all                                       = {
          + "Attributes"          = "private"
          + "Name"                = "eg-test-ecs-alb-service-task-private-use2a"
          + "Namespace"           = "eg"
          + "Stage"               = "test"
          + "cpco.io/subnet/type" = "private"
        }
      + vpc_id                                         = (known after apply)
    }

  # module.subnets.aws_subnet.private[1] will be created
  + resource "aws_subnet" "private" {
      + arn                                            = (known after apply)
      + assign_ipv6_address_on_creation                = false
      + availability_zone                              = "us-east-2b"
      + availability_zone_id                           = (known after apply)
      + cidr_block                                     = "<IP_ADDRESS>/19"
      + enable_dns64                                   = false
      + enable_resource_name_dns_a_record_on_launch    = false
      + enable_resource_name_dns_aaaa_record_on_launch = false
      + id                                             = (known after apply)
      + ipv6_cidr_block_association_id                 = (known after apply)
      + ipv6_native                                    = false
      + map_public_ip_on_launch                        = false
      + owner_id                                       = (known after apply)
      + private_dns_hostname_type_on_launch            = (known after apply)
      + tags                                           = {
          + "Attributes"          = "private"
          + "Name"                = "eg-test-ecs-alb-service-task-private-use2b"
          + "Namespace"           = "eg"
          + "Stage"               = "test"
          + "cpco.io/subnet/type" = "private"
        }
      + tags_all                                       = {
          + "Attributes"          = "private"
          + "Name"                = "eg-test-ecs-alb-service-task-private-use2b"
          + "Namespace"           = "eg"
          + "Stage"               = "test"
          + "cpco.io/subnet/type" = "private"
        }
      + vpc_id                                         = (known after apply)
    }

  # module.subnets.aws_subnet.public[0] will be created
  + resource "aws_subnet" "public" {
      + arn                                            = (known after apply)
      + assign_ipv6_address_on_creation                = false
      + availability_zone                              = "us-east-2a"
      + availability_zone_id                           = (known after apply)
      + cidr_block                                     = "<IP_ADDRESS>/19"
      + enable_dns64                                   = false
      + enable_resource_name_dns_a_record_on_launch    = false
      + enable_resource_name_dns_aaaa_record_on_launch = false
      + id                                             = (known after apply)
      + ipv6_cidr_block_association_id                 = (known after apply)
      + ipv6_native                                    = false
      + map_public_ip_on_launch                        = true
      + owner_id                                       = (known after apply)
      + private_dns_hostname_type_on_launch            = (known after apply)
      + tags                                           = {
          + "Attributes"          = "public"
          + "Name"                = "eg-test-ecs-alb-service-task-public-use2a"
          + "Namespace"           = "eg"
          + "Stage"               = "test"
          + "cpco.io/subnet/type" = "public"
        }
      + tags_all                                       = {
          + "Attributes"          = "public"
          + "Name"                = "eg-test-ecs-alb-service-task-public-use2a"
          + "Namespace"           = "eg"
          + "Stage"               = "test"
          + "cpco.io/subnet/type" = "public"
        }
      + vpc_id                                         = (known after apply)
    }

  # module.subnets.aws_subnet.public[1] will be created
  + resource "aws_subnet" "public" {
      + arn                                            = (known after apply)
      + assign_ipv6_address_on_creation                = false
      + availability_zone                              = "us-east-2b"
      + availability_zone_id                           = (known after apply)
      + cidr_block                                     = "<IP_ADDRESS>/19"
      + enable_dns64                                   = false
      + enable_resource_name_dns_a_record_on_launch    = false
      + enable_resource_name_dns_aaaa_record_on_launch = false
      + id                                             = (known after apply)
      + ipv6_cidr_block_association_id                 = (known after apply)
      + ipv6_native                                    = false
      + map_public_ip_on_launch                        = true
      + owner_id                                       = (known after apply)
      + private_dns_hostname_type_on_launch            = (known after apply)
      + tags                                           = {
          + "Attributes"          = "public"
          + "Name"                = "eg-test-ecs-alb-service-task-public-use2b"
          + "Namespace"           = "eg"
          + "Stage"               = "test"
          + "cpco.io/subnet/type" = "public"
        }
      + tags_all                                       = {
          + "Attributes"          = "public"
          + "Name"                = "eg-test-ecs-alb-service-task-public-use2b"
          + "Namespace"           = "eg"
          + "Stage"               = "test"
          + "cpco.io/subnet/type" = "public"
        }
      + vpc_id                                         = (known after apply)
    }

  # module.vpc.aws_default_security_group.default[0] will be created
  + resource "aws_default_security_group" "default" {
      + arn                    = (known after apply)
      + description            = (known after apply)
      + egress                 = (known after apply)
      + id                     = (known after apply)
      + ingress                = (known after apply)
      + name                   = (known after apply)
      + name_prefix            = (known after apply)
      + owner_id               = (known after apply)
      + revoke_rules_on_delete = false
      + tags                   = {
          + "Name"      = "Default Security Group"
          + "Namespace" = "eg"
          + "Stage"     = "test"
        }
      + tags_all               = {
          + "Name"      = "Default Security Group"
          + "Namespace" = "eg"
          + "Stage"     = "test"
        }
      + vpc_id                 = (known after apply)
    }

  # module.vpc.aws_internet_gateway.default[0] will be created
  + resource "aws_internet_gateway" "default" {
      + arn      = (known after apply)
      + id       = (known after apply)
      + owner_id = (known after apply)
      + tags     = {
          + "Name"      = "eg-test-ecs-alb-service-task"
          + "Namespace" = "eg"
          + "Stage"     = "test"
        }
      + tags_all = {
          + "Name"      = "eg-test-ecs-alb-service-task"
          + "Namespace" = "eg"
          + "Stage"     = "test"
        }
      + vpc_id   = (known after apply)
    }

  # module.vpc.aws_vpc.default[0] will be created
  + resource "aws_vpc" "default" {
      + arn                                  = (known after apply)
      + assign_generated_ipv6_cidr_block     = true
      + cidr_block                           = "<IP_ADDRESS>/16"
      + default_network_acl_id               = (known after apply)
      + default_route_table_id               = (known after apply)
      + default_security_group_id            = (known after apply)
      + dhcp_options_id                      = (known after apply)
      + enable_classiclink                   = false
      + enable_classiclink_dns_support       = false
      + enable_dns_hostnames                 = true
      + enable_dns_support                   = true
      + id                                   = (known after apply)
      + instance_tenancy                     = "default"
      + ipv6_association_id                  = (known after apply)
      + ipv6_cidr_block                      = (known after apply)
      + ipv6_cidr_block_network_border_group = (known after apply)
      + main_route_table_id                  = (known after apply)
      + owner_id                             = (known after apply)
      + tags                                 = {
          + "Name"      = "eg-test-ecs-alb-service-task"
          + "Namespace" = "eg"
          + "Stage"     = "test"
        }
      + tags_all                             = {
          + "Name"      = "eg-test-ecs-alb-service-task"
          + "Namespace" = "eg"
          + "Stage"     = "test"
        }
    }

Plan: 30 to add, 0 to change, 0 to destroy.

Changes to Outputs:
  + container_definition_json     = jsonencode(
        [
          + {
              + cpu                    = 256
              + environment            = [
                  + {
                      + name  = "false_boolean_var"
                      + value = "false"
                    },
                  + {
                      + name  = "integer_var"
                      + value = "42"
                    },
                  + {
                      + name  = "string_var"
                      + value = "I am a string"
                    },
                  + {
                      + name  = "true_boolean_var"
                      + value = "true"
                    },
                ]
              + essential              = true
              + image                  = "cloudposse/geodesic"
              + memory                 = 256
              + memoryReservation      = 128
              + mountPoints            = []
              + name                   = "geodesic"
              + portMappings           = [
                  + {
                      + containerPort = 80
                      + hostPort      = 80
                      + protocol      = "tcp"
                    },
                  + {
                      + containerPort = 443
                      + hostPort      = 443
                      + protocol      = "udp"
                    },
                ]
              + readonlyRootFilesystem = false
              + volumesFrom            = []
            },
        ]
    )
  + container_definition_json_map = jsonencode(
        {
          + cpu                    = 256
          + environment            = [
              + {
                  + name  = "false_boolean_var"
                  + value = "false"
                },
              + {
                  + name  = "integer_var"
                  + value = "42"
                },
              + {
                  + name  = "string_var"
                  + value = "I am a string"
                },
              + {
                  + name  = "true_boolean_var"
                  + value = "true"
                },
            ]
          + essential              = true
          + image                  = "cloudposse/geodesic"
          + memory                 = 256
          + memoryReservation      = 128
          + mountPoints            = []
          + name                   = "geodesic"
          + portMappings           = [
              + {
                  + containerPort = 80
                  + hostPort      = 80
                  + protocol      = "tcp"
                },
              + {
                  + containerPort = 443
                  + hostPort      = 443
                  + protocol      = "udp"
                },
            ]
          + readonlyRootFilesystem = false
          + volumesFrom            = []
        }
    )
  + ecs_cluster_arn               = (known after apply)
  + ecs_cluster_id                = (known after apply)
  + ecs_exec_role_policy_id       = (known after apply)
  + ecs_exec_role_policy_name     = "eg-test-ecs-alb-service-task-exec"
  + private_subnet_cidrs          = [
      + "<IP_ADDRESS>/19",
      + "<IP_ADDRESS>/19",
    ]
  + public_subnet_cidrs           = [
      + "<IP_ADDRESS>/19",
      + "<IP_ADDRESS>/19",
    ]
  + service_security_group_id     = (known after apply)
  + task_definition_family        = "eg-test-ecs-alb-service-task"
  + task_definition_revision      = (known after apply)
  + task_exec_role_arn            = (known after apply)
  + task_exec_role_name           = "eg-test-ecs-alb-service-task-exec"
  + task_role_arn                 = (known after apply)
  + task_role_id                  = (known after apply)
  + task_role_name                = "eg-test-ecs-alb-service-task-task"
  + vpc_cidr                      = "<IP_ADDRESS>/16"
╷
│ Warning: Argument is deprecated
│
│   with module.subnets.aws_route.nat_instance,
│   on .terraform/modules/subnets/nat-instance.tf line 130, in resource "aws_route" "nat_instance":
│  130:   instance_id            = element(aws_instance.nat_instance.*.id, count.index)
│
│ Use network_interface_id instead

/test all

/test all


aboutus_webpage

about us webpage created

@rushalidantrey plz attach a screenshot of the template.

@rushalidantrey delete those files on which I have commented

I can't see your comment about the files can you mention those again

js file is required and the rest I removed


Moved to PROMPT_COMMAND

For #82, we needed to transition to PROMPT_COMMAND to properly capture the exit code of our last command. This will build out an updated PS1 to use for our prompt
The transition was straightforward for the prompt but a bit rocky for testing. To minimize PR noise, I figured we should break it out into its own PR
In this PR:

Moved from PS1 to PROMPT_COMMAND which sets new PS1
Updated tests
Added email notifications for status change in Travis CI

Notes:
For reference, here's the man page that confirms we're using PROMPT_COMMAND correctly, https://archive.vn/4HsIg#selection-5444.0-5444.2

If set, the value is executed as a command prior to issuing each primary prompt.

On previous attempts, I looked at blogs like this which dynamically echo'd out the prompt itself which was strange UX and felt off
https://tldp.org/HOWTO/Bash-Prompt-HOWTO/x264.html

Later this week works fine for me =) Good luck on the move and minimal long wait times
Yea, I've seen starship -- sooo many options o_o To the point where my eyes glaze over =X Good inspiration though indeed =)


Bad link to css

I think the link to the css is wrong, in fact, I cannot see if I clone the project or if I try to build it in another way
"GET /bower_components/card/lib/css/card.css" Error (404): "Not found"

Looks like card.css does not exist when you run bower install.

It is true, I notice that and I think it is not necessary.

This is fixed in v0.2.0


[6.x] Use ::class notation in Router

Follow-up to PR #30935 by @GrahamCampbell
This PR replaces Controller classes string notation to ::class notation in \Illuminate\Routing\Router to improve IDE experience, refactoring automation and automated dependency analysis.

This doesn't work actually. The router needs the leading slash in the class name for routing.

I did already consider sending a PR which did this, and also concatenated a leading slash on the front, but I don't think that would really be an improvement. The current code is best I think.


Refactored RPC Design

:boom: READY FOR REVIEW :boom:
Related to issue #20.
Summary
We've gone over this in the past, but this presentation is probably the best explanation of what this pull request will accomplish.  Also, a similar (complete) codebase can be found on GENIVI here.
On a high level, this is what's going to happen:

Modify RPCStruct abstract class to implement JsonParameters interface and create RPCObject
Create JSONObjects from underlying data
Create constructors to create RPC objects from JSONObjects
Hashtable implementation is removed in favor of primitive variables and strings
Setter and getter methods in RPC classes will be re-written to return underlying variables instead of reading from the hashtable
Enums will implement JsonName interface, which allows decoupling the JSON keys from the actual variable names
Add versioning to any JSON related methods so correct JSON can be parsed and created based on the version of SDL

A utility class called JsonUtils has been created to allow one-line reads and writes to JSON objects.  The existing Android API throws an exception when reading from a JSON object when the input key doesn't exist.  The utility class wraps the API and returns null when an exception occurs.  Similarly, the Android API will throw an exception (and cause a crash) when attempting to place an invalid object into a JSON object.  The utility library catches and logs the exception so the app isn't forced to crash.
In Depth
Refactor RPCStruct into JsonParameters interface
The existing RPCStruct class doesn't really accomplish anything in and of itself other than creating the JSON structure based on the underlying hashtables.  As explained in the above presentation, this creates a tight coupling between the code and the JSON protocol structure, which makes the code inflexible and hard to change if the JSON protocol changes.  Similarly, if the JSON protocol changes, the abstract top-level RPCStruct class must modify it's underlying hashtables, which in turn affects all subclasses of RPCStruct (every RPC class).  The new implementation is simply an interface which requires any implementing class to create a JSONObject representing its underlying data.
A typical RPCMessage implementation of JsonParameters interface will look something like this:
@Override
public JSONObject getJsonParameters(int sdlVersion){
    // retrieve the JSON object from the parent and add our variables to it
    JSONObject result = super.getJsonParameters(sdlVersion);

    switch(sdlVersion){
    default:
        JsonUtils.addToJsonObject(result, KEY_TRY_AGAIN_TIME, this.tryAgainTime);
        break;
    }

    return result;
}

RPC "objects" (a.k.a. not requests, responses or notifications) will now subclass RPCObject, which implements JsonParameters interface on its own.  The implementation should read the JSON object from the superclass and put the class's underlying variables into the JSON object.
A common implementation of a RPC object will look something like this:
@Override
public JSONObject getJsonParameters(int sdlVersion){
    JSONObject result = super.getJsonParameters(sdlVersion);

    switch(sdlVersion){
    default:
        JsonUtils.addToJsonObject(result, KEY_AUDIO_TYPE, this.audioType);
        JsonUtils.addToJsonObject(result, KEY_BITS_PER_SAMPLE, this.bitsPerSample);
        JsonUtils.addToJsonObject(result, KEY_SAMPLING_RATE, this.samplingRate);
        break;
    }

    return result;
}

Create JSON Methods
Any class that implements JsonParameters also needs to create a constructor that only takes in a JSONObject.  This constructor should read values from the JSONObject based on the SDL version and assigns the data to the individual underlying data.  This allows each class to "serialize" and "deserialize" the underlying data into a JSONObject.
A typical constructor will look something like this:
public AlertResponse(JSONObject jsonObject) {
    super(jsonObject);

    switch(sdlVersion){
    default:
        this.tryAgainTime = JsonUtils.readIntegerFromJsonObject(jsonObject, KEY_TRY_AGAIN_TIME);
        break;
    }
}

For performance reasons, when a class which contains enum values is created from a JSON object, the enum value will be stored locally as a string representation.  In the getter methods for any enum values, a reverse-lookup will be executed to determine the enum value based on the string value read from the JSON.  Similarly, in the setter methods for any enum values, the JsonName interface will allow the enum classes to define a JSON string based on whatever version of SDL is connected at the time.
Enums will typically be handled like this:
// constructor with enum values in the JSON object
public AudioPassThruCapabilities(JSONObject jsonObject, int sdlVersion){
    switch(sdlVersion){
    default:
        this.audioType = JsonUtils.readStringFromJsonObject(jsonObject, KEY_AUDIO_TYPE);
        break;
    }
}

public void setAudioType(AudioType audioType) {
    // use JsonName interface to produce the JSON name for the input enum value
    this.audioType = audioType.getJsonName(sdlVersion);
}

public AudioType getAudioType() {
    // perform reverse-lookup of string value to determine enum value
    return AudioType.valueForJsonName(this.audioType, sdlVersion);
}

@Override
public JSONObject getJsonParameters(int sdlVersion){
    JSONObject result = new JSONObject();

    switch(sdlVersion){
    default:
        // since the JSON string is already stored in the local variable, we can save it in the JSON directly
        JsonUtils.addToJsonObject(result, KEY_AUDIO_TYPE, this.audioType);
        break;
    }

    return result;
}

Refactor Setter and Getter Methods
Current setter/getter methods read and put items into the underlying hashtables.  All of these methods will be refactored to simply return or set the underlying data based on typical Java object oriented design.
For example, the current code base has a getter method in AddCommand.java:
public Image getCmdIcon() {
    Object obj = parameters.get(KEY_CMD_ICON);
    if (obj instanceof Image) {
        return (Image) obj;
    } else if (obj instanceof Hashtable) {
        try {
            return new Image((Hashtable<String, Object>) obj);
        } catch (Exception e) {
            DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_CMD_ICON, e);
        }
    }
    return null;
}

This code will be refactored to simply return the underlying value representing the command icon:
public Image getCmdIcon() {
    return cmdIcon;
}

SImilarly, setter methods will use typical Java-style setter methods:
public void setCmdIcon(Image cmdIcon){
    this.cmdIcon = cmdIcon;
}

Add Versioning
Any JSON-related methods need to take into account the connected version of SDL so they can build and decode the JSON messages appropriately for whatever version of SDL core it is connected to.  Constructors that take in a JSON object should also take in the SDL version and the JsonParameters interface will pass in the SDL version and return the resultant JSONObject.
TODO
General

[x] Remove RPCStruct class and replace with JsonParameters interface
[x] Create JSON structure in RPCMessage.java toJson() method
[x] Remove JsonRPCMarshaller class since it is not needed in new design
[x] Create SdlCommand enumeration with information about every possible RPC message that can be sent or received
[x] Create BulkData interface for classes that utilize bulk data
[x] Refactor the rest of the project to work with the new design
[x] Run unit tests on completed refactored design
[x] Fix #116
[ ] Merge develop into this PR to bring in changes made since PR was created

RPCs

[x] Refactor RPC messages and objects

[x] Refactor AddCommand
[x] Refactor AddCommandResponse
[x] Refactor AddSubMenu
[x] Refactor AddSubMenuResponse
[x] Refactor AirbagStatus
[x] Refactor Alert
[x] Refactor AlertResponse
[x] Refactor AudioPassThruCapabilities
[x] Refactor BeltStatus
[x] Refactor BodyInformation
[x] Refactor ButtonCapabilities
[x] Refactor ChangeRegistration
[x] Refactor ChangeRegistrationResponse
[x] Refactor Choice
[x] Refactor ClusterModeStatus
[x] Refactor CreateInteractionChoiceSet
[x] Refactor CreateInteractionChoiceSetResponse
[x] Refactor DeleteCommand
[x] Refactor DeleteCommandResponse
[x] Refactor DeleteFile
[x] Refactor DeleteFileResponse
[x] Refactor DeleteInteractionChoiceSet
[x] Refactor DeleteInteractionChoiceSetResponse
[x] Refactor DeleteSubMenu
[x] Refactor DeleteSubMenuResponse
[x] Refactor DeviceInfo
[x] Refactor DeviceStatus
[x] Refactor DiagnosticMessage
[x] Refactor DiagnosticMessageResponse
[x] Refactor DIDResult
[x] Refactor DisplayCapabilities
[x] Refactor DTC
[x] Refactor ECallInfo
[x] Refactor EmergencyEvent
[x] Refactor EndAudioPassThru
[x] Refactor EndAudioPassThruResponse
[x] Refactor GenericResponse
[x] Refactor GetDTCs
[x] Refactor GetDTCsResponse
[x] Refactor GetVehicleData
[x] Refactor GetVehicleDataResponse
[x] Refactor GPSData
[x] Refactor Headers
[x] Refactor HeadLampStatus
[x] Refactor HMIPermissions
[x] Refactor Image
[x] Refactor ImageField
[x] Refactor ImageResolution
[x] Refactor KeyboardProperties
[x] Refactor ListFiles
[x] Refactor ListFilesResponse
[x] Refactor MenuParams
[x] Refactor MyKey
[x] Refactor OnAppInterfaceUnregistered
[x] Refactor OnAudioPassThru
[x] Refactor OnButtonEvent
[x] Refactor OnButtonPress
[x] Refactor OnCommand
[x] Refactor OnDriverDistraction
[x] Refactor OnHashChange
[x] Refactor OnHMIStatus
[x] Refactor OnKeyboardInput
[x] Refactor OnLanguageChange
[x] Refactor OnLockScreenStatus
[x] Refactor OnPermissionsChange
[x] Refactor OnSdlChoiceChosen
[x] Refactor OnSystemRequest
[x] Refactor OnTBTClientState
[x] Refactor OnTouchEvent
[x] Refactor OnVehicleData
[x] Refactor ParameterPermissions
[x] Refactor PerformAudioPassThru
[x] Refactor PerformAudioPassThruResponse
[x] Refactor PerformInteraction
[x] Refactor PerformInteractionResponse
[x] Refactor PermissionItem
[x] Refactor PresetBankCapabilities
[x] Refactor PutFile
[x] Refactor PutFileResponse
[x] Refactor ReadDID
[x] Refactor ReadDIDResponse
[x] Refactor RegisterAppInterface
[x] Refactor RegisterAppInterfaceResponse
[x] Refactor ResetGlobalProperties
[x] Refactor ResetGlobalPropertiesResponse
[x] Refactor ScreenParams
[x] Refactor ScrollableMessage
[x] Refactor ScrollableMessageResponse
[x] Refactor SdlMsgVersion
[x] Refactor SetAppIcon
[x] Refactor SetAppIconResponse
[x] Refactor SetDisplayLayout
[x] Refactor SetDisplayLayoutResponse
[x] Refactor SetGlobalProperties
[x] Refactor SetGlobalPropertiesResponse
[x] Refactor SetMediaClockTimer
[x] Refactor SetMediaClockTimerResponse
[x] Refactor Show
[x] Refactor ShowResponse
[x] Refactor SingleTireStatus
[x] Refactor Slider
[x] Refactor SliderResponse
[x] Refactor SoftButton
[x] Refactor SoftButtonCapabilities
[x] Refactor Speak
[x] Refactor SpeakResponse
[x] Refactor StartTime
[x] Refactor SubscribeButton
[x] Refactor SubscribeButtonResponse
[x] Refactor SubscribeVehicleData
[x] Refactor SubscribeVehicleDataResponse
[x] Refactor SystemRequest
[x] Refactor SystemRequestResponse
[x] Refactor TextField
[x] Refactor TireStatus
[x] Refactor TouchCoord
[x] Refactor TouchEvent
[x] Refactor TouchEventCapabilities
[x] Refactor TTSChunk
[x] Refactor UnregisterAppInterface
[x] Refactor UnregisterAppInterfaceResponse
[x] Refactor UnsubscribeButton
[x] Refactor UnsubscribeButtonResponse
[x] Refactor UnsubscribeVehicleData
[x] Refactor UnsubscribeVehicleDataResponse
[x] Refactor VehicleDataResult
[x] Refactor VehicleType
[x] Refactor VrHelpItem

[x] Refactor RPC Enums

[x] Refactor AmbientLightStatus
[x] Refactor AppHMIType
[x] Refactor AppInterfaceUnregisteredReason
[x] Refactor AudioStreamingState
[x] Refactor AudioType
[x] Refactor BitsPerSample
[x] Refactor ButtonEventMode
[x] Refactor ButtonName
[x] Refactor ButtonPressMode
[x] Refactor CarModeStatus
[x] Refactor CharacterSet
[x] Refactor CompassDirection
[x] Refactor ComponentVolumeStatus
[x] Refactor DeviceLevelStatus
[x] Refactor Dimension
[x] Refactor DisplayType
[x] Refactor DriverDistractionState
[x] Refactor ECallConfirmationStatus
[x] Refactor EmergencyEventType
[x] Refactor FileType
[x] Refactor FuelCutoffStatus
[x] Refactor GlobalProperty
[x] Refactor HMILevel
[x] Refactor HmiZoneCapabilities
[x] Refactor IgnitionStableStatus
[x] Refactor IgnitionStatus
[x] Refactor ImageFieldName
[x] Refactor ImageType
[x] Refactor InteractionMode
[x] Refactor KeyboardEvent
[x] Refactor KeyboardLayout
[x] Refactor KeypressMode
[x] Refactor Language
[x] Refactor LayoutMode
[x] Refactor LockScreenStatus
[x] Refactor MediaClockFormat
[x] Refactor PowerModeQualificationStatus
[x] Refactor PowerModeStatus
[x] Refactor PrerecordedSpeech
[x] Refactor PrimaryAudioSource
[x] Refactor PRNDL
[x] Refactor RequestType
[x] Refactor Result
[x] Refactor SamplingRate
[x] Refactor SdlCommand
[x] Refactor SoftButtonType
[x] Refactor SpeechCapabilities
[x] Refactor SystemAction
[x] Refactor SystemContext
[x] Refactor TBTState
[x] Refactor TextAlignment
[x] Refactor TextFieldName
[x] Refactor TouchType
[x] Refactor TriggerSource
[x] Refactor UpdateMode
[x] Refactor VehicleDataEventStatus
[x] Refactor VehicleDataNotificationStatus
[x] Refactor VehicleDataResultCode
[x] Refactor VehicleDataStatus
[x] Refactor VehicleDataType
[x] Refactor VrCapabilities
[x] Refactor WarningLightStatus
[x] Refactor WiperStatus

:grinning: :grinning: :grinning:  This PR is ready for testing!!  :grinning: :grinning: :grinning:
I've given it a quick test run on my Gen3 setup and it seems to be working pretty well.  Tomorrow, I'm going to run it through the unit tests that are in PR #68, which should give us a good idea as to how it works compared to the current code base.  I'm sure there are a couple bugs or typos that I've missed, but unit testing should be able to help me find those.
I will need someone setup with older versions of SDL (prior to gen 3) to give it a test run and make sure it works as expected.  @lea255ace, is that something you might be able to do?
Also, as you can see at the top, this PR has modified ~11,000 lines of code, so it's never too early to start reviewing the code.  This change is slated to be included in the 4.0.0 release on 3/31.

Here is a pre-built APK of the Livio SDL Tester built with this PR.  Please use this file for testing.

Tested against a 1.1 TDK. The PutFile and SetAppIcon requests failed with 'UNSUPPORTED REQUEST' error codes, and the subsequent Show for the app icon fail with INVALID_DATA as a result. A manual Show to put text on the screen does work, however.

Thanks, Mick.  I believe the "UNSUPPORTED_REQUEST" is expected since 1.1 doesn't support images.
I think the INVALID_DATA issue may be a bug in the tester app (unrelated to this PR).  Looks like I don't check if the PutFile was successful or not prior to deciding if I should send the image as part of the Show command, so the Show is failing due to graphic image not existing on the head-unit.  I'll make an issue for that in my repo.  I think this is also an inherent flaw with the Show command - if everything is good except for the image, the Show command should show whatever it can instead of rejecting the message outright.
Are the other supported commands (AddCommand, Alert, SubscribeButton, etc) working correctly?

Agreed on the Show behavior. The other commands work only somewhat. Alert will show the text for the alert, but the TTS fails and then the app disconnects. SubscribeButton and AddCommand similarly disconnect the app due to a timeout.

The app is set up to disconnect whenever a request doesn't receive a response in a timely fashion (currently set to 5 seconds), so I'm guessing that's what's going on here.  This behavior could, potentially, be caused by this PR, but I'll have to do some digging.  Another possible cause could be if Gen1.1 is substantially slower on sending over responses, the app may be timing out before the response comes over.  I'll make a new APK of the app with this timeout disabled so we can try that.
Does a successful Show command receive a success response?

Nope, the text appears on the screen but no response ever shows up on the mobile side.

Ok, that sounds incorrect, so I'll investigate.

I made a few more modifications, so hopefully this fixes problems with Gen1.1.  Here's a new APK to test with.  I noticed that CreateInteractionChoiceSet isn't working correctly, so I need to investigate whether that's a problem with the application or with the PR.
Still working on getting unit tests up-and-running with this PR; once that is complete, I will be very confident in the status of this PR.

Just tested most recent commit on Livio's Gen1.1 setup and it appears to be working correctly!  Can anyone else confirm?
Unit tests are looking excellent so far, I should be able to post a comparison to the current code base today.  Pending any additional bugs found during unit tests, this PR should be good to go.

Here are the results of the unit tests for this PR.  Note that this PR needs to be re-based, so some issues have recently been fixed but are still showing failures.  These failed tests should pass after re-basing the branch.

Tests Run
Test Passes (%)
Test Failures (%)
Test Errors (%)

1435
1312 (91%)
110 (8%)
13 (1%)

The difference between a test failure and a test error is that a failure successfully runs through the test code, but at least one of the test assertions was failed, while a test error crashes while executing the test code due to an exception that wasn't caught by the test.
Of the 123 failed tests, 83 are related to defensive-copying (#11), 17 are related to enums not handling valueForString consistently (#91),  10 are bugs in the mobile libraries (#71 & #102) and the remaining 13 are issues with the tests themselves.
You can compare these results against the master branch results here.  I'm still reviewing the results of the 1,400+ unit tests and looking for any additional bugs, but this PR actually has higher pass % than master, so it's in good shape!

Closing as stale.


USHIFT-1928: Switch to OCP 4.14 dependencies for building ISOs and ostree commits

Also includes USHIFT-1553  fix.
As a byproduct of this change, we need to upgrade our devenv to RHEL 9.3 because latest osbuild dependencies are no longer available on RHEL 9.2.

/lgtm

/lgtm

/test microshift-metal-tests

/test metal-periodic-test

/lgtm

/lgtm

We need this PR merged to unblock CI tests in a different region. Otherwise, no jobs can pass without osbuild package update.
/override ci/prow/metal-periodic-test
/override ci/prow/microshift-metal-tests


RAG app example

What does this PR do?
Creating a E2E RAG example that is able to do retrieval on documents and answer user questions. Components included:
Inference (with llama-stack)
Memory (with llama-stack)
Agent (with llama-stack)
Frontend (with Gradio)
Feature/Issue validation/testing/test plan

Before submitting

[ ] This PR fixes a typo or improves the docs (you can dismiss the other checks if that's the case).
[ ] Did you read the contributor guideline,
Pull Request section?
[ ] Was this discussed/approved via a Github issue? Please add a link
to it if that's the case.
[ ] Did you make sure to update the documentation with your changes?
[ ] Did you write any new necessary tests?

Thanks for contributing 🎉!

Can you rebase and update requirements.txt so we can merge it in


Aiken is no longer evaluating trace and cbor traces.

What Git revision are you using?
77f58cf5cb4e53e2c13301d7c8049899f4353809
What operating system are you using, and which version?

[x] macOS

Describe what the problem is?
Since latest version cbor.diagnostics and tracing stopped working properly. It was working a couple of days ago.
What should be the expected behavior?
I expect that cbor diagnostic is evaluated.

See source code
use acca/collections/hashed_list
use acca/hash.{PubKeyHash} as ahash
use acca/validators
use aiken/builtin.{append_string}
use aiken/cbor
use aiken/dict.{Dict}
use aiken/hash.{Hash, Sha2_256}
use aiken/list
use aiken/option
use aiken/string
use aiken/transaction.{
  InlineDatum, Input, Output, OutputReference, ScriptContext, Spend,
}
use aiken/transaction/credential.{ScriptCredential}
use voting/challenge_proposal.{Challenge, ChallengeProposal, Proposal}

type VotingPower =
  Int

type Choice =
  Int

type Vote {
  voter_key: PubKeyHash,
  voting_power: VotingPower,
  challenge: Challenge,
  proposal: Proposal,
  choice: Choice,
}

type FlatVote {
  key: ChallengeProposal,
  yes: VotingPower,
  no: VotingPower,
  abstain: VotingPower,
}

type Result {
  yes: VotingPower,
  no: VotingPower,
  abstain: VotingPower,
}

// respective pubkey hashes for authorised parties
type VotingDatum {
}

type ResultsBatchDatum {
  results: Dict<ChallengeProposal, Result>,
  merkle_root_hash: ByteArray,
  iteration: Int,
}

type Redeemer {
  // Approve { merkle_tree: MerkleTree<Vote> }
  CreateVoteBatch { off_chain_merkle_tree_root_hash: Hash<Sha2_256, Vote> }
  ReduceResults {
    off_chain_merkle_tree_root_hash: Hash<Sha2_256, ResultsBatchDatum>,
    iteration: Int,
  }
}

validator {
  fn voting(
    _voting_datum: VotingDatum,
    redeemer: Redeemer,
    sc: ScriptContext,
  ) -> Bool {
    // On L2 (Hydra) one will typically lock votes with 0 ADA but on L1 of course each eUTxO is guarded by ca. 1,7 ADA
    expect Spend(output_reference) =
      sc.purpose
    let inputs: List<Input> =
      sc.transaction.inputs
    let outputs: List<Output> =
      sc.transaction.outputs

    when redeemer is {
      CreateVoteBatch { off_chain_merkle_tree_root_hash } -> {
        let votes: List<Vote> =
          get_votes_from_inputs(inputs)
        trace append_string(
          @"votes_count:",
          string.from_int(list.length(votes)),
        )
        // let results: Dict<ChallengeProposal, Result> =
        //   count_votes(votes)
        // now we need to check if any of the output UTxOs contains results
        // now we have to check if batch_id matches
        // let result_with_hash =
        //   ResultsBatchDatum {
        //     results,
        //     iteration: 0,
        //     merkle_root_hash: off_chain_merkle_tree_root_hash,
        //   }
        list.and(
          [
            //(bytearray.length(off_chain_merkle_tree_root_hash) == 32)?,
            //result_sent_to_own_address_match(inputs, outputs, output_reference)?,
            // results_must_match(sc.transaction.outputs, result_with_hash)?,
            validate_votes(votes, off_chain_merkle_tree_root_hash)?,
          ],
        )
      }
      //results_must_match(sc.transaction.outputs, result_with_hash)?,
      ReduceResults { off_chain_merkle_tree_root_hash, iteration } -> {
        // collect results from all inputs (fail if there are still votes in smart contract)
        // take existing results and compress them, into one
        // check if resulting output datum contains votes counted up properly and that they send result back to the same address
        // let new_iteration =
        //   iteration + 1
        let all_results: List<ResultsBatchDatum> =
          get_vote_results_from_inputs(inputs, iteration)
        // let result: ResultsBatchDatum =
        //   count_vote_results(
        //     vote_results: all_results,
        //     new_iteration: new_iteration,
        //   )
        // let result_with_hash =
        //   ResultsBatchDatum {
        //     ..result,
        //     merkle_root_hash: off_chain_merkle_tree_root_hash,
        //   }
        list.and(
          [
            //            (bytearray.length(off_chain_merkle_tree_root_hash) == 32)?,
            validate_results(all_results, off_chain_merkle_tree_root_hash)?,
            result_sent_to_own_address_match(inputs, outputs, output_reference)?,
          ],
        )
      }
      //results_must_match(sc.transaction.outputs, result_with_hash)?,
      _ ->
        False
    }
  }
}

fn result_sent_to_own_address_match(
  inputs: List<Input>,
  outputs: List<Output>,
  output_reference: OutputReference,
) {
  let validator_hash =
    validators.own_validator_script_address_hash(inputs, output_reference)

  let script_creds =
    list.filter(
      outputs,
      fn(o) {
        when o.address.payment_credential is {
          ScriptCredential(_) ->
            True
          _ ->
            False
        }
      },
    )

  list.any(
    script_creds,
    fn(output) {
      expect ScriptCredential(output_script_hash) =
        output.address.payment_credential

      output_script_hash == validator_hash
    },
  )
}

fn results_must_match(
  outputs: List<Output>,
  expected_results: ResultsBatchDatum,
) -> Bool {
  let inline_datums =
    list.filter(
      outputs,
      fn(o) {
        when o.datum is {
          InlineDatum(_) ->
            True
          _ ->
            False
        }
      },
    )
  list.any(
    inline_datums,
    fn(output) {
      trace builtin.append_string(
        @"Entering new output:",
        cbor.diagnostic(output),
      )

      expect InlineDatum(given_results_data) =
        output.datum

      trace builtin.append_string(
        @"Given_results_data:",
        cbor.diagnostic(given_results_data),
      )

      expect given_results_datum: ResultsBatchDatum =
        given_results_data

      trace builtin.append_string(
        @"Given_results_datum:",
        cbor.diagnostic(given_results_datum),
      )
      expected_results == given_results_datum
    },
  )
}

fn validate_votes(
  votes: List<Vote>,
  off_chain_merkle_tree_root_hash: Hash<Sha2_256, Vote>,
) -> Bool {
  let ser_fn =
    fn(v: Vote) { builtin.serialise_data(v) }

  let hashed_list =
    hashed_list.from(votes, ser_fn)

  let on_chain_merkle_tree_root_hash =
    hashed_list.hash

  trace builtin.append_string(
    @"on_chain_hash:",
    cbor.diagnostic(on_chain_merkle_tree_root_hash),
  )

  trace builtin.append_string(
    @"off_chain_hash:",
    cbor.diagnostic(off_chain_merkle_tree_root_hash),
  )

  on_chain_merkle_tree_root_hash == off_chain_merkle_tree_root_hash
}

fn validate_results(
  results: List<ResultsBatchDatum>,
  off_chain_merkle_tree_root_hash: Hash<Sha2_256, ResultsBatchDatum>,
) -> Bool {
  let ser_fn =
    fn(r: ResultsBatchDatum) { builtin.serialise_data(r) }

  let hashed_list =
    hashed_list.from(results, ser_fn)

  let on_chain_merkle_tree_root_hash =
    hashed_list.hash

  on_chain_merkle_tree_root_hash == off_chain_merkle_tree_root_hash
}

fn get_votes_from_inputs(inputs: List<Input>) -> List<Vote> {
  list.map(
    inputs,
    fn(input) {
      expect InlineDatum(vote_data) =
        input.output.datum
      expect vote: Vote =
        vote_data

      vote
    },
  )
}

// get vote results but only for this iteration
fn get_vote_results_from_inputs(
  inputs: List<Input>,
  iteration: Int,
) -> List<ResultsBatchDatum> {
  list.filter_map(
    inputs,
    fn(input) {
      expect InlineDatum(vote_results_data) =
        input.output.datum
      expect results_data_datum: ResultsBatchDatum =
        vote_results_data
      if results_data_datum.iteration == iteration {
        Some(results_data_datum)
      } else {
        None
      }
    },
  )
}

fn count_vote_results(
  vote_results: List<ResultsBatchDatum>,
  new_iteration: Int,
) -> ResultsBatchDatum {
  let merging_fn =
    fn(rd1: ResultsBatchDatum, rd2: ResultsBatchDatum) {
      ResultsBatchDatum {
        results: dict.union_with(
          left: rd1.results,
          right: rd2.results,
          with: results_conflict_resolver,
          compare: challenge_proposal.compare,
        ),
        iteration: new_iteration,
        merkle_root_hash: #"",
      }
    }

  // assign new iteration
  let zero =
    ResultsBatchDatum {
      results: dict.new(),
      iteration: new_iteration,
      merkle_root_hash: #"",
    }

  list.foldl(vote_results, merging_fn, zero)
}

fn do_count_votes(
  votes: List<Vote>,
  acc: Dict<ChallengeProposal, Result>,
) -> Dict<ChallengeProposal, Result> {
  when votes is {
    [] ->
      acc
    [h, ..t] -> {
      let fv: FlatVote =
        to_flat_vote(h)
      let c: Challenge =
        h.challenge
      let p: Proposal =
        h.proposal
      dict.union_with(
        left: do_count_votes(t, acc),
        right: dict.insert(
          self: dict.new(),
          key: ChallengeProposal { challenge: c, proposal: p },
          value: Result { yes: fv.yes, no: fv.no, abstain: fv.abstain },
          compare: challenge_proposal.compare,
        ),
        with: results_conflict_resolver,
        compare: challenge_proposal.compare,
      )
    }
  }
}

fn results_conflict_resolver(
  _key: ChallengeProposal,
  left: Result,
  right: Result,
) -> Option<Result> {
  Some(
    Result {
      yes: left.yes + right.yes,
      no: left.no + right.no,
      abstain: left.abstain + right.abstain,
    },
  )
}

fn count_votes(votes: List<Vote>) -> Dict<ChallengeProposal, Result> {
  let empty =
    dict.new()
  do_count_votes(votes, empty)
}

fn voting_power_for_choice(v: Vote, c: Choice) -> Option<VotingPower> {
  list.find(
    [0, 1, 2],
    fn(choice: Choice) { list.and([v.choice == choice, c == choice]) },
  )
    |> option.map(fn(_) { v.voting_power })
}

fn to_flat_vote(v: Vote) -> FlatVote {
  let cp =
    ChallengeProposal { challenge: v.challenge, proposal: v.proposal }
  let y =
    voting_power_for_choice(v, 2)
      |> option.or_else(0)
  let n =
    voting_power_for_choice(v, 1)
      |> option.or_else(0)
  let a =
    voting_power_for_choice(v, 0)
      |> option.or_else(0)

  FlatVote { key: cp, yes: y, no: n, abstain: a }
}

test to_flat_vote_1() {
  let v1 =
    Vote {
      voter_key: #"01",
      voting_power: 10,
      challenge: 1,
      proposal: 1,
      choice: 2,
    }

  to_flat_vote(v1) == FlatVote {
    key: ChallengeProposal(1, 1),
    yes: 10,
    no: 0,
    abstain: 0,
  }
}

test to_flat_vote_2() {
  let v1 =
    Vote {
      voter_key: #"01",
      voting_power: 10,
      challenge: 1,
      proposal: 1,
      choice: 1,
    }

  to_flat_vote(v1) == FlatVote {
    key: ChallengeProposal(1, 1),
    yes: 0,
    no: 10,
    abstain: 0,
  }
}

test to_flat_vote_3() {
  let v1 =
    Vote {
      voter_key: #"01",
      voting_power: 10,
      challenge: 1,
      proposal: 1,
      choice: 0,
    }

  to_flat_vote(v1) == FlatVote {
    key: ChallengeProposal(1, 1),
    yes: 0,
    no: 0,
    abstain: 10,
  }
}

Error:
2023-03-21 14:26:23.594  INFO 67144 --- [    Test worker] o.c.h.hydra.suppliers.HydraUtxoSupplier  : getUTxOResponse - last Seq:17

RedeemerError { tag: "Spend", index: 0, err: Machine(EvaluationFailure, ExBudget { mem:<PHONE_NUMBER>854277866, cpu:<PHONE_NUMBER>531932002 }, ["[\n  (lam\n    aiken/list_foldr_list_data_data_data_tuple_int_bytearray_tuple_int_bytearray_tuple_int_bytearray\n    [\n      (lam\n        aiken/list_foldr_list_data_data_data_tuple_int_bytearray_tuple_int_bytearray_tuple_int_bytearray\n        [\n          (lam\n            aiken/cbor_encode_base16\n            [\n              (lam\n                aiken/cbor_encode_base16\n                [\n                  (lam\n                    aiken/cbor_from_int\n                    [\n                      (lam\n                        aiken/cbor_from_int\n                        [\n                          (lam\n                            aiken/list_foldr_map_data_data_data_tuple_data_data_tuple_bytearray_bytearray_tuple_bytearray_bytearray_tuple_bytearray_bytearray\n                            [\n                              (lam\n                                aiken/list_foldr_map_data_data_data_tuple_data_data_tuple_bytearray_bytearray_tuple_bytearray_bytearray_tuple_bytearray_bytearray\n                                [\n                                  (lam\n                                    aiken/list_foldr_list_data_data_data_tuple_bytearray_bytearray_tuple_bytearray_bytearray_tuple_bytearray_bytearray\n                                    [\n                                      (lam\n                                        aiken/list_foldr_list_data_data_data_tuple_bytearray_bytearray_tuple_bytearray_bytearray_tuple_bytearray_bytearray\n                                        [\n                                          (lam\n                                            aiken/cbor_do_diagnostic\n                                            [\n                                              (lam\n                                                aiken/cbor_do_diagnostic\n                                                [\n                                                  (lam\n                                                    aiken/cbor_diagnostic\n                                                    [\n                                                      [\n                                                        (builtin appendString)\n                                                        (con\n                                                          string\n                                                          \"votes_count:\"\n                                                        )\n                                                      ]\n                                                      [\n                                                        (lam\n                                                          aiken/string_from_int\n                                                          [\n                                                            aiken/string_from_int\n                                                            [\n                                                              (lam\n                                                                aiken/list_length_list_data\n                                                                [\n                                                                  (lam\n                                                                    aiken/list_length_list_data\n                                                                    [\n

What you see above should simply evaluate to cbor not dumb all code.
What is worth to mention is that code was compiled with:
aiken build -k

@matiwinnetou can you provide the compiled code please?

Aiken compiled code:


fix(309): Add codeblock to unknown node

fixes https://github.com/KaotoIO/kaoto-next/issues/309
@lordrip I tried both - the <pre> with <code> and the PF CodeBlock - I believe using CodeBlock the yaml code gets more highlighted, but I can change to the originally proposed solution.
Also I wanted to ask, whether we should add some info, regarding the displayed block of code - I was thinking about, to be consistent - something like FieldLabelIcon qestionmark with popover, containing information, regarding the displayed yaml and some info, regarding the node itself - that the name is not correct and needs to be changed in source code, or replaced in the canvas.
Let me know, what do you think.

@tplevko looks good :+1:

@tplevko if I'm not mistaken, we shown the component's definition, but now we're showing an internal kaoto object, is this intended?


Disable anti-aliasing in Script Editor

Left one is without anti-aliasing and for some reason much easier for me to read. On the picture a Courier New font is imported. I also tried to check 'Disable Filter' in font import settings but the result was the same. Default font in script editor is also anti-aliased.
I believe most of the people prefer anti-aliased fonts but having ability to disable it would be great for the rest of us that struggle with it:)
Running on OS X Yosemite
Thanks,
Lubos

Tried to investigate but I'm blind as a mole. Can you @luboslenco confirm if it's fixed now?

This might be easier to do now that we're using FreeType and DynamicFonts.

Should be easy to add an editor option to tweak the default aliasing for FreeType.

So I've been looking at this and I'm not so sure is a junior job really. Adding the setting itself is trivial and even getting the entirety of Godot to disable anti-alias is easy as well, but getting the right place where to put the flag itself and getting the whole thing right isn't.
The important part, at least initially, is to pass FT_RENDER_MODE_MONO to FT_Render_Glyph. This is done by DynamicFontAtSize so we should have a 'antialias' flag there to change the render mode as needed. Should that flag only be set in that class? Does the script editor use its own font?
Those questions aside, the default font currently used by Godot does, in fact, look very bad without anti-alias.
In any case, I'm not sure if it's possible to assign issues to non-team members but I'll work on this :)

Does the script editor use its own font?

Yes, it uses the Hack font by default.

Oh , that's a good reference, thank you

Fixed by #23645.


my gist is not updated

My  gist is not updated though i got success message for updating gist.
i got github token with 'repo' and 'gist'. is it right? or  should i need other options?
my repo url is here

make sure your secret "GH_TOKEN" has been set (as below)

I set it up like that. but it’s still not working 8^8
what should i check to fix this?

ummm....  I just guess your locale is a typo
LOCALE: ko_KR 👉  LOCALE: ko-KR

Hi there, I'm experiencing the same issue as @skqoaudgh. I've tried debugging the code but am having no luck thus far. Any updates or suggestions on how to fix the problem would be very much appreciated.

Good day. I check code and find issue. Date().toLocaleTimeString('ko-KR', { hour12: false }); has return timestamp to korean format like 8시 0분 50초.  I suggest set timezone, like ('en-US', { hour12: false, timeZone: 'Asia/Seoul' })

i re-wirte locate to 'en-US' but still not working.. 8^8

If you're not contributed other owner's repository, code will not writed anything.

you mean, the gist  is not writed if i commit to my public repo?

If my think is correct, yes


Unable to render Chart v3 and above in React v17.0.2

Initialize Chart throw an error.
Error:
_chart.default is not a constructor

Change chartjs version to below v3 and it works.
https://codesandbox.io/s/admiring-cohen-jrfcx?file=/src/MixedChart.js

Because of  treeshaking support, the exports have changed.
See the documentation on how to integrate:
https://www.chartjs.org/docs/latest/getting-started/integration.html#bundlers-webpack-rollup-etc
And your sandbox working with v3:
https://codesandbox.io/s/delicate-brook-mtnne?file=/src/MixedChart.js


Allow "100%" width prop in Progress component

Right now <Progress /> component only accepts number as a width prop (which is then converted to px).  Width specified in percent should also be allowed. Progress component should be of 100% width by default.

I can try and make a PR for that,
would you prefer a simple check like this:
props => props.width ? ${props.width}px : '100%'
or a little more complex check that allows the user to choose the type of width measurement?
IMO the user should always specify the type and resort to px if none is chosen

@Mrpanquecas I think we could approach it in exact same way as in <TextField /> component. Same thing should also be done in <Select /> component. #46. Do you want to solve these issues? 😊 thanks a lot for getting involved!

Yes i will try to solve this issues ASAP, keep up the really good work

I've modified the select to be able to get 100% of the width.
the progressbar is a bit more tricky because when you put 100% width in the BlueBar component it gets 100% of the parent so the display of the progress percentage is never placed right. Any ideas to fix this?
also i'm not able to commit (it's my first time contributing ever) how is that process done? (can't push to new/old branches)

@Mrpanquecas ok so for now just make a pull request for the Select component changes (#46). You can see a nice tutorial on how to do it here. As for the Progress component- I can take care of that and I will let you know how I solved the issue, ok? 😊

@Mrpanquecas you can check my solution for the Progress component now 😊 basically I used css property clip-path so the blue bar is always of 100% width but then I only crop out percentage % of its width, so the rest becomes invisible

Awesome! I will try it out right now in my project! thanks a lot for the explanation!

:tada: This issue has been resolved in version 3.0.0-beta.1 :tada:
The release is available on:

npm package (@beta dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Fix Notification Subscription Loading and Messaging Errors

Proposed Changes

Fixes #9021
Change 1: Resolved the infinite loading state on the Subscribe button when the notification permission prompt is closed by clicking 'X'.
Change 2: Updated messages for subscribing and unsubscribing actions to display relevant and accurate information.

Before :
Subscribe issue

Irrelevant Notification Message on clicking unsubscribe:

After:

@ohcnetwork/care-fe-code-reviewers
Merge Checklist

[ ] Add specs that demonstrate bug / test a new feature.
[ ] Update product documentation.
[ ] Ensure that UI text is kept in I18n files.
[ ] Prep screenshot or demo video for changelog entry, and attach it to issue.
[ ] Request for Peer Reviews
[ ] Completion of QA

Summary by CodeRabbit

New Features

Added clear notification messages for subscription actions, including success and failure confirmations.

Bug Fixes

Improved error handling for notification subscriptions, providing immediate feedback if permission is denied or if the subscription fails.

User Experience Enhancements

Streamlined user feedback during notification management, ensuring users are informed of their subscription status effectively.

LGTM


yaml file first line language key and recognition of existing already translated lines

For yaml files, the first line is the language code, such as 'en:'
en:
  hello: "Hello world"

The translation to another language such as 'es' creates a new file es.yml where the first line language code is still 'en:'
en:
  hello: "Hola Mundo"

It would be good if i18n-auto-translation would recognize the first line language code and update it as part of the output translated language file.
The issue is the when the first line language code is updated manually, i18n-auto-translation no longer recognizes that all following sub or indented keys and their translations are existing already-translated lines if i18n-auto-translation is run again for updates:
Example:
First run:

Invoke 'google-translate' from 'en' to 'es' with 1 inputs...
Add 1 new translations
Write target 'C:\Users\KG\app\config\locales\es-test.yml'

Manually edit first line language code to es:
es:
  hello: "Hola Mundo"

Expected on second run with edited existing file es-test.yml:

Target is up-to-date: '.\config\locales\es-test.yml'

Actual:

Invoke 'google-translate' from 'en' to 'es' with 1 inputs...
Add 1 new translations
Delete 1 stale translations
Write target 'C:\Users\KG\cartinsights\config\locales\es-test.yml'

Please advise how I can handle yaml file updates, thanks.

hi @kgorshkov,
yaml files are not supported at all, only json files. I'm really surprised that anything works with yaml.
Maybe in some near future I can support yaml files, but for now you can only use this library with json.
If I ever create support for yaml, I'll let you know here in this issue, but for now I don't have time to do that.

Apologies I posted this in the incorrect git project.


Add multi-language documentation with Gradle Kotlin DSL examples

The current documentation only provides Gradle Groovy gradle.build examples and not Gradle Kotlin DSL gradle.build.kts examples e.g.
nativeImage {
    args('--static')
}

In Gradle Kotlin script is
tasks.named<io.micronaut.gradle.graalvm.NativeImageTask>("nativeImage") {
    args("--static")
}

Kotlin users prefer to use Kotlin all the way down and not having the examples adds friction to adopting the plugin.
I don't think the Micronaut Gradle Plugin documentation is published using adoc, it only has a README in markdown. So its not possible to use test source snippets for multi-language docs like this
If you are happy for them to appear after the Groovy examples in the README I'll start a PR to add these?

PRs welcome, though I think it ca be written simpler with in Kotlin :
tasks {
      nativeImage {
          args("--static")
      }
}

PRs welcome, though I think it ca be written simpler with in Kotlin :
tasks {
      nativeImage {
          args("--static")
      }
}

Damn I missed that! That's even easier but proves the point that a few examples would help :smile:

Damn I missed that! That's even easier but proves the point that a few examples would help :smile:

yeah although I think the above syntax works in both Groovy and Kotlin so it could be just a matter of updating the docs to make sure a compatible syntax supported by both is used

yeah although I think the above syntax works in both Groovy and Kotlin so it could be just a matter of updating the docs to make sure a compatible syntax supported by both is used


Update dns-faq-private.yml

The following hasn't been mentioned anywhere in the doc. I've added it so readers have clarity. Feel free to modify it.
Which one takes precedence, Azure private DNS or a custom DNS server setup on a VM? That depends how you configured your Azure VMs/VNet. If you specify custom DNS at the VNet or NIC level (by pointing to the IP address of the NIC of the VM running the DNS server), this will take precedence. If not, then the private DNS zone linked to the VNet will apply

@greg-lindsay
Can you review the proposed changes?
Important: When the changes are ready for publication, adding a #sign-off comment is the best way to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

@greg-lindsay
Can you review this old PR and determine whether it needs to be closed or merged?

#sign-off


macOS - make xpackage fails

Hi guys,
I'm trying to move from mapbox to maplibre for one of my macOS apps and I'm running into some issues when I try to build the framework for macOS, I get this cmake error...
make xpackage
mkdir -p "platform/macos/macos.xcworkspace/xcuserdata/andy.xcuserdatad"
cp platform/macos/WorkspaceSettings.xcsettings "platform/macos/macos.xcworkspace/xcuserdata/andy.xcuserdatad/WorkspaceSettings.xcsettings"
mkdir -p build/macos
(cd build/macos && cmake -G Xcode ../../../../ \
		-DCMAKE_SYSTEM_NAME=Darwin )
-- The CXX compiler identification is AppleClang <IP_ADDRESS>50022
-- The C compiler identification is AppleClang <IP_ADDRESS>50022
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Configuring GL-Native with OpenGL renderer backend
CMake Error at vendor/mapbox-base.cmake:4 (add_subdirectory):
  The source directory

    /Users/andy/Downloads/maplibre-gl-native-master/vendor/mapbox-base

  does not contain a CMakeLists.txt file.
Call Stack (most recent call first):
  CMakeLists.txt:972 (include)

CMake Error at vendor/mapbox-base.cmake:7 (set_target_properties):
  set_target_properties Can not find target to add properties to:
  mapbox-base-extras-kdbush.hpp
Call Stack (most recent call first):
  CMakeLists.txt:972 (include)

I dont have any experience with cmake unfortunately so any hints will be really appreciated!
I have cmake v3.20 (via homebrew) and Xcode 12.5.1 installed.
Thank you!

It looks like you dont have mapbox-base submodule initialized - do you see any files in vendor/mapbox-base folder?. Have you cloned the repo with --recurse-submodules flag? (git clone --recurse-submodules https://github.com/maplibre/maplibre-gl-native.git)

Oh, of course I didnt cloned the repository correctly!
Thanks a lot @petr-pokorny-1 !


WebAPI - Url.Action returns null, worked well in .netcore 2.2

This issue has been moved from a ticket on Developer Community.

[regression] [worked-in:15.7]
Hi, this is my part of code inside a controller:
string activationLinkTemplate = Url.Action("activate", "users", new { userId = LinkTemplateTokens.USER_ID, code = LinkTemplateTokens.LINK_TOKEN }, Request.Scheme);
This worked in previous version (.Net Core 2.2), but now returns null. I really don't know what to do with that.
This part of code should create activation link template like:
"https://mysite.com/api/users/activate?userId=10&code=56785678"
so that use can activate its account. What can I do now?

Original Comments
Visual Studio Feedback System on 11/4/2019, 00:40 AM:
We have directed your feedback to the appropriate engineering team for further evaluation. The team will review the feedback and notify you about the next steps.

Original Solutions
(no solutions)

Thanks for contacting us.
@rynowak can you please look into this? Thanks!

The Endpoint Routing has introduced a set of breaking changes in ASP.NET Core 3.0.
You can learn more about the specific breaking changes from https://github.com/aspnet/Announcements/issues/120
If this explains the behavior change you see, please let us know.
Otherwise, please provide a minimalistic repro project (ideally hosted as a GitHub repo) so that we can investigate this further.


Use a single EventBox to handle group drawer events

Fixes #3029
TODO: contained widgets don't seem to receive any input events

Should be fixed by https://github.com/Alexays/Waybar/pull/3201


How to run Objectnav task using Gibson datasets?

❓ Questions and Help
Hello! I want to run objectnav task in family scene and I find that the mp3d contains many other scene types. But gibson datasets are suitable for my need. So I want to know if I can run objectnav task in gibson? How to generate the objectnav task dataset (train/val) for gibson environment? I have get the semantic information from 3DSceneGraph for gibson and generate the semantic.ply, can the object annotation show in top-down map?
Thanks!

Hi,

! I want to run objectnav task in family scene
Can you elaborate more? What is family scene?

Correct, first step is to get semantic.ply and bounding boxes for Gibson
dataset.
Second is to generate ObjectNav episodes based on it. The dataset
generation code is not publicly available. But if you confirm that first
step is working we can prioritize and merge the dataset generation code
into master.
Thank you!
On Sat, Jul 25, 2020 at 8:30 PM Bangguo Yu<EMAIL_ADDRESS>wrote:

❓ Questions and Help
Hello! I want to run objectnav task in family scene and I find that the
mp3d contains many other scene types. But gibson datasets are suitable for
my need. So I want to know if I can run objectnav task in gibson? How to
generate the objectnav task dataset (train/val) for gibson environment? I
have get the semantic information from 3DSceneGraph for gibson and generate
the semantic.ply, can the object annotation show in top-down map?
Thanks!
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/facebookresearch/habitat-api/issues/432, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAGWHACS7P4WEI55EQ3RSRDR5OPMTANCNFSM4PHYTELA
.

I am sorry for annoying you about family scene and its not important. I follow the habitat-smi/datasets to get the semantic.ply ,ids and scn, but i dont kown how to use them. I am looking forward to your publication about the dataset generation code for objectnav task.
Thank you!

Hi, I'm wondering if you can get the semantic observations from Gibson?

https://github.com/facebookresearch/habitat-sim/issues/1080


window_icon example displays default icon

Describe the bug
cargo run --example window_icon launches a window properly, but the window icon is the default wayland icon.
Steps To Reproduce
$ git clone https://github.com/tauri-apps/tao.git
$ cd tao
$ cargo run --example window_icon

Expected behavior
I expected the window to open with this icon https://github.com/tauri-apps/tao/blob/dev/examples/icon.png
Screenshots
If applicable, add screenshots to help explain your problem.

Platform and Versions (please complete the following information):
OS: Arch Linux
Rustc: rustc 1.78.0 (9b00956e5 2024-04-29)
Additional context

I have the same problem with X11 so this issue is not limited to Wayland.
I'm using Manjaro Linux (based on Arch) with GNOME 46

The problem also exists in Ubuntu 24.04.


atsign.dev 2.0 : Need content, diagrams, samples and examples for Dess

For this link on the dev site need content that can be ported.
https://devstaging.atsign.wtf/docs/functional_architecture/dess/

Moved the content to https://devstaging.atsign.wtf/docs/get-started/dess.
Step by step documentation/examples have been moved under guides/dess-setup.

Is it safe to close this issue @anthonyvprakash?


Fix trending articles shows current article

Fix #790

Why did you remove caching here? This will re-introduce the performance issues we had. This doesn't seem like the correct fix to the issue? The same article will still be present, no?

The caching was the issue in this case.
When you open a random article, trending articles saved in the cache. After that if you open a trending article you got the cached trending articles in the bottom (Including the current article which is saved in the cache previously).

I see. In that case we should add a cache per article but that's probably not feasible for now. Thanks!


[INJIMOB 891]: tuvali native artifact integration

Description

Describe the Changes in the PR

Issue ticket number and link

Example : INJIMOB-891

Screenshots

Add the Screenshots of the feature.

podfile.lock file changes required