Example from docker-compose.yml does not work properly

Hello,
I tried to build docker containers from docs/docker-compose.yml however it does not work properly for me.
OS: Debian 10
Pulling from d3vilh/openvpn-ui-arm32v7 executed correctly, then when building openvpn I get the error like:

Cannot locate specified Dockerfile: Dockerfile

After adding dockerfile, problem occurs at step 5/11:
Step 5/11 : RUN apk --no-cache --no-progress upgrade && apk --no-cache --no-progress add bash bind-tools curl wget ip6tables iptables openvpn easy-rsa
 ---> [Warning] The requested image's platform (linux/arm64/v8) does not match the detected host platform (linux/amd64/v3) and no specific platform was requested
 ---> Running in 412f6d3d663e
exec /bin/sh: exec format error
ERROR: Service 'openvpn' failed to build: The command '/bin/sh -c apk --no-cache --no-progress upgrade && apk --no-cache --no-progress add bash bind-tools curl wget ip6tables iptables openvpn easy-rsa' returned a non-zero code: 1

I also tried installing docker image kylemann/openvpn separately, however I don't know how to hook it up to openvpn-ui
Docker file looks like ready to use for Alpine, not for Debian.
Will it there be some prepared version under Debian?
Can openvpn-ui be hooked up to openvpn from another container such as the one from kylemann?

Hi @PennyLook arm32v7 is very outdated.
I recommend to go with arm8_64 if you don't have any real demand of  armv7_32 (if you do, you can build it).
Here is the latest multi arch version, it have ARM64 and ARM64 support
(pull d3vilh/openvpn-ui:latest)
I had a look into kyleman/openvpn before and it is very much similar with the one I use for this project (in fact both are based on deprecated "official" openvpn-client image).
Here is  100% compatible version, which I use for Raspberry-Gateway.  It builds from scratch during the installation (what is good for arm32v7), alternatively here is my home image on hub, but it has <IP_ADDRESS>/24 Home subnet rebuild for firewall rules.
You are the second person, who stick to kyleman/openvpn image, I think I'll consider to stick with to it in some time :)

Hi @d3vilh
Thank you for the information.
I used the solution from here
and I stopped at step 3/8 and a message appears:
 => ERROR [3/8] RUN go get github.com/beego/beego/v2                                                                                0.3s
------
 > [3/8] RUN go get github.com/beego/beego/v2:
0.274 exec /bin/sh: exec format error
------
Dockerfile-beego:23
--------------------
  21 |
  22 |     # Install the beego and bee packages
  23 | >>> RUN go get github.com/beego/beego/v2
  24 |     RUN go get github.com/beego/bee/v2
  25 |     #RUN go install github.com/beego/beego/v2@latest #це не треба
--------------------
ERROR: failed to solve: process "/bin/sh -c go get github.com/beego/beego/v2" did not complete successfully: exit code: 1

I tried to replace it go get, however, I was not able to configure/change it properly.
Could you please take a look at this dockerfile?

Hi @d3vilh Thank you for the information.
I used the solution from here
and I stopped at step 3/8 and a message appears:
 => ERROR [3/8] RUN go get github.com/beego/beego/v2                                                                                0.3s
------
 > [3/8] RUN go get github.com/beego/beego/v2:
0.274 exec /bin/sh: exec format error
------
Dockerfile-beego:23
--------------------
  21 |
  22 |     # Install the beego and bee packages
  23 | >>> RUN go get github.com/beego/beego/v2
  24 |     RUN go get github.com/beego/bee/v2
  25 |     #RUN go install github.com/beego/beego/v2@latest #це не треба
--------------------
ERROR: failed to solve: process "/bin/sh -c go get github.com/beego/beego/v2" did not complete successfully: exit code: 1

I tried to replace it go get, however, I was not able to configure/change it properly.
Could you please take a look at this dockerfile?

I see, it may indicate arch mismatch.
Could you share the output of  name -a, most probably you have different arm architecture.

Well yes, i should verify it more deeply.
It is a VPS:
Linux 4.19.0-25-cloud-amd64 #1 SMP Debian 4.19.289-1 x86_64 GNU/Linux
so I should probably try this one
Will it also work on such a VPS?

Well yes, i should verify it more deeply.
It is a VPS:
Linux 4.19.0-25-cloud-amd64 #1 SMP Debian 4.19.289-1 x86_64 GNU/Linux
so I should probably try this one
Will it also work on such a VPS?

Yes, that one will fit very well.

Post installation, password can be changed in docker-compose.xml file:
philipp@devBoard:~ $ grep OPENVPN ~/openvpn-server/docker-compose.yml
           - OPENVPN_ADMIN_USERNAME=admin
           - OPENVPN_ADMIN_PASSWORD=gagaZush
philipp@devBoard:~ $

just edit it and restart containers:
docker stop openvpn
docker restart openvpn-ui
docker start openvpn

@d3vilh
I managed to solve it, logged in correctly, in Configuration -> Settings and set Server Address (external) and then I tried to generate the first certificate according to the readme.
I downloaded the certificate, imported it into the OpenVPN client and the private key password is required when trying to connect.
I have no idea what password to enter there, because when generating this certificate I only entered Name - the Passphrase (Optional) and Static IP (Optional) fields were blank
Is it possible to disable this password somehow, so that the generated certificates do not require it when trying to connect?

@d3vilh
I managed to solve it, logged in correctly, in Configuration -> Settings and set Server Address (external) and then I tried to generate the first certificate according to the readme.
I downloaded the certificate, imported it into the OpenVPN client and the private key password is required when trying to connect. I have no idea what password to enter there, because when generating this certificate I only entered Name - the Passphrase (Optional) and Static IP (Optional) fields were blank
Is it possible to disable this password somehow, so that the generated certificates do not require it when trying to connect?

The password is the "Passphrase" you entered. You can leave it empty and it will not ask for the password.

yeap, but then the password is still required (in my case):
Example:

OpenVPN client GUI:

@PennyLook good day,
Im traveling and don't have x86 CPU around, but I rebuild the image with latest fixes on AWS x86 instance.
There was a bug reported some time ago related to certificate names, and couple of more improvements which was not part of x86 image. Now it is and ready for testing (I tried on my AWS node and it seems fine, but I appreciate if you could confirm the same).
There also one thing which may be related and I would implement the fix in the future - certificates does not support spaces in certificate name (I would replace spaces automatically with _ as a fix). It may be the reason as well.
If yo still will have a problem, please share:
docker logs openvpn-ui and timestamp of cert generation attempt.
This will help to debug the issue more precisely.

@d3vilh sure,
I ran the entire playbook from scratch:
ansible-playbook main.yml

and a value of not.defined appeared in the Static IP column on the frontend UI:

In the Configuration -> Settings section, I had to change the Server Connection Port (external) to 1194 because an error appeared:
TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
TLS Error: TLS handshake failed

after this change everything works and I get an IP in the range <IP_ADDRESS>/24 but the problem is that now I can't access the "Internet" (after establishing an OpenVPN connection)
What should be the IP range selected so that for the certificates issued there is internet access?

and a value of not.defined appeared in the Static IP column on the frontend UI:

It is OK, not.defined means you did not set static IP for this client and in case of new connection OpenVPN server can give this client new IP address. To make it permanent just set the IP from the same subnet.

after this change everything works and I get an IP in the range <IP_ADDRESS>/24 but the problem is that now I can't access the "Internet" (after establishing an OpenVPN connection)

<IP_ADDRESS>/24 is Trusted subnet, here is my attempt  to explain how it works

What should be the IP range selected so that for the certificates issued there is internet access?

<IP_ADDRESS>/24 should have internet access, you may have issues with routing. try to add push "redirect-gateway def1 bypass-dhcp" to the server config this will force all the traffic to go via your OpenVPN server. Here isa little more docs.
Note, that you need to restart OpenVPN server every time you do change in configuration file.
If it still will not work, the you can increase logs verbose level on server and client side, try to connect and then share the logs here (for the security reasons it is better to change or blur your real Internet IP).
Verbose level is this option in server and clients config - verb 4 .

@d3vilh
I checked and with the default settings, however, it does not work - both under the Windows client and Linux - no Internet access, but the devices see each other in OpenVPN LAN

I think something in the <IP_ADDRESS>/24 range should work, but I'm not sure - or at least that's what the route looks like initially on the client side
Client logs:
NOTE: --user option is not implemented on Windows
NOTE: --group option is not implemented on Windows
 us=656000 DEPRECATED OPTION: --cipher set to 'AES-256-CBC' but missing in --data-ciphers (AES-256-GCM:AES-128-GCM). Future OpenVPN version will ignore --cipher for cipher negotiations. Add 'AES-256-CBC' to --data-ciphers or change --cipher 'AES-256-CBC' to --data-ciphers-fallback 'AES-256-CBC' to silence this warning.
 Current Parameter Settings:
   config = 'TEST_05.ovpn'
   mode = 0
   show_ciphers = DISABLED
   show_digests = DISABLED
   show_engines = DISABLED
   genkey = DISABLED
   genkey_filename = '[UNDEF]'
   key_pass_file = '[UNDEF]'
   show_tls_ciphers = DISABLED
   connect_retry_max = 0
 Connection profiles [0]:
   proto = udp
   local = '[UNDEF]'
   local_port = '1194'
   remote = '<VPS_PUBLIC_IP>'
   remote_port = '1194'
   remote_float = DISABLED
   bind_defined = DISABLED
   bind_local = ENABLED
   bind_ipv6_only = DISABLED
   connect_retry_seconds = 5
   connect_timeout = 120
   socks_proxy_server = '[UNDEF]'
   socks_proxy_port = '[UNDEF]'
   tun_mtu = 1500
   tun_mtu_defined = ENABLED
   link_mtu = 1500
   link_mtu_defined = DISABLED
   tun_mtu_extra = 0
   tun_mtu_extra_defined = DISABLED
   mtu_discover_type = -1
   fragment = 0
   mssfix = 1450
   explicit_exit_notification = 0
   tls_auth_file = '[UNDEF]'
   key_direction = not set
   tls_crypt_file = '[UNDEF]'
   tls_crypt_v2_file = '[UNDEF]'
 Connection profiles END
   remote_random = DISABLED
   ipchange = '[UNDEF]'
   dev = 'tun'
   dev_type = '[UNDEF]'
   dev_node = '[UNDEF]'
   lladdr = '[UNDEF]'
   topology = 1
   ifconfig_local = '[UNDEF]'
   ifconfig_remote_netmask = '[UNDEF]'
   ifconfig_noexec = DISABLED
   ifconfig_nowarn = DISABLED
   ifconfig_ipv6_local = '[UNDEF]'
   ifconfig_ipv6_netbits = 0
   ifconfig_ipv6_remote = '[UNDEF]'
   shaper = 0
   mtu_test = 0
   mlock = DISABLED
   keepalive_ping = 0
   keepalive_timeout = 0
   inactivity_timeout = 0
   ping_send_timeout = 0
   ping_rec_timeout = 0
   ping_rec_timeout_action = 0
   ping_timer_remote = DISABLED
   remap_sigusr1 = 0
   persist_tun = ENABLED
   persist_local_ip = DISABLED
   persist_remote_ip = DISABLED
   persist_key = ENABLED
   passtos = DISABLED
   resolve_retry_seconds =<PHONE_NUMBER>
   resolve_in_advance = DISABLED
   username = '[UNDEF]'
   groupname = '[UNDEF]'
   chroot_dir = '[UNDEF]'
   cd_dir = '[UNDEF]'
   writepid = '[UNDEF]'
   up_script = '[UNDEF]'
   down_script = '[UNDEF]'
   down_pre = DISABLED
   up_restart = DISABLED
   up_delay = DISABLED
   daemon = DISABLED
   inetd = 0
   log = ENABLED
   suppress_timestamps = DISABLED
   machine_readable_output = DISABLED
   nice = 0
   verbosity = 4
   mute = 0
   status_file = '[UNDEF]'
   status_file_version = 1
   status_file_update_freq = 60
   occ = ENABLED
   rcvbuf = 0
   sndbuf = 0
   sockflags = 0
   fast_io = DISABLED
   comp.alg = 0
   comp.flags = 0
   route_script = '[UNDEF]'
   route_default_gateway = '[UNDEF]'
   route_default_metric = 0
   route_noexec = DISABLED
   route_delay = 5
   route_delay_window = 30
   route_delay_defined = ENABLED
   route_nopull = DISABLED
   route_gateway_via_dhcp = DISABLED
   allow_pull_fqdn = DISABLED
   Pull filters:
     ignore "route-method"
   [redirect_default_gateway local=0]
   management_addr = '<IP_ADDRESS>'
   management_port = '25349'
   management_user_pass = 'stdin'
   management_log_history_cache = 250
   management_echo_buffer_size = 100
   management_write_peer_info_file = '[UNDEF]'
   management_client_user = '[UNDEF]'
   management_client_group = '[UNDEF]'
   management_flags = 6
   shared_secret_file = '[UNDEF]'
   key_direction = not set
   ciphername = 'AES-256-CBC'
   ncp_enabled = ENABLED
   ncp_ciphers = 'AES-256-GCM:AES-128-GCM:AES-256-CBC'
   authname = 'SHA512'
   prng_hash = 'SHA1'
   prng_nonce_secret_len = 16
   keysize = 0
   engine = DISABLED
   replay = ENABLED
   mute_replay_warnings = DISABLED
   replay_window = 64
   replay_time = 15
   packet_id_file = '[UNDEF]'
   test_crypto = DISABLED
   tls_server = DISABLED
   tls_client = ENABLED
   ca_file = '[INLINE]'
   ca_path = '[UNDEF]'
   dh_file = '[UNDEF]'
   cert_file = '[INLINE]'
   extra_certs_file = '[UNDEF]'
   priv_key_file = '[INLINE]'
   pkcs12_file = '[UNDEF]'
   cryptoapi_cert = '[UNDEF]'
   cipher_list = '[UNDEF]'
   cipher_list_tls13 = '[UNDEF]'
   tls_cert_profile = '[UNDEF]'
   tls_verify = '[UNDEF]'
   tls_export_cert = '[UNDEF]'
   verify_x509_type = 0
   verify_x509_name = '[UNDEF]'
   crl_file = '[UNDEF]'
   ns_cert_type = 0
   remote_cert_ku[i] = 65535
   remote_cert_ku[i] = 0
   remote_cert_ku[i] = 0
   remote_cert_ku[i] = 0
   remote_cert_ku[i] = 0
   remote_cert_ku[i] = 0
   remote_cert_ku[i] = 0
   remote_cert_ku[i] = 0
   remote_cert_ku[i] = 0
   remote_cert_ku[i] = 0
   remote_cert_ku[i] = 0
   remote_cert_ku[i] = 0
   remote_cert_ku[i] = 0
   remote_cert_ku[i] = 0
   remote_cert_ku[i] = 0
   remote_cert_ku[i] = 0
   remote_cert_eku = 'TLS Web Server Authentication'
   ssl_flags = 0
   tls_timeout = 2
   renegotiate_bytes = -1
   renegotiate_packets = 0
   renegotiate_seconds = 3600
   handshake_window = 60
   transition_window = 3600
   single_session = DISABLED
   push_peer_info = DISABLED
   tls_exit = DISABLED
   tls_crypt_v2_metadata = '[UNDEF]'
   pkcs11_protected_authentication = DISABLED
   pkcs11_protected_authentication = DISABLED
   pkcs11_protected_authentication = DISABLED
   pkcs11_protected_authentication = DISABLED
   pkcs11_protected_authentication = DISABLED
   pkcs11_protected_authentication = DISABLED
   pkcs11_protected_authentication = DISABLED
   pkcs11_protected_authentication = DISABLED
   pkcs11_protected_authentication = DISABLED
   pkcs11_protected_authentication = DISABLED
   pkcs11_protected_authentication = DISABLED
   pkcs11_protected_authentication = DISABLED
   pkcs11_protected_authentication = DISABLED
   pkcs11_protected_authentication = DISABLED
   pkcs11_protected_authentication = DISABLED
   pkcs11_protected_authentication = DISABLED
   pkcs11_private_mode = 00000000
   pkcs11_private_mode = 00000000
   pkcs11_private_mode = 00000000
   pkcs11_private_mode = 00000000
   pkcs11_private_mode = 00000000
   pkcs11_private_mode = 00000000
   pkcs11_private_mode = 00000000
   pkcs11_private_mode = 00000000
   pkcs11_private_mode = 00000000
   pkcs11_private_mode = 00000000
   pkcs11_private_mode = 00000000
   pkcs11_private_mode = 00000000
   pkcs11_private_mode = 00000000
   pkcs11_private_mode = 00000000
   pkcs11_private_mode = 00000000
   pkcs11_private_mode = 00000000
   pkcs11_cert_private = DISABLED
   pkcs11_cert_private = DISABLED
   pkcs11_cert_private = DISABLED
   pkcs11_cert_private = DISABLED
   pkcs11_cert_private = DISABLED
   pkcs11_cert_private = DISABLED
   pkcs11_cert_private = DISABLED
   pkcs11_cert_private = DISABLED
   pkcs11_cert_private = DISABLED
   pkcs11_cert_private = DISABLED
   pkcs11_cert_private = DISABLED
   pkcs11_cert_private = DISABLED
   pkcs11_cert_private = DISABLED
   pkcs11_cert_private = DISABLED
   pkcs11_cert_private = DISABLED
   pkcs11_cert_private = DISABLED
   pkcs11_pin_cache_period = -1
   pkcs11_id = '[UNDEF]'
   pkcs11_id_management = DISABLED
   server_network = <IP_ADDRESS>
   server_netmask = <IP_ADDRESS>
   server_network_ipv6 = ::
   server_netbits_ipv6 = 0
   server_bridge_ip = <IP_ADDRESS>
   server_bridge_netmask = <IP_ADDRESS>
   server_bridge_pool_start = <IP_ADDRESS>
   server_bridge_pool_end = <IP_ADDRESS>
   ifconfig_pool_defined = DISABLED
   ifconfig_pool_start = <IP_ADDRESS>
   ifconfig_pool_end = <IP_ADDRESS>
   ifconfig_pool_netmask = <IP_ADDRESS>
   ifconfig_pool_persist_filename = '[UNDEF]'
   ifconfig_pool_persist_refresh_freq = 600
   ifconfig_ipv6_pool_defined = DISABLED
   ifconfig_ipv6_pool_base = ::
   ifconfig_ipv6_pool_netbits = 0
   n_bcast_buf = 256
   tcp_queue_limit = 64
   real_hash_size = 256
   virtual_hash_size = 256
   client_connect_script = '[UNDEF]'
   learn_address_script = '[UNDEF]'
   client_disconnect_script = '[UNDEF]'
   client_config_dir = '[UNDEF]'
   ccd_exclusive = DISABLED
   tmp_dir = '<LOCAL_PC_DIR_PATH>'
   push_ifconfig_defined = DISABLED
   push_ifconfig_local = <IP_ADDRESS>
   push_ifconfig_remote_netmask = <IP_ADDRESS>
   push_ifconfig_ipv6_defined = DISABLED
   push_ifconfig_ipv6_local = ::/0
   push_ifconfig_ipv6_remote = ::
   enable_c2c = DISABLED
   duplicate_cn = DISABLED
   cf_max = 0
   cf_per = 0
   max_clients = 1024
   max_routes_per_client = 256
   auth_user_pass_verify_script = '[UNDEF]'
   auth_user_pass_verify_script_via_file = DISABLED
   auth_token_generate = DISABLED
   auth_token_lifetime = 0
   auth_token_secret_file = '[UNDEF]'
   vlan_tagging = DISABLED
   vlan_accept = all
   vlan_pvid = 1
   client = ENABLED
   pull = ENABLED
   auth_user_pass_file = '[UNDEF]'
   show_net_up = DISABLED
   route_method = 3
   block_outside_dns = DISABLED
   ip_win32_defined = DISABLED
   ip_win32_type = 3
   dhcp_masq_offset = 0
   dhcp_lease_time = 31536000
   tap_sleep = 0
   dhcp_options = DISABLED
   dhcp_renew = DISABLED
   dhcp_pre_release = DISABLED
   domain = '[UNDEF]'
   netbios_scope = '[UNDEF]'
   netbios_node_type = 0
   disable_nbt = DISABLED
 OpenVPN 2.5.5 Windows-MSVC [SSL (OpenSSL)] [LZO] [LZ4] [PKCS11] [AEAD] built on Dec 15 2021
 library versions: OpenSSL 1.1.1l  24 Aug 2021, LZO 2.10
 MANAGEMENT: TCP Socket listening on [AF_INET]<IP_ADDRESS>:25349
 Need hold release from management interface, waiting...
 MANAGEMENT: Client connected from [AF_INET]<IP_ADDRESS>:25349
 MANAGEMENT: CMD 'state on'
 MANAGEMENT: CMD 'log all on'
 MANAGEMENT: CMD 'echo all on'
 MANAGEMENT: CMD 'bytecount 5'
 MANAGEMENT: CMD 'hold off'
 MANAGEMENT: CMD 'hold release'
 Control Channel MTU parms [ L:1621 D:1212 EF:38 EB:0 ET:0 EL:3 ]
 Data Channel MTU parms [ L:1621 D:1450 EF:121 EB:406 ET:0 EL:3 ]
 Local Options String (VER=V4): 'V4,dev-type tun,link-mtu 1601,tun-mtu 1500,proto UDPv4,cipher AES-256-CBC,auth SHA512,keysize 256,key-method 2,tls-client'
 Expected Remote Options String (VER=V4): 'V4,dev-type tun,link-mtu 1601,tun-mtu 1500,proto UDPv4,cipher AES-256-CBC,auth SHA512,keysize 256,key-method 2,tls-server'
 TCP/UDP: Preserving recently used remote address: [AF_INET]<VPS_PUBLIC_IP>:1194
 Socket Buffers: R=[65536->65536] S=[65536->65536]
 UDP link local (bound): [AF_INET][undef]:1194
 UDP link remote: [AF_INET]<VPS_PUBLIC_IP>:1194
 MANAGEMENT: >STATE:1691613349,WAIT,,,,,,
 MANAGEMENT: >STATE:1691613349,AUTH,,,,,,
 TLS: Initial packet from [AF_INET]<VPS_PUBLIC_IP>:1194, sid=ad4d21e3 c2cff979
 VERIFY OK: depth=1, C=UA, ST=KY, L=Kyiv, O=Sweet Home, OU=My Organizational Unit, CN=Easy-RSA CA<EMAIL_ADDRESS> VERIFY KU OK
 Validating certificate extended key usage
 ++ Certificate has EKU (str) TLS Web Server Authentication, expects TLS Web Server Authentication
 VERIFY EKU OK
 VERIFY OK: depth=0, C=UA, ST=KY, L=Kyiv, O=Sweet Home, OU=My Organizational Unit, CN=server<EMAIL_ADDRESS> Control Channel: TLSv1.3, cipher TLSv1.3 TLS_AES_256_GCM_SHA384, peer certificate: 2048 bit RSA, signature: RSA-SHA256
 [server] Peer Connection Initiated with [AF_INET]<VPS_PUBLIC_IP>:1194
 MANAGEMENT: >STATE:1691613350,GET_CONFIG,,,,,,
 SENT CONTROL [server]: 'PUSH_REQUEST' (status=1)
 PUSH: Received control message: 'PUSH_REPLY,route <IP_ADDRESS> <IP_ADDRESS>,dhcp-option DNS <IP_ADDRESS>,dhcp-option DNS <IP_ADDRESS>,redirect-gateway def1,dhcp-option DNS <IP_ADDRESS>,topology subnet,route-gateway <IP_ADDRESS>,topology subnet,ping 10,ping-restart 120,ifconfig <IP_ADDRESS> <IP_ADDRESS>,peer-id 0,cipher AES-256-GCM'
 WARNING: You have specified redirect-gateway and redirect-private at the same time (or the same option multiple times). This is not well supported and may lead to unexpected results
 OPTIONS IMPORT: timers and/or timeouts modified
 OPTIONS IMPORT: --ifconfig/up options modified
 OPTIONS IMPORT: route options modified
 OPTIONS IMPORT: route-related options modified
 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
 OPTIONS IMPORT: peer-id set
 OPTIONS IMPORT: adjusting link_mtu to 1624
 OPTIONS IMPORT: data channel crypto options modified
 Data Channel: using negotiated cipher 'AES-256-GCM'
 Data Channel MTU parms [ L:1552 D:1450 EF:52 EB:406 ET:0 EL:3 ]
 Outgoing Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key
 Incoming Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key
 interactive service msg_channel=888
 open_tun
 tap-windows6 device  opened
 TAP-Windows Driver Version 9.24
 TAP-Windows MTU=1500
 Set TAP-Windows TUN subnet mode network/local/netmask = <IP_ADDRESS>/<IP_ADDRESS>/<IP_ADDRESS> [SUCCEEDED]
 Notified TAP-Windows driver to set a DHCP IP/netmask of <IP_ADDRESS>/<IP_ADDRESS> on interface [DHCP-serv: <IP_ADDRESS>, lease-time: 31536000]
 DHCP option string: 060c0808 08080100 0001c0a8 0201
 Successful ARP Flush on interface [20]
 do_ifconfig, ipv4=1, ipv6=0
 MANAGEMENT: >STATE:1691613350,ASSIGN_IP,,<IP_ADDRESS>,,,,
 IPv4 MTU set to 1500 on interface 20 using service
ES: 2/2 succeeded len=1 ret=1 a=0 u/d=up
S\system32\route.exe ADD <VPS_PUBLIC_IP> MASK <IP_ADDRESS> <IP_ADDRESS>
ition via service succeeded
S\system32\route.exe ADD <IP_ADDRESS> MASK <IP_ADDRESS> <IP_ADDRESS>
ition via service succeeded
S\system32\route.exe ADD <IP_ADDRESS> MASK <IP_ADDRESS> <IP_ADDRESS>
ition via service succeeded
T: >STATE:1691613355,ADD_ROUTES,,,,,,
S\system32\route.exe ADD <IP_ADDRESS> MASK <IP_ADDRESS> <IP_ADDRESS>
ition via service succeeded
ation Sequence Completed
T: >STATE:1691613355,CONNECTED,SUCCESS,<IP_ADDRESS>,<VPS_PUBLIC_IP>,1194,,

OpenVPN log:
TEST_05/<CLIENT_PUBLIC_IP>:5066 PID_ERR replay-window backtrack occurred [1] [SSL-0] 0:96 0:95 t=1691613363[0] r=[-3,64,15,1,1] sl=[32,64,64,528]
TEST_05/<CLIENT_PUBLIC_IP>:5066 MULTI: bad source address from client [::], packet dropped
TEST_05/<CLIENT_PUBLIC_IP>:5066 SENT CONTROL [TEST_05]: 'PUSH_REPLY,route <IP_ADDRESS> <IP_ADDRESS>,dhcp-option DNS <IP_ADDRESS>,dhcp-option DNS <IP_ADDRESS>,redirect-gateway def1,dhcp-option DNS <IP_ADDRESS>,topology subnet,route-gateway <IP_ADDRESS>,topology subnet,ping 10,ping-restart 120,ifconfig <IP_ADDRESS> <IP_ADDRESS>,peer-id 0,cipher AES-256-GCM' (status=1)
TEST_05/<CLIENT_PUBLIC_IP>:5066 PUSH: Received control message: 'PUSH_REQUEST'
TEST_05/<CLIENT_PUBLIC_IP>:5066 Incoming Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key
TEST_05/<CLIENT_PUBLIC_IP>:5066 Outgoing Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key
TEST_05/<CLIENT_PUBLIC_IP>:5066 Protocol options: explicit-exit-notify 1
TEST_05/<CLIENT_PUBLIC_IP>:5066 Timers: ping 10, ping-restart 240
TEST_05/<CLIENT_PUBLIC_IP>:5066 Data Channel: cipher 'AES-256-GCM', peer-id: 0
TEST_05/<CLIENT_PUBLIC_IP>:5066 Control Channel: TLSv1.3, cipher TLSv1.3 TLS_AES_256_GCM_SHA384, peer certificate: 2048 bit RSA, signature: RSA-SHA256
TEST_05/<CLIENT_PUBLIC_IP>:5066 TLS: tls_multi_process: initial untrusted session promoted to trusted
TEST_05/<CLIENT_PUBLIC_IP>:5066 TLS: move_session: dest=TM_ACTIVE src=TM_INITIAL reinit_src=1
TEST_05/<CLIENT_PUBLIC_IP>:5066 peer info: IV_SSO=openurl,crtext
TEST_05/<CLIENT_PUBLIC_IP>:5066 peer info: IV_GUI_VER=OpenVPN_GUI_11
TEST_05/<CLIENT_PUBLIC_IP>:5066 peer info: IV_TCPNL=1
TEST_05/<CLIENT_PUBLIC_IP>:5066 peer info: IV_COMP_STUBv2=1
TEST_05/<CLIENT_PUBLIC_IP>:5066 peer info: IV_COMP_STUB=1
TEST_05/<CLIENT_PUBLIC_IP>:5066 peer info: IV_LZO=1
TEST_05/<CLIENT_PUBLIC_IP>:5066 peer info: IV_LZ4v2=1
TEST_05/<CLIENT_PUBLIC_IP>:5066 peer info: IV_LZ4=1
TEST_05/<CLIENT_PUBLIC_IP>:5066 peer info: IV_CIPHERS=AES-256-GCM:AES-128-GCM:AES-256-CBC
TEST_05/<CLIENT_PUBLIC_IP>:5066 peer info: IV_NCP=2
TEST_05/<CLIENT_PUBLIC_IP>:5066 peer info: IV_PROTO=6
TEST_05/<CLIENT_PUBLIC_IP>:5066 peer info: IV_PLAT=win
TEST_05/<CLIENT_PUBLIC_IP>:5066 peer info: IV_VER=2.5.5
TEST_05/<CLIENT_PUBLIC_IP>:5066 VERIFY OK: depth=0, CN=TEST_05
TEST_05/<CLIENT_PUBLIC_IP>:5066 VERIFY OK: depth=1, C=UA, ST=KY, L=Kyiv, O=Sweet Home, OU=My Organizational Unit, CN=Easy-RSA CA<EMAIL_ADDRESS>TEST_05/<CLIENT_PUBLIC_IP>:5066 TLS: Initial packet from [AF_INET]<CLIENT_PUBLIC_IP>:5066, sid=d7af9114 db32861e
TEST_05/<CLIENT_PUBLIC_IP>:5066 PID_ERR replay-window backtrack occurred [1] [SSL-0 0:29 0:28 t=1691613185[0] r=[-1,64,15,1,1] sl=[35,29,64,528]
TEST_05/<CLIENT_PUBLIC_IP>:5066 Protocol options: explicit-exit-notify 1
TEST_05/<CLIENT_PUBLIC_IP>:5066 Timers: ping 10, ping-restart 240
TEST_05/<CLIENT_PUBLIC_IP>:5066 Data Channel: cipher 'AES-256-GCM', peer-id: 0
TEST_05/<CLIENT_PUBLIC_IP>:5066 MULTI: bad source address from client [::], packet dropped
TEST_05/<CLIENT_PUBLIC_IP>:5066 SENT CONTROL [TEST_05]: 'PUSH_REPLY,route <IP_ADDRESS> <IP_ADDRESS>,dhcp-option DNS <IP_ADDRESS>,dhcp-option DNS <IP_ADDRESS>,redirect-gateway def1,dhcp-option DNS <IP_ADDRESS>,topology subnet,route-gateway <IP_ADDRESS>,topology subnet,ping 10,ping-restart 120,ifconfig <IP_ADDRESS> <IP_ADDRESS>,peer-id 0,cipher AES-256-GCM' (status=1)
TEST_05/<CLIENT_PUBLIC_IP>:5066 Incoming Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key
TEST_05/<CLIENT_PUBLIC_IP>:5066 Outgoing Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key
TEST_05/<CLIENT_PUBLIC_IP>:5066 Data Channel MTU parms [ mss_fix:1400 max_frag:0 tun_mtu:1500 tun_max_mtu:1600 headroom:136 payload:1768 tailroom:562 ET:0 ]
TEST_05/<CLIENT_PUBLIC_IP>:5066 MULTI: primary virtual IP for TEST_05/<CLIENT_PUBLIC_IP>:5066: <IP_ADDRESS>
TEST_05/<CLIENT_PUBLIC_IP>:5066 MULTI: Learn: <IP_ADDRESS> -> TEST_05/<CLIENT_PUBLIC_IP>:5066
TEST_05/<CLIENT_PUBLIC_IP>:5066 OPTIONS IMPORT: reading client specific options from: /etc/openvpn/staticclients/TEST_05
TEST_05/<CLIENT_PUBLIC_IP>:5066 MULTI_sva: pool returned IPv4=<IP_ADDRESS>, IPv6=(Not enabled)
<CLIENT_PUBLIC_IP>:5066 [TEST_05] Peer Connection Initiated with [AF_INET]<CLIENT_PUBLIC_IP>:5066
<CLIENT_PUBLIC_IP>:5066 Control Channel: TLSv1.3, cipher TLSv1.3 TLS_AES_256_GCM_SHA384, peer certificate: 2048 bit RSA, signature: RSA-SHA256
<CLIENT_PUBLIC_IP>:5066 TLS: tls_multi_process: initial untrusted session promoted to trusted
<CLIENT_PUBLIC_IP>:5066 TLS: move_session: dest=TM_ACTIVE src=TM_INITIAL reinit_src=1
<CLIENT_PUBLIC_IP>:5066 peer info: IV_SSO=openurl,crtext
<CLIENT_PUBLIC_IP>:5066 peer info: IV_GUI_VER=OpenVPN_GUI_11
<CLIENT_PUBLIC_IP>:5066 peer info: IV_TCPNL=1
<CLIENT_PUBLIC_IP>:5066 peer info: IV_COMP_STUBv2=1
<CLIENT_PUBLIC_IP>:5066 peer info: IV_COMP_STUB=1
<CLIENT_PUBLIC_IP>:5066 peer info: IV_LZO=1
<CLIENT_PUBLIC_IP>:5066 peer info: IV_LZ4v2=1
<CLIENT_PUBLIC_IP>:5066 peer info: IV_LZ4=1
<CLIENT_PUBLIC_IP>:5066 peer info: IV_CIPHERS=AES-256-GCM:AES-128-GCM:AES-256-CBC
<CLIENT_PUBLIC_IP>:5066 peer info: IV_NCP=2
<CLIENT_PUBLIC_IP>:5066 peer info: IV_PROTO=6
<CLIENT_PUBLIC_IP>:5066 peer info: IV_PLAT=win
<CLIENT_PUBLIC_IP>:5066 peer info: IV_VER=2.5.5
<CLIENT_PUBLIC_IP>:5066 VERIFY OK: depth=0, CN=TEST_05
<CLIENT_PUBLIC_IP>:5066 VERIFY OK: depth=1, C=UA, ST=KY, L=Kyiv, O=Sweet Home, OU=My Organizational Unit, CN=Easy-RSA CA<EMAIL_ADDRESS><CLIENT_PUBLIC_IP>:5066 Data Channel MTU parms [ mss_fix:0 max_frag:0 tun_mtu:1500 tun_max_mtu:1600 headroom:136 payload:1768 tailroom:562 ET:0 ]
<CLIENT_PUBLIC_IP>:5066 Control Channel MTU parms [ mss_fix:0 max_frag:0 tun_mtu:1250 tun_max_mtu:0 headroom:126 payload:1600 tailroom:126 ET:0 ]
<CLIENT_PUBLIC_IP>:5066 CRL: loaded 1 CRLs from file pki/crl.pem
<CLIENT_PUBLIC_IP>:5066 Re-using SSL/TLS context
Connection Attempt MULTI: multi_create_instance called
Initialization Sequence Completed
IFCONFIG POOL LIST
IFCONFIG POOL IPv4: base=<IP_ADDRESS> size=253
MULTI: multi_init called, r=256 v=256
UID set to nobody
GID set to nogroup
UDPv4 link remote: [AF_UNSPEC]
UDPv4 link local (bound): [AF_INET][undef]:1194
Socket Buffers: R=[212992->212992] S=[212992->212992]
Could not determine IPv4/IPv6 protocol. Using AF_INET
Data Channel MTU parms [ mss_fix:0 max_frag:0 tun_mtu:1500 tun_max_mtu:1600 headroom:136 payload:1768 tailroom:562 ET:0 ]
/sbin/ip route add <IP_ADDRESS>/24 via <IP_ADDRESS>
/sbin/ip addr add dev tun0 <IP_ADDRESS>/24
/sbin/ip link set dev tun0 up
/sbin/ip link set dev tun0 up mtu 1500
do_ifconfig, ipv4=1, ipv6=0
TUN/TAP device tun0 opened
ROUTE_GATEWAY <IP_ADDRESS>/<IP_ADDRESS> IFACE=eth0 HWADDR=02:42:ac:17:00:03
TLS-Auth MTU parms [ mss_fix:0 max_frag:0 tun_mtu:1250 tun_max_mtu:0 headroom:126 payload:1600 tailroom:126 ET:0 ]
CRL: loaded 1 CRLs from file pki/crl.pem
Diffie-Hellman initialized with 2048 bit key
library versions: OpenSSL 3.1.2 1 Aug 2023, LZO 2.10
OpenVPN 2.6.5 x86_64-alpine-linux-musl [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [MH/PKTINFO] [AEAD]
auth_user_pass_file = '[UNDEF]'
pull = DISABLED
client = DISABLED
vlan_pvid = 1
vlan_accept = all
vlan_tagging = DISABLED
port_share_port = '[UNDEF]'
port_share_host = '[UNDEF]'
auth_token_secret_file = '[UNDEF]'
auth_token_lifetime = 0
auth_token_generate = DISABLED
auth_user_pass_verify_script_via_file = DISABLED
auth_user_pass_verify_script = '[UNDEF]'
max_routes_per_client = 256
max_clients = 100
cf_initial_per = 10
cf_initial_max = 100
cf_per = 0
cf_max = 0
duplicate_cn = DISABLED
enable_c2c = DISABLED

I think, I have clue :)
Could you show the networking rules apply logs form your OpenVPN server (docker logs openvpn)?
Here is how it looks like on my devBoard:
...
Configuring networking rules...
net.ipv4.ip_forward = 1
Configuring iptables...
NAT for OpenVPN clients
Blocking ICMP for external clients
Blocking internal home subnet to access from external openvpn clients (Internet still available)
IPT MASQ Chains:
MASQUERADE  all  --  <IP_ADDRESS>/24         anywhere
MASQUERADE  all  --  <IP_ADDRESS>/24         anywhere
IPT FWD Chains:
       0        0 DROP       1    --  *      *       <IP_ADDRESS>/24         <IP_ADDRESS>/0            icmptype 8
       0        0 DROP       1    --  *      *       <IP_ADDRESS>/24         <IP_ADDRESS>/0            icmptype 0
       0        0 DROP       0    --  *      *       <IP_ADDRESS>/24         <IP_ADDRESS>/24
Start openvpn process...
philipp@d3vBoard:~/openvpn-se

We need to be sure the FW rules applied correctly.
There should be 3 subnets:

Trusted subnet <IP_ADDRESS>/24 from which OpenVPN server will assign IPs to trusted clients
Guest subnet <IP_ADDRESS>/24 the subnet for clients with internet access only
Home subnet <IP_ADDRESS>/24 in the example above. This must be your subnet where the VPN server is located, thru which you get internet access to the clients with MASQUERADE.

My docker logs openvpn output:
PKI already set up.
Configuring networking rules...
net.ipv4.ip_forward = 1
Configuring iptables...
NAT for OpenVPN clients
Blocking ICMP for external clients
Blocking internal home subnet to access from external openvpn clients (Internet still available)
IPT MASQ Chains:
MASQUERADE  all  --  <IP_ADDRESS>/24          anywhere
MASQUERADE  all  --  <IP_ADDRESS>/24          anywhere
IPT FWD Chains:
       0        0 DROP       1    --  *      *       <IP_ADDRESS>/24          <IP_ADDRESS>/0            icmptype 8
       0        0 DROP       1    --  *      *       <IP_ADDRESS>/24          <IP_ADDRESS>/0            icmptype 0
       0        0 DROP       0    --  *      *       <IP_ADDRESS>/24          <IP_ADDRESS>/24
Start openvpn process...

According to what you wrote, my configuration currently looks like this from UI:
Configuration -> OpenVPN config
Trusted VPN subnet -> <IP_ADDRESS> <IP_ADDRESS>
Guest VPN subnet -> <IP_ADDRESS> <IP_ADDRESS>
DNS withou changes
and my docker-compose.yml:
TRUST_SUB: <IP_ADDRESS>/24
GUEST_SUB: <IP_ADDRESS>/24
HOME_SUB: <IP_ADDRESS>/24

And it currently works exactly as shown in this diagram:

but my changes:
<IP_ADDRESS>/24 -> <IP_ADDRESS>/24
<IP_ADDRESS>/24 -> <IP_ADDRESS>/24
Thank you for your help :)

For subnet isolation the easiest trick would be to apply FW rules inside OpenVPN Server container.
Something like this:
iptables -A FORWARD -s <IP_ADDRESS> -d <IP_ADDRESS> -j DROP
iptables -A FORWARD -d <IP_ADDRESS> -s <IP_ADDRESS> -j DROP

here how you can drop it inside container:
sudo docker exec openvpn 'iptables -A FORWARD -s <IP_ADDRESS> -d <IP_ADDRESS> -j DROP; iptables -A FORWARD -d <IP_ADDRESS> -s <IP_ADDRESS> -j DROP'
I didn't test it though, it should work, but not as the permanent solution for sure (after each container restart you have to apply it again).
Test it, if it will work, then we can have some kind of WA with optional script execution on every IOVPN Server container restart.

@d3vilh
It looks good - a very good improvement which I think can still be useful to someone. I'll check it out and let you know.
I still have the question I asked about:
My docker logs openvpn output:
PKI already set up.
Configuring networking rules...
net.ipv4.ip_forward = 1
Configuring iptables...
NAT for OpenVPN clients
Blocking ICMP for external clients
Blocking internal home subnet to access from external openvpn clients (Internet still available)
IPT MASQ Chains:
MASQUERADE  all  --  <IP_ADDRESS>/24          anywhere
MASQUERADE  all  --  <IP_ADDRESS>/24          anywhere
IPT FWD Chains:
       0        0 DROP       1    --  *      *       <IP_ADDRESS>/24          <IP_ADDRESS>/0            icmptype 8
       0        0 DROP       1    --  *      *       <IP_ADDRESS>/24          <IP_ADDRESS>/0            icmptype 0
       0        0 DROP       0    --  *      *       <IP_ADDRESS>/24          <IP_ADDRESS>/24
Start openvpn process...

Would it be possible to convert/change this my MASQUERADE <IP_ADDRESS>/24 to some addresses in the range <IP_ADDRESS>/24 and <IP_ADDRESS>/24 to <IP_ADDRESS>/24 with still internet access available?
I'm asking because some devices I'm trying to connect to have some kind of problem with OpenVPN when they have addresses in the 10.0.x.x range and in the 192.168.x.x range it already works

IPT MASQ Chains:
MASQUERADE  all  --  <IP_ADDRESS>/24          anywhere
MASQUERADE  all  --  <IP_ADDRESS>/24          anywhere
IPT FWD Chains:
   0        0 DROP       1    --  *      *       <IP_ADDRESS>/24          <IP_ADDRESS>/0            icmptype 8

   0        0 DROP       1    --  *      *       <IP_ADDRESS>/24          <IP_ADDRESS>/0            icmptype 0

   0        0 DROP       0    --  *      *       <IP_ADDRESS>/24          <IP_ADDRESS>/24

Start openvpn process...
Would it be possible to convert/change this my MASQUERADE <IP_ADDRESS>/24 to some addresses in the range <IP_ADDRESS>/24 and <IP_ADDRESS>/24 to <IP_ADDRESS>/24 with still internet access available?

I'm asking because some devices I'm trying to connect to have some kind of problem with OpenVPN when they have addresses in the 10.0.x.x range and in the 192.168.x.x range it already works

Yes, you can pass these subnets as environment options to OpenVPN Server container directly via 'docker-compose.yml' or during the installation via 'config.xml' you can set there any subnets you would like to.
There also option to set the same via WEB-UI, but it will not affect Firewall configuration only certificate DB.

Yes, you can pass these subnets as environment options to OpenVPN Server container directly via 'docker-compose.yml' or during the installation via 'config.xml' you can set there any subnets you would like to.

Yes, I tried to do it, but something is wrong
openvpn logs still same:
MASQUERADE  all  --  <IP_ADDRESS>/24          anywhere
MASQUERADE  all  --  <IP_ADDRESS>/24          anywhere
IPT FWD Chains:
       0        0 DROP       1    --  *      *       <IP_ADDRESS>/24          <IP_ADDRESS>/0            icmptype 8
       0        0 DROP       1    --  *      *       <IP_ADDRESS>/24          <IP_ADDRESS>/0            icmptype 0
       0        0 DROP       0    --  *      *       <IP_ADDRESS>/24          <IP_ADDRESS>/24

changes I've made  in docker-compose.yml:
TRUST_SUB: <IP_ADDRESS>/24
GUEST_SUB: <IP_ADDRESS>/24
HOME_SUB: <IP_ADDRESS>/24

example from which I checked:

there is a connection to OpenVPN, I get the address <IP_ADDRESS> but I have no access to the Internet
I'm getting tired of this configuration because I don't know what I should set in order to have access from the Internet with this IP address <IP_ADDRESS>
Maybe I am missing some redirection, and this given HOME_SUB: <IP_ADDRESS>/24 should be different?

changes I've made in docker-compose.yml:

Did you stop container and then run docker-compose up -d?
This should recreate container with new parameters.

Yes.
I've checked this many times and I can only access the internet with this configuration:
TRUST_SUB: <IP_ADDRESS>/24
GUEST_SUB: <IP_ADDRESS>/24
HOME_SUB: <IP_ADDRESS>/24

and this is exactly what docker logs openvpn returns
MASQUERADE  all  --  <IP_ADDRESS>/24          anywhere  -> my TRUST_SUB
MASQUERADE  all  --  <IP_ADDRESS>/24          anywhere -> my GUEST_SUB:
IPT FWD Chains:
       0        0 DROP       1    --  *      *       <IP_ADDRESS>/24          <IP_ADDRESS>/0            icmptype 8
       0        0 DROP       1    --  *      *       <IP_ADDRESS>/24          <IP_ADDRESS>/0            icmptype 0
       0        0 DROP       0    --  *      *       <IP_ADDRESS>/24          <IP_ADDRESS>/24 -> my HOME_SUB:

I have no idea why this is so, but if I change anything here:
TRUST_SUB: <IP_ADDRESS>/24
GUEST_SUB: <IP_ADDRESS>/24
HOME_SUB: <IP_ADDRESS>/24

at e.g.
TRUST_SUB: <IP_ADDRESS>/24
GUEST_SUB: <IP_ADDRESS>/24
HOME_SUB: <IP_ADDRESS>/24

then I no longer have access to the internet

Interesting. Did you use static IP configuration for that clients?
Once Client certificate is generated and you set static IP for that client, it will still be kept in ~/openvpn-server/staticclients/<Client_name> and that IP will be assigned to your client. You can manually edit this staticconfig file and set IP from the new pool.

Interesting. Did you use static IP configuration for that clients? Once Client certificate is generated and you set static IP for that client, it will still be kept in ~/openvpn-server/staticclients/<Client_name> and that IP will be assigned to your client. You can manually edit this staticconfig file and set IP from the new pool.

for another openvpn configuration with kylemann/openvpn this works
I think it is related to this "issue"

It seems kylemann allows connections without TLS it is not secure and this is probably the reason why Advanced Image analysis kept disabled for kylemanna/openvpn repo, just not to bother image users with found vulnerabilities :)
In real, he probably did this to keep back compatibility, as lot of people uses his server image.
My position is - security first (this is the reason you are using VPN, right?), that is why I'm not allow connections without TLS.

My position is - security first (this is the reason you are using VPN, right?), that is why I'm not allow connections without TLS.

I completely agree with this.
I actually only use the VPN itself to connect to machines "remotely at a distance".
I need to replace the current OpenVPN configuration with a new one, hence I set up my own OpenVPN server and now I'm left with swapping out the configuration on the client side.
The problem is that I can't upgrade OpenVPN on the client side - it's just a simple machine with sensors that only transmits numbers and nothing has been updated on it for ~10+ years, also it looks like this.
So I am on these machines (client side) doomed to OpenVPN version 2.1.3 i486-pc-linux-gnu [SSL] [ILO2] [EPOLL] [PKCS11] [MH] [PF_INET6] [eurephia] built on Oct 21 2010
That's why I'm trying to somehow hook up this openvpn configuration which is from openvpn-ui however it comes out that it just won't work with OpenVPN version 2.1.3
I'll check it out some more, but it's already taken me quite a while to create the various configurations on the server/client side and it still hasn't done anything.
It only works with kylemann/openvpn but that's probably for the reason you described above.


HWKAPM-676 Make the header names used to carry state information betw…

…een communication services consistent across agent instrumented and opentracing provider approaches

@pavolloffay Could you review please?
Reviewer notes:

Make the header names used to exchange state information consistent between opentracing provider and agent based instrumentation approach
Move the standard header names into the Constrants class

Note: only merge after #614 and will require rebase/conflict resolution.

@pavolloffay Updates applied - hopefully they will be clearer now.

@pavolloffay Thanks!


Build with -fno-strict-aliasing by default

To avoid bugs similar to #18225, OpenSSL should build with -fno-strict-aliasing by default.

Do you have some performance measurement to see what's lost?

IMO this is bad idea. Instead the code should be reviewed for strict aliasing violations and fixed.

IMO this is bad idea. Instead the code should be reviewed for strict aliasing violations and fixed.

It should indeed be, but given that such bugs are very difficult to diagnose and impact security-critical code, it is better to use -fno-strict-aliasing by default for safety in release builds.

Marking as inactive, to be closed when 3.4 dev cycle ends, barring further input

My position per https://github.com/openssl/openssl/issues/18663#issuecomment-1842789985 remains the same.

If no one has worked on it for over two  years, then its somewhat evident that no one has the time to invest in it, and its only purpose here is to clutter the backlog of issues, making work that we do want to concentrate on harder to find.
The path forward here then is to mark this as a community issue, and look for an community developer to fix it.  If one of you is volunteering to do so, I am happy to mark it as such.

@nhorman where would one add -fno-strict-aliasing to OpenSSL’s build system?

well, it can be done already as part as part of the configuration step:
./Configure  -fno-strict-aliasing
that will build with the option you want.
if you want to incorporate it into existing targets automatically, then you need to go poking about in the Configurations directory, there you will find all of our targets listed, with the directives to include various compiler flags for certain targets.  The goal would be to identify the highest leaf in the tree of the apropriate file where the command could be inserted, and not break other platform (which might necessitate some fan out and repitition to specific targets).  Start by looking at 10-main.conf
Can I assume from your question that you're interesting in taking this on as a community issue? :)  I'd be greatful.

Yes, we're happy to handle it as a community issue. I actually offered a while ago in https://github.com/openssl/openssl/issues/18663#issuecomment-1842789985 ;)

horray!  And thank you!
I'm marking this as a community effort and assigning @DemiMarie
Just for future reference (and I'm taking on an effort to try communicate this much more clearly), Anyone is perfectly welcome to take on any issue in our list and propose a  PR for it.  If you're looking for a more constrained set of issues, please filter on the help wanted label.  Those issues are/should be valid, but are identified as issues that the core development team doesn't have capacity to consider for a specific release, which is not to say they can't go in, just that we don't have time for them at the moment.  Please, PLEASE feel free to take any  of those issue, assign yourself and raise PRs for them, we are very grateful for the contribution!

@thesamesam would you be willing to take this?  I’m afraid I can’t test on anything but recent GCC and Clang, for which the trivial solution is “pass -fno-strict-aliasing unconditionally”.

Go on then. I'm quite busy at the moment but I will handle it.

done, and thank you!


Stable

Codecov Report

:exclamation: No coverage uploaded for pull request base (stable@c7cc00a). Click here to learn what that means.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             stable     #103   +/-   ##
=========================================
  Coverage          ?   71.07%
=========================================
  Files             ?       13
  Lines             ?      408
  Branches          ?        0
=========================================
  Hits              ?      290
  Misses            ?      118
  Partials          ?        0

Continue to review full report at Codecov.

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


preview window from screencast

The right hand preview window with the various breakpoints, what extension or app is that?
https://tailwindcss.com/course/the-utility-first-workflow/
thanks

That's Sizzy.

Thanks @hacknug looks pretty close to that :)


fix(provider/kubernetes): remove deployment edit from RBAC instructions

The GKE RBAC guide seems to have gotten a little mixed up here.
From reading through the guide I don't think that my-test-account is
intended to run Spinnaker itself. The user is required to already be
running a Spinnaker instance somewhere, per the prerequisites.
The intention is to help a user configure a new account, named
my-test-account, that has RBAC configured correctly so that Spinnaker
can deploy resources into it.
This has caused a bit of confusion, namely in this issue: https://github.com/spinnaker/spinnaker/issues/3384#issuecomment-428680937

Thanks!


coffeescript mapping invalid

Test repo:https://github.com/vulna-felickz/coffeescript-test
To transpile to js and generate map:
npm install -g coffeescript
coffee --compile --map *.coffee

Error
python3 remap_sarif.py javascript.sarif "." --output after-javascript.sarif

Outputs

When uploading to code scanning - cannot generate fingerprint as it maps to invalid line 0
    {
        "path": [
        "runs",
        0,
        "results",
        0,
        "locations",
        0,
        "physicalLocation",
        "region",
        "startLine"
        ],
        "property": "instance.runs[0].results[0].locations[0].physicalLocation.region.startLine",
        "message": "must be greater than or equal to 1",
        "schema": {
        "description": "The line number of the first character in the region.",
        "type": "integer",
        "minimum": 1
        },
        "instance": 0,
        "name": "minimum",
        "argument": 1,
        "stack": "instance.runs[0].results[0].locations[0].physicalLocation.region.startLine must be greater than or equal to 1"
    }

Though - the source-map-visualization tool appears to map it OK

see repro here

JS-Map.zip

I plugged in source-map from mozilla and it appears to properly map:


Mistake about the readme，the late 2015 browsers still have the 300ms problem

Note: As of late 2015 most mobile browsers - notably Chrome and Safari - no longer have a 300ms touch delay, so fastclick offers no benefit on newer browsers, and risks introducing bugs into your application. Consider carefully whether you really need to use it.

I test the below demo in the iPhone7s/iOS1.12.0/Safari， the one with <meta name="viewport" content="width=device-width">can avoid the 300ms delay, but the one without still have the 300ms delay.
Is the README above means that " As of late 2015 most mobile browsers no longer have a 300ms touch delay" only if the website is detected to be a Responsive Web " ?
Demo
<!DOCTYPE html>

    <title></title>

    <meta name="viewport" content="width=device-width">

点击：

Thats a good point. You still have to add the meta tag to remove the delay
<meta name="viewport" content="width=device-width">

https://developers.google.com/web/updates/2013/12/300ms-tap-delay-gone-away


[Feature] More Options to manipulate messages

Action to copy message
Action to delete one chat bubble

@kom-senapati Please assign this issue to me

Good features


Ctrl clicking items into my inventory hits the C key, even though I have set the config option about having it rebound.

Have the option on 'the c key is used for something other than your character screen', but my aura that is bound to c turns on or off as the subject says.
Not sure why it would be using the c key for ctrl clicking items into my inventory, but it seems to be.

You're using the loot-tracker feature within the mapping tracker, right?
The issue you're having is due to an in-game bug / weird behavior:

pressing CTRL-C on an item to copy its data into clipboard works as expected

pressing CTRL-C while there isn't any item underneath the cursor will trigger whatever is bound to the C-key (unless it's the default character-stats screen)

The option 'the c key is used for something other than your character screen' is only there to split the omni-key into two separate ones so that the above behavior doesn't happen every time the main omni-key is pressed.
So you'll either have to click slower when stashing items (or avoid clicking empty spots), disable loot-tracking, or bind the C-key to the character-stats screen again and use a different one for your aura.
If you're not using the loot-tracker, let me know (though I'd be at a loss as to what is causing this issue).

OK, I get that. I think Im going to move to exilence CE to track my loot instead. I never really check out what Ive gotten with Lai anyhow, so there isnt much reason to track it.
Thanks!


Give correct plural name for classes in apis_core models

Adding a "verbose_name_plural" attribute to the meta class like this should tell Django to not use the default plural form, for example -  "Propertys"
class Property(RootObject):
    class Meta:
        verbose_name_plural = "Properties"

I tried to fix this already in one or two places, but recently realised that we're missing an additional context attribute to differentiate between singular and plural names. The same attribute context["class_name"] is used e.g. for "Browse ENTITY" and "Create new ENTITY" in an entity's list view:

So my changes did not fully fix this, they just switched out the singular verbose name for the plural verbose name, see the bottom-most changes in this views.py file.
Semi-relatedly, in lots of other places, we default to using the lowercase (slug) class name, which then gets title()'d (!) instead of using a) the actual class name to reference model classes and b) verbose names to output human-readable names. Which in the case of my project has led to all sorts of problems already because I follow Python/Django convention and camel-case class names. I've fixed this particular problem in more places already, though I'm sure searching for .title() will come up with more instances of entity.title() and similar where the problem is not yet fixed. (I currently have an open issue for one of these in relation to entity_settings over on GitLab, and it looks to me like one of the culprits is in fact right there in the snippet of the views.py file I linked above!)
I believe I began reworking the context["class_name"] again, because I saw it's being used in template tags that relate to PR acdh-oeaw/apis-rdf-devops#5 (currently on hold), I'll see if there's any useful stuff I can put in a branch for you to potentially include.

Another problem we have, which a good bunch of my changes so far did not address or take into account (out of not knowing better), is that there's a lack of consistency or clarity in e.g. variable names for referring to classes or class attributes.
There are lots of entity (sometimes ent or ent_...) variables which are primarily used to store class names, though it's rarely made clear which name is being referred to – actual name vs. slug vs. verbose name. To me it seems that strings needed for e.g. creating various links were simply reused for all sorts of outputs to users on the frontend... hence all the title-casing on those variables.

Ohh, I may have (slightly) misunderstood what you were trying to say – I primarily wanted to resolve this for my project's entity classes. didn't really look at any of the classes they inherit from – but it's made me aware of a flaw in my fixes.

I pushed a branch with my attempt to fix this last week (just force pushed again after splitting one commit in two and adding another). It might actually make sense to turn it into a PR as-is.

Closing this (and moving to Done) because the PR which resolved this already got merged.
(Heads-up, @gythaogg: linking issues from the "Development" section of a PR (menu on right-hand side) and moving them to the Done column in Projects will auto-close them on merge!)


can't resolve airsdk as url based dependency.

I'm using Gradle 2.3, gradlefx 1.2.0.
So, if I do:
repositories {
    ivy {
        name 'Adobe Air SDK'
        artifactPattern 'http://download.macromedia.com/air/mac/download/[revision]/[module].tbz2'
    }

dependencies {
    airSDK  group: 'com.adobe', name: 'AdobeAIRSDK', version: '18.0'
}

it falls with error:
Could not resolve all dependencies for configuration ':airSDK'.
> Could not resolve com.adobe:AdobeAIRSDK:18.0.
Required by:
:gui-lib:1.0.0-SNAPSHOT
> Could not parse Ivy file http://resources.ranga-game-staging.com/develop/AIRSDK_Compiler.zip
> Content is not allowed in prolog.
Ok, than I've downloaded sdk, packeged it to zip, added as a file dependency:
dependencies {
    airSDK  files("/path-to-air-sdk/AIRSDK_Compiler.zip")
}

And you know what? It did work! So I thought the problem was in tbz2, so I've changed url dependency to:
repositories {
    ivy {
        name 'Adobe Air SDK'
        artifactPattern 'http://localhost/AIRSDK_Compiler.zip'
    }
}

But I've got the same error as when I was referencing adobe site.

When I use url based AIRSDK,grade log like this.

My Gradle version is 2.4

@vaukalak In your message I see two types of AIR SDKs being used, the AIRSDK_Compiler and AdobeAIRSDK. Can you clarify which one you were exactly trying?

Also, can you try the url below for the repository specification. Because maybe there's some kind of redirect going on with the macromedia url, which might confuse Gradle.
http://airdownload.adobe.com/air/mac/download/[revision]/[module].tbz2

@SlevinBE the first your is from gradlefx documentation, the second is manually downloaded airskd, referenced via file system. The url indicated by you also doesn't work. But the problem is not in downloading sdk, this error occurs, after sdk is downloaded.

you can take a look to the log here: http://pastebin.com/qTSifCnE

I don't know why, but file
~/.gradle/caches/modules-2/files-2.1/com.adobe/AdobeAIRSDK/18.0/e04a9ef57ed135e4b82e63fde91deee9e544836/ivy-18.0.xml
weights more than 200mb, and contains strange characters (i think it's a binary content)

I've tried to reproduce the issue, but can't make it fail on my end.
This looks more like a Gradle issue instead of a GradleFx one though. Gradle is the one downloading the file and providing it to GradleFx (which it's failing to do).
One other option to try might be to clean your gradle cache and try to download it again, maybe something got corrupted.
Otherwise try posting this on the Gradle forums, maybe they know what's going wrong.

well, looks like I finally was able to reproduce this one by accident while investigating https://github.com/GradleFx/GradleFx/issues/183
The reason this issue occurs is when you don't specify the '[ext]' parameter in your artifact url. So to fix this issue you should

first clean your gradle cache (or just the AdobeAIRSDK entry)

then add the [ext] parameter to your artifact pattern like this:
artifactPattern 'http://download.macromedia.com/air/mac/download/[revision]/[module].tbz2'

finally add the ext parameter to your dependency definition, like this:
airSDK  group: 'com.adobe', name: 'AdobeAIRSDK', version: '18.0', ext: 'tbz2'

Thanks @SlevinBE for the comment. I was following the auto install example and I faced the same issue with the AIR SDK on the adobe server. Updating the dependencies section with your points fixed the issue.


There is no option for set accuracy level high for user current location.

VERSIONS

Xamarin.Forms.GoogleMaps - 3.0.0-beta3
Xamarin.Forms - <IP_ADDRESS>0555

PLATFORMS

[ ] Android
[] iOS

ACTUAL BEHAVIOR

https://developer.xamarin.com/api/type/Android.Locations.Accuracy/
Is there any option which is use to set accuracy level high for users or accuracy should be with in meter ? See above link of xamarin website. I want to set that in my app using your lib.

Yes, Xamarin.Forms.GoogleMaps does not support Android.Locations.Accuracy.
Because this is wrapper of Google Maps SDK for Android.


Added sequences of Motion

This PR enables sequences of Motion and an onCompleted callback which fires after each one completes.
getStyle(){
    return [
      {x: spring(400), y: 0},
      {x: 400, y: spring(400)},
    ];
  },
  onCompleted(){
    console.log('completed!');
  },
  render() {
    return (
        <Motion
            defaultStyle={{x: 0, y: 0}}
            style={this.getStyle()}
            onCompleted={this.onCompleted} >
            {({x, y}) =>
               ...
            }
         </Motion>

Please see demos/demo9-sequence-of-animations for a full example.

The completion callback should be per style item, otherwise it's not clear what it means when we have {a: 10, b: 20} as defaultStyle and {a: 50, b: 50} as style.

I really hope this makes it into a release and look forward to hearing more :D

I look forward to this too!

@ccoffey @chenglou Now that onRest has been published, do you think it could help this PR moving forward?

any update on this PR?

Looking forward to sequencing in React-Motion. Are @chenglou @appsforartists still maintaining this project? Haven't seen any update for a period of time.

I'm not a maintainer - I just needed onRest for a prototype I was working on, so I sent a patch upstream.  You are welcome to do the same.  😄

I talked to @chenglou yesterday about this PR, (and please, Cheng-Lou, let me know if I have anything wrong here I don't mean to speak for you, just want to provide some clarification for people waiting)
He mentioned that this type of sequencing might interfere with spring. Personally, in watching some of his talks, it does seem a little counter-intuitive to his wishes for the direction of the library in terms of true interruptible motion.
There is another project that he pointed me to, however, that is structurally similar, but allows for sequencing: https://github.com/clari/react-tween
If you're interested in more detailed sequencing with extensive tooling, both GreenSock (here is a piece of an article I wrote showing how to use it in React: https://css-tricks.com/comparison-animation-technologies/#article-header-id-16 or Mo.js, (though this tool is still in beta) https://css-tricks.com/introduction-mo-js/
Anyways, I hope that info is helpful for people waiting

这是来自QQ邮箱的假期自动回复邮件。

您好，我最近正在休假中，无法亲自回复您的邮件。我将在假期结束后，尽快给您回复。


Implement an Observer Pattern using []MessageLoggerInterface

When New() is called, the resulting instance should be added to a []MessageLoggerInterface singleton such that commands like messagelogger.SetLogLevel(....) is applied to all observers.

Pull requests:

https://github.com/Senzing/go-logging/pull/28


Fix bug where using IAM roles drops specified regions

In the agent_options method, if use_aws_metadata is enabled, the
access_key and access_secret_key are set to "". Unfortunately, the value
for aws['regions'] is dropped from the config hash. This commit puts it
back in, and sets it to the value specified by the user in the plugin
config yaml file.
Signed-off-by: Mike McClurg<EMAIL_ADDRESS>

My account manager told me that these were no longer supported, and that you wouldn't be accepting pull requests, which is a shame because this is a bugfix PR. I'm closing this PR to remove it from my backlog.


$MyInvocation.MyCommand.Name becomes null in Where-Object block

Issue description:
Unable to use $MyInvocation.MyCommand.Name in Where-Object block as it becomes null. ForEach and For-EachObject works fine. I see this only with Where-Object.
I understand there are workarounds but just want to know if this is expected behavior or not as I was not able to find document that describes scope in Where-Object.
Steps to reproduce
Copy the following script to test.ps1
1 | Where-Object{
    Write-Host('MyInvocation in Where-Object: ' + $MyInvocation.MyCommand.Name)
}

1 | ForEach-Object{
    Write-Host('MyInvocation in ForEach-Object: ' + $MyInvocation.MyCommand.Name)
}

ForEach($FileName in 1){
    Write-Host('MyInvocation in ForEach: ' + $MyInvocation.MyCommand.Name)
}

Then run
.\test.ps1

Expected behavior
## Expected output in case script name is test.ps1.

MyInvocation in Where-Object: test.ps1
MyInvocation in ForEach-Object: test.ps1
MyInvocation in ForEach: test.ps1

Actual behavior
## Expected output in case script name is test.ps1.

MyInvocation in Where-Object:       <-------- $MyInvocation.MyCommand.Name becomes null
MyInvocation in ForEach-Object: test.ps1
MyInvocation in ForEach: test.ps1

Environment data
> $PSVersionTable

Name Value
---- -----
PSVersion 6.2.1
PSEdition Core
GitCommitId 6.2.1
OS Microsoft Windows 10.0.18362
Platform Win32NT
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion 2.3
SerializationVersion <IP_ADDRESS>
WSManStackVersion 3.0

@ryhayash

I understand there are workarounds but just want to know if this is expected behavior

This behaviour is the logical consequence of what you're doing. Unlike the foreach statement which just has a block as part of the statement., Where-Object is a command that takes a script block object as it's argument. A scriptblock is an anonymous function (anonymous command) so it has it's own invocation information and, since it's anonymous, the command name is empty. The other fields are populated however e.g.
{master}PSCore (1:11) >  & { $MyInvocation.MyCommand.CommandType}
Script

@BrucePay if that's the case, why does the behaviour differ between Where-Object and ForEach-Object? They are both cmdlets, and I don't think it's unreasonable for users to expect a consistent experience between these two commands in terms of how their scriptblock implementations behave.

I agree. We need to decide which behavior is the correct one.
From my personal view, Where-Object seems doing the right thing because just like @BrucePay said, a script block is an anonymous function.

Don't forget about ForEach -Parallel - we need to have a consistency with it too.

At the meantime, I also doubt if it's necessary to pursue the consistency of $MyInvocation for ForEach-Object and Where-Object. I will analyze the powershell corpus to find out if there is any uses of $MyInvocation within the Where/ForEach-Object script block arguments.

I analyzed the powershell corpus.ForEach-Object appears 260954 times in those scripts, and the variable $MyInvocation is used in 294 ForEach-Object invocations. Out of that 294 uses, 259 are $MyInvocation.MyCommand.XXX.
Given this analysis result, the pipeline-rewriting optimization is a practical breaking change, and has been reverted.

Is there no way to implement the optimization without the breaking change? 🙁

I looked into how feasible to fix this with the pipeline-rewriting. It turned out not possible unless with some hacky code to break how the ScriptCommandProcessor works today, for example, making the InternalCommand.MyInvocation settable, which might introduce other problems because the rest of code assumes InternalCommand.MyInvocation reflects exactly the InternalCommand.

Does the .MyInvocation work right in filter function?

@iSazonov I'm not clear what you are asking. For reference, below are the places where the InvocationInfo is constructed for ForEach-Object and Where-Object. Basically, it's impossible to retain the exact same InvocationInfo if we replace the ForEach-Objcet with a script command.
ForEach-Object:
https://github.com/PowerShell/PowerShell/blob/cc0fed479a3e455b746a3d12597f078462f2d644/src/System.Management.Automation/engine/lang/scriptblock.cs#L676-L677
Where-Object:
https://github.com/PowerShell/PowerShell/blob/cc0fed479a3e455b746a3d12597f078462f2d644/src/System.Management.Automation/engine/runtime/CompiledScriptBlock.cs#L1051-L1059

Basically, it's impossible to retain the exact same InvocationInfo if we replace the ForEach-Objcet with a script command.

I see. My comment was that we consider ForEach-Object, Where-Object and ForEach (and .ForEach()) but there is filter functions. I guess that ForEach and filter functions have the same behaviour.
We have or could have other cmdlets with scriptblock parameters. What is their behavior?

I guess that ForEach and filter functions have the same behaviour.

No, Foreach-Object and filter functions (or script block with the process block only) have different behavior when it comes to $MyInvocation.

We have or could have other cmdlets with scriptblock parameters. What is their behavior?

That depends on which XXInvokeXX method is being used for those script block arguments.

Should we be matching which XXInvokeXX method is being used between ForEach-Object and Where-Object?

I don't know. It sounds like a breaking change. And again, the question would be back to is it necessary to pursue the consistency in these two particular cases.

That depends on which XXInvokeXX method is being used for those script block arguments.

If we allow this for third-party cmdlets why do we search a consistency for core cmdlets?
If a conclusion will be that we should use only one way this will mean that we should deprecate a public API, right?

@PowerShell/powershell-committee reviewed this.  Inspecting the code, it appears that both Where-Object and ForEach-Object both have code to set MyInvocation, but using different APIs.  It seems that user found utility in getting this information so we recommend that Where-Object should behave like ForEach-Object even if it is technically correct that it's an anonymous function.


Add addIncludeDir to TestStep + fix build template

Closes #794.

It would be good to merge this before the 0.2.0 to fix the default build template else any new user would encounter an error there.

Oops, I'm so sorry. I saw this just after creating the tag.

This looks good. I'm going to add a test to test/standalone/ and then merge.

Merged. Thanks!
I'm thinking maybe in the future we can have --init-lib and --init-exe which can be actual working examples. Then the build template can be tested in the main test suite.


ES7 support

Adding this request as we are already using stage-2 through babel, and I notice that Chrome has supported ES7 features for some time now, so it would be good to get support in prettier, stage by stage. 🎭

Kind of confused as to what this request means? Or you talking about the codebase itself or what prettier supports? It uses babylon as the parser and a fork of recast as the printer (supporting babylon) so it already supports anything Babel does.

Yeah, lots of stuff like do expressions are already supported. We turn on all the plugins in babylon so everything it supports should parse. Basically we support whatever the latest parsers can parse.

Ah, right, thanks. Looks like it was flow-parser that was barfing on static. Apologies.

Only issue for turning on everything by default is that if experimental proposals change need to figure out what to do (Babylon needs to as well) regarding versioning

(To clarify, do-expressions are not an ES7 (i.e. ES2016) feature, nor will they be an ES2017 feature. They're not, yet, part of JavaScript at all.)


AspnetCore 2.0 dbcontext parameterless constructor

Hi Everyone, Just wana to ask if the parameterless constructor in entityframework can be used to initialise a dbcontext.
If it can, how can i configure the connection string?

@kessysam Yes, and the connection string can be set in OnConfiguring. See https://docs.microsoft.com/en-us/ef/core/miscellaneous/connection-strings


Searching for questions

As user I want to be able to do a full text search for questions within the title or the content

This feature should provide a search bar on the left side, where the user can enter a search term, can select or deselect labels and also defined if he wants to see only it owns questions and of course filter by the state.


fix(toolchain): remove unix import on windows targets

#484  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @NathanFlurry and the rest of your teammates on  Graphite


Features

Hi,
looks great so far. Some ideas:

Be able to add stickers (or images).
Make them scalable (pinch, rotate etc)

be able to add multiple Text fields (maybe with color, scaling, rotating etc).

I’ve tried something similar like this before in the past but wasn’t really happy with my feature set and results , but your current development looks pretty neat

Hi @Hirbod, that would be cool features to add, although this is focused on drawing and the implementation is based on SVG views, we can maybe add non-vector things like images and text (or vector text with SVG).
This is not something I see myself implementing for the foreseeable future (as I'm in school and have other occupations). If you want to implement something like this for this library, please let me know and I can maybe guide you on how to do it - but it will probably need a lot of work, since the code in this library is only displaying vector lines at the moment without any kind of transformation (rotation, scaling). Adding shapes and things available in SVG is probably the easiest to implement

Closing this issue as I don't see myself add these features and there's no response since my last comment


call backtrace from my code cause dead lock, backtrace lock once and SIGPROF lock another time.

version gperftools-2.7
mutex 0x7ffff7ffd970 lock twice at frame #1 and #13
Thread 71 (Thread 0x7ffef57fa700 (LWP 17553)):
#0  __lll_lock_wait () at ../sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
#1  0x00007ffff2787e42 in __GI___pthread_mutex_lock (mutex=0x7ffff7ffd970 <_rtld_global+2352>) at ../nptl/pthread_mutex_lock.c:115
#2  0x00007ffff00a901f in __GI___dl_iterate_phdr (callback=callback@entry=0x7fffd272dd20 <_ULx86_64_dwarf_callback>, data=data@entry=0x7ffef57e8710) at dl-iteratephdr.c:41
#3  0x00007fffd272e403 in _ULx86_64_dwarf_find_proc_info (as=0x7fffd2936300 <local_addr_space>, ip=ip@entry=140737261370929, pi=pi@entry=0x7ffef57e9088, need_unwind_info=need_unwind_info@entry=1,
    arg=0x7ffef57e8f30) at dwarf/Gfind_proc_info-lsb.c:709
#4  0x00007fffd272bbb7 in fetch_proc_info (c=c@entry=0x7ffef57e8f30, ip=140737261370929) at dwarf/Gparser.c:454
#5  0x00007fffd272d47e in find_reg_state (sr=0x7ffef57e8950, c=0x7ffef57e8f30) at dwarf/Gparser.c:903
#6  _ULx86_64_dwarf_step (c=c@entry=0x7ffef57e8f30) at dwarf/Gparser.c:950
#7  0x00007fffd2729651 in _ULx86_64_step (cursor=cursor@entry=0x7ffef57e8f30) at x86_64/Gstep.c:71
#8  0x00007ffff23bada3 in GetStackTraceWithContext_libunwind (result=<optimized out>, max_depth=63, skip_count=<optimized out>, ucp=<optimized out>) at src/stacktrace_libunwind-inl.h:138
#9  0x00007ffff23bbb4c in GetStackTraceWithContext (result=result@entry=0x7ffef57e93b8, max_depth=max_depth@entry=63, skip_count=skip_count@entry=3, uc=0x7ffef57e9640) at src/stacktrace.cc:305
#10 0x00007ffff23a6029 in CpuProfiler::prof_handler (signal_ucontext=<optimized out>, cpu_profiler=0x7ffff25d15e0 <CpuProfiler::instance_>, sig=<optimized out>) at src/profiler.cc:360
---Type <return> to continue, or q <return> to quit---
#11 0x00007ffff23a6a23 in ProfileHandler::SignalHandler (sig=27, sinfo=0x7ffef57e9770, ucontext=0x7ffef57e9640) at src/profile-handler.cc:530
#12 <signal handler called>
#13 0x00007ffff2787e31 in __GI___pthread_mutex_lock (mutex=0x7ffff7ffd970 <_rtld_global+2352>) at ../nptl/pthread_mutex_lock.c:115
#14 0x00007ffff00a901f in __GI___dl_iterate_phdr (callback=0x7ffff0340df0, data=0x7ffef57e9c80) at dl-iteratephdr.c:41
#15 0x00007ffff034216e in _Unwind_Find_FDE () from /lib/x86_64-linux-gnu/libgcc_s.so.1
#16 0x00007ffff033eb63 in ?? () from /lib/x86_64-linux-gnu/libgcc_s.so.1
#17 0x00007ffff0340668 in _Unwind_Backtrace () from /lib/x86_64-linux-gnu/libgcc_s.so.1
#18 0x00007ffff007bb4f in __GI___backtrace (array=<optimized out>, size=<optimized out>) at ../sysdeps/x86_64/backtrace.c:110
#19 0x00007ffff625b885 in ...(my code call backtrace)

How Can I avoid the dead lock when get stack trace for my logger?

This is known problem unfortunately. Nothing we can do. Problem is glibc lacks way to support libunwind's need to work from signal handlers.
I have workaround at github.com/alk/unwind_safeness_helper which makes libunwind "see" empty backtrace when things are unsafe nesting-wise. People have reported it to work. But it is a bit of a hack.


Moved Silverstripe lib (phptek/sentry). It's now using ^3.3

Can you please rebase the PR to make the CI green?

@ste93cry Done. See #1228


scss file for font-awesome-animation

This commit lets people add font-awesome-animation to their main.scss file in an easier way. Basically meaning they can simply add: @import "bower_components/font-awesome-animation/dist/font-awesome-animation"

:+1:


[EG] Monthly patch release for May 2022

Monthly patch release for May 2022

API change check for com.azure:azure-messaging-eventgrid
API changes are not detected in this pull request for com.azure:azure-messaging-eventgrid


Add option to use local dt.

Hello Salvador,
I have added an option to be able to set cvode.use_local_dt and still record all the vectors at the correct time.
It seems to work fine, but I don't know how to write tests for this new feature.
Cheers
Sergio

great! thanks so much for all the work in this PR! merging now to release with next version.


Did  Apple For Sign in Package Needed For   Firebase

Hi All
I am working in sign up with apple option from unity. When i read the  this post..
https://firebase.google.com/docs/auth/unity/apple.
In this post it mentioned
Install a third party plugin to handle Apple sign in nonce and token generation, such as the Unity's Sign In With Apple Asset Storage Package.
https://blog.unity.com/technology/support-for-apple-sign-in
Did this package is needed to implement sign in with apple option...
I am running on 10.3 ipad. So i cant run the above  package. It says unsupported platform...
can anyone can share the code for sign in with apple option in firebase like they gave for sign in with microsoft/yahoo like that?
i found trouble in implementing in it..

Hi @CLOUDFIRE91,
Apple Sign In support requires iOS 13.0 +.  I'm sorry to say that if your iPad is running iOS 10 then it won't be able to support Apple Sign In.
The errors that you're encountering with the third party plugins are probably due to the fact that the underlying iOS API surface required to generate Apple ID tokens isn't present on your device.

@DellaBitta  Thanks For your reply...


Add additional information about classes

I want to add the following topics to the section about classes:
1. Getters and setters
2. Class composition ("has-a" relationship, instead of the "is-a" relationship that inheritance creates)
3. Method overriding

I want to add the following topics to the section about classes:
1. Getters and setters
2. Class composition ("has-a" relationship, instead of the "is-a" relationship that inheritance creates)
3. Method overriding

@deyantomov Some examples of Getters and Setters are introduced in following topics.
* [Understanding Getters and Setters in JavaScript](https://github.com/sumn2u/learn-javascript/blob/main/en/functions/getters-setters.md)

* [Getters and Setters](https://github.com/sumn2u/learn-javascript/blob/main/en/miscellaneous/Added%20getters%20and%20setters.md)

I see, I must've been looking for the topics in the wrong place. I'll go through my notes and get started on composition then. I'm not 100% certain about method overriding, as the topic is not that broad, but I'll see what I can come up with.


CSLItemData field maps "eventplace" instead of "event-place"

Just like publisher-place, the place field for event should be "event-place".
However CSLItemData maps "eventplace" instead.

this is a copy-paste from ieee csl style where "event-place" is used.
<macro name="event">
<choose>
  <if type="paper-conference speech" match="any">
    <choose>
      <!-- Published Conference Paper -->
      <if variable="container-title">
        <group delimiter=", ">
          <group delimiter=" ">
            <text term="in"/>
            <text variable="container-title" font-style="italic"/>
          </group>
          <text variable="event-place"/>
        </group>
      </if>
      <!-- Unpublished Conference Paper -->
      <else>
        <group delimiter=", ">
          <group delimiter=" ">
            <text term="presented at"/>
            <text variable="event"/>
          </group>
          <text variable="event-place"/>
        </group>
      </else>
    </choose>
  </if>
</choose>
</macro>

This has been fixed in bf6ef40d657f26d9b0df02824a44f8020e0cade4. Please use the latest snapshot 1.0.0-SNAPSHOT:
https://oss.sonatype.org/content/repositories/snapshots/de/undercouch/citeproc-java/1.0.0-SNAPSHOT/


[Question] how does pydantic differ from schema? Is it a good idea for me to use pydantic in this usecase?

Sorry it's another similar question to #1459
schema refers to https://github.com/keleshev/schema
I understand that pydantic primary purpose is for parsing and not validation as written here

pydantic is primarily a parsing library, not a validation library. Validation is a means to an end: building a model which conforms to the types and constraints provided.

In https://www.cosmicpython.com/book/appendix_validation.html#_validating_syntax
it recommends using schema to validate the json data that's meant to be converted into this class called Allocate
from schema import And, Schema, Use

@dataclass
class Allocate(Command):

    _schema = Schema({  #(1)
        'orderid': int,
         sku: str,
         qty: And(Use(int), lambda n: n > 0)
     }, ignore_extra_keys=True)

    orderid: str
    sku: str
    qty: int

    @classmethod
    def from_json(cls, data):  #(2)
       data = json.loads(data)
       return cls(**_schema.validate(data))

def command(name, **fields):  #(1)
    schema = Schema(And(Use(json.loads), fields), ignore_extra_keys=True)
    cls = make_dataclass(name, fields.keys())  #(2)
    cls.from_json = lambda s: cls(**schema.validate(s))  #(3)
    return cls

def greater_than_zero(x):
    return x > 0

quantity = And(Use(int), greater_than_zero)  #(4)

Allocate = command(  #(5)
    orderid=int,
    sku=str,
    qty=quantity
)

AddStock = command(
    sku=str,
    qty=quantity

I feel that actually I can use pydantic to parse the json into the Allocate class instead.
Am I right in my understanding

You can indeed, and Pydantic even has constrained types built in: https://pydantic-docs.helpmanual.io/usage/types/#constrained-types
from pydantic import BaseModel, conint

Allocate(BaseModel):
    orderid: int
    sku: str
    qty: conint(gt=0)

AddStock(BaseModel):
    sku: str
    qty: conint(gt=0)

And then you would use it like:
data = Allocate(**json.loads(json_string))

If you're using them as function calls, you can use the validate_arguments decorator: https://pydantic-docs.helpmanual.io/usage/validation_decorator/
from pydantic import conint, validate_arguments, ValidationError

@validate_arguments
def allocate(orderid: int, sku: str, qty: conint(gt=0)):
    print(orderid)
    print(sku)
    print(qty)

try:
    a = allocate('hello', 'wrong', 0)
except ValidationError as exc:
    print(exc)
"""
2 validation errors for Allocate
orderid
  value is not a valid integer (type=type_error.integer)
qty
  ensure this value is greater than 0 (type=value_error.number.not_gt; limit_value=0)
"""

excellent answer @StephenBrown2, thank you.

Yes thank you, @StephenBrown2 great answer 👍


Add good intro to Python

Under the section here https://docs.microsoft.com/en-us/azure/sentinel/hunting#use-notebooks-to-power-investigations you could add a good/vetted introduction to Python for beginners, e.g.: https://python.land/python-tutorial

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

ID: 98d13451-ecce-cad5-6745-68c7b7df103c
Version Independent ID: 91ecdce0-6855-de53-0644-e0799e858591
Content: Hunting capabilities in Microsoft Sentinel
Content Source: articles/sentinel/hunting.md
Service: microsoft-sentinel
Sub-service: microsoft-sentinel
GitHub Login: @yelevin
Microsoft Alias: yelevin

@eriky
I have assigned the issue to the content author for further review.

Hi @eriky,
Thanks for sending your comment into docs! We don't generally link out to third party sites for educating about generic technologies. I do understand the feedback though, and we'll take it back to the team to consider.
I'm going to close this issue for now, but feel free to continue commenting below as needed.
We appreciate your contribution to docs!
#please-close


Store compiled shared object files in a new extension table

Move the ultimate storage of a plrust compiled function from disk to an extension table named plrust.plrust_proc.
The compilation process now cleans up after itself (we no longer leave any function-specific artifacts on disk, other than the shared ${PLRUST.WORK_DIR}target/ directory), and the .so bytes are inserted into the new plrust.plrust_proc table, tagged with the host's "target_triple", as the compiled pl/rust extension understands it.
Also enables plrust to properly work with DROP FUNCTION, DROP SCHEMA, and ALTER FUNCTION when a LANGUAGE plrust function is involved in one of those statements.  For the first two, we remove the corresponding entires in our plrust.plrust_proc table, for the latter we let everything pass except changes to the STRICT property.
The interception of those utility statements is done via a hook, which now means plrust needs to be configured as (at least) a shared_preload_libraries entry in postgresql.conf.
CREATE OR REPLACE FUNCTION is simply handled through the normal language handler API.
When we load a "function.so" for the first execution, it is bytes are streamed from plrust.plrust_proc.so to a temporary file in the configured plrust.work_dir directory, dlopen()'d and then immediately deleted from disk.
Loading a function necessitates that we have one already compiled for the current host "triple target".  If one doesn't exist currently plrust will raise an ERROR.  A future PR will address an automatic re-compilation scheme.
Also of note, plrust previously would compile the user function with -Ctarget-cpu=native.  This is no longer the case as it needs binaries to be compatible across same-target-triple-but-different-and-incompatible-cpu-capabilities.  Perhaps in the future this can be addressed in a more explicit manner.

Okay, I'm done with this PR.  I think I've addressed everything to the best of my abilities.  Hoping to see it merged Monday as I'm close to putting up another PR that is based on this one.

Thank you so much!


Update customize-application-attributes.md

Fix typo in roles filter example

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

#label:"aq-pr-triaged"


Checkbox form jumping around in Firefox and Chrome

[x] The issue is present in the latest release.
[x] I have searched the issues of this repository and believe that this is not a duplicate.

Current Behavior 😯

mui problem.zip
In the attached ZIP you find a video where I first show the current behaviour and afterwards the expected behavior
Expected Behavior 🤔
mui problem.zip
In the attached ZIP you find a video where I first show the current behaviour and afterwards the expected behavior

Steps to Reproduce 🕹

Source Code in Codebox
Context 🔦

As shown in the video, I'm trying to create a filter for an ecommerce website in opera everything works perfectly fine. The moment I start using another browser it breaks. I tried different browser versions and devices.
Your Environment 🌎

Tech
Version

Material-UI
v4.11.0

React
v16.13.1

Browser
Opera works fine, Firefox and Chrome, everything up to date

TypeScript
Not in use

etc.

I can't reproduce

Solved it myself. The problem was at a Grid not at the Checkbox


Question re. occluded or missing points in training data

When training a model that outputs a heatmap, training data with missing or occluded points are easily handled by setting the target output to be a heatmap of all zeros. With the DSNT layer, how can this be handled? An all-zero heatmap corresponds corresponds to target coordinates of [0,0] here, but so does a point very well localized in the center of the image.

You can simply refrain from applying loss to those specific heatmaps during training, which means that the heatmaps will not be biased towards any particular representation in the missing label case. I would not recommend using an all-zero representation for the reason you mention.

您可以简单地避免在训练期间对那些特定的热图应用损失，这意味着热图不会偏向于缺少标签情况下的任何特定表示。出于您提到的原因，我不建议使用全零表示。

make sense


feat: Add generic assayapp featuring dynamic links

This is a test balloon for implementing a new dynamic way of defining SODAR data links. This assayapp is only active when specifically called via the Comment[SODAR Assay Plugin] line in i_Investigation.txt. Further special comments define columns which should link to different collections.

[x] Comment[SODAR Assay Plugin ResRep]: Links columns to Results & Reports
[x] Comment[SODAR Assay Plugin MiscFiles]: Links columns to MiscFiles
[x] Comment[SODAR Assay Plugin Data1/2/3]: Creates row links to a three-tiered folder structure in iRODS.
[x] Comment[SODAR Assay Plugin RowPath]: Create links to data collections defined by previous comment.
[x] Toggle display row links via comment (eed609e76da465ea657d7ed859a3343702667365)
[x] docs

Involving @shubavarshini and @mikkonie right from the start to get feedback.

Added row-link generation for three-level data collection structure. Do we need to also care about Material columns (i.e. top_header shenanigans)?

@mikkonie @shubavarshini  I believe we're ready. Main changes are naming of the ISA-tab comments and docs.


⚠ Bofrost.be has degraded performance

In c8d1034, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 1488 ms

Resolved: Bofrost.be performance has improved in db6f9a9 after 9 minutes.


Text origin values are not calculated correctly causing it to not be displayed v3.0.0-beta.6

This Issue is about:

A bug in the API v3.0.0-beta.6

I've created a repo for purposes of testing Phaser 3 here: https://github.com/pavle-goloskokovic/phaser3-test.
I used code from this example http://labs.phaser.io/view.html?src=src\game%20config\game%20title.js with addition of mr doob stats.js and some minor changes to the example code.
If you run code from the repo it should display an image and text like in the example but instead the text is not being displayed.
I found that there is an issue with calculation of values for originX, displayOriginX, displayOriginY, and originY as they all have the value of NaN.
If you uncomment this block of code https://github.com/pavle-goloskokovic/phaser3-test/blob/master/src/js/game.js#L38-L41 to set values to 2 (same as the image) then the text is being displayed correctly.

I also saw this issue.  The example I was using was http://labs.phaser.io/edit.html?src=src\components\data\after callback.js
When I replaced beta 6 with beta 5 the text displayed fine.

Thanks, missed a spot where origin was set. Fixed now.


Add instruction to unblock with powershell command

Windows GUI does not necessarily display unblock option. Add powershell command to resolve this.

Hi!
Please change the list point to an unordered list.
Also:
"If Windows does not display this option, the file can be unblocked with the PowerShell command Unblock-File -Path .\BirdNET-Analyzer.zip"


Add make as a dependency

This wasn't previously a problem,
but recently in arm64 runners,
make is not installed by default.

error: command 'gcc' failed: No such file or directory

Looks like a few things have changed on the arm64 runners... gcc is also missing now :/


Cannot access a closed file

I'm occasionally getting this error on running Invoke-ScriptAnalyzer with v 1.6.0
Invoke-ScriptAnalyzer : Cannot access a closed file.
The Full Error Object is
writeErrorStream      : True
PSMessageDetails      :
Exception             : System.ObjectDisposedException: Cannot access a closed file.
                           at System.IO.__Error.FileNotOpen()
                           at System.IO.FileStream.Flush(Boolean flushToDisk)
                           at System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder)
                           at System.Management.Automation.Host.TranscriptionOption.Dispose()
                           at System.Management.Automation.Host.PSHostUserInterface.StopAllTranscribing()
                           at System.Management.Automation.Runspaces.LocalRunspace.DoCloseHelper()
                           at System.Management.Automation.Runspaces.RunspaceBase.CoreClose(Boolean syncCall)
                           at System.Management.Automation.Runspaces.LocalRunspace.Close()
                           at System.Management.Automation.Runspaces.LocalRunspace.Dispose(Boolean disposing)
                           at System.Management.Automation.PowerShell.Dispose(Boolean disposing)
                           at Microsoft.Windows.PowerShell.ScriptAnalyzer.Helper.GetModuleManifest(String filePath, IEnumerable`1& errorRecord)
                           at Microsoft.Windows.PowerShell.ScriptAnalyzer.BuiltinRules.MissingModuleManifestField.<AnalyzeScript>d__0.MoveNext()
                           at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
                           at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
                           at Microsoft.Windows.PowerShell.ScriptAnalyzer.ScriptAnalyzer.<>c__DisplayClass63_0.<AnalyzeSyntaxTree>b__1()
TargetObject          : C:\Users\Ryan\Onedrive\Github\PowerShellModules\PesterHelpers\PesterHelpers.psd1
CategoryInfo          : InvalidOperation: (C:\Users\Ryan\O...terHelpers.psd1:String) [Invoke-ScriptAnalyzer], ObjectDisposedException
FullyQualifiedErrorId : RULE_ERROR,Microsoft.Windows.PowerShell.ScriptAnalyzer.Commands.InvokeScriptAnalyzerCommand
ErrorDetails          :
InvocationInfo        : System.Management.Automation.InvocationInfo
ScriptStackTrace      : at <ScriptBlock>, C:\Users\Ryan\Onedrive\Github\PowerShellModules\PesterHelpers\PesterHelpers.tests.ps1: line 34
                        at Invoke-Test, C:\Program Files\WindowsPowerShell\Modules\Pester\3.4.0\Functions\It.ps1: line 253
                        at ItImpl, C:\Program Files\WindowsPowerShell\Modules\Pester\3.4.0\Functions\It.ps1: line 203
                        at It, C:\Program Files\WindowsPowerShell\Modules\Pester\3.4.0\Functions\It.ps1: line 117
                        at <ScriptBlock>, C:\Users\Ryan\Onedrive\Github\PowerShellModules\PesterHelpers\PesterHelpers.tests.ps1: line 33
                        at Describe, C:\Program Files\WindowsPowerShell\Modules\Pester\3.4.0\Functions\Describe.ps1: line 100
                        at <ScriptBlock>, C:\Users\Ryan\Onedrive\Github\PowerShellModules\PesterHelpers\PesterHelpers.tests.ps1: line 15
                        at <ScriptBlock>, C:\Program Files\WindowsPowerShell\Modules\Pester\3.4.0\Pester.psm1: line 279
                        at Invoke-Pester, C:\Program Files\WindowsPowerShell\Modules\Pester\3.4.0\Pester.psm1: line 292
                        at <ScriptBlock>, <No file>: line 1
PipelineIterationInfo : {0, 1}

This seems only to fire occasionally on the following rules with the error message given above
PSUseToExportFieldsInManifest
PSMissingModuleManifestField

@kilasuit Thanks for the full error object. Looks like something is going awry in GetModuleManifest method. And from your observation looks like this happens only occasionally. Can you provide me any more information such that I can reproduce this on my end?

@kapilmb - sorry on delay on getting back to you.
It seems to be on random runs of the Script Analyzer where this issue occurs.
Simplest way I've found to see this occur it is by running something like the below
1..20 | Foreach { Invoke-ScriptAnalyzer -path .\test.psd1 }

@kilasuit No worries. I still am not able to reproduce the error, even after iterating for 1000 times.
A few questions -

What version of PSScriptAnalyzer are you using?
Does the error show up only for module manifest PSD1 files or any PSD1 files?

I'm getting it in 1.5 & 1.6
Only tested on module manifest psd1 files

Also I get this on a few different machines - I think that there is an issue with the underlying runspace that is used being closed to early (or not correctly)
I'd be happy to email over some PSTranscripts if that would help diagnose at all?


WSL doesn't recognize commands without it's file extension

Summary
I was able to share Win Env Variables with WSL by usign WSLENV:
~ echo $ANDROID_HOME // output: /mnt/c/Android/sdk

So I added some folders to PATH inside .zshrc
export PATH=$PATH:$ANDROID_HOME/emulator
Environment
Windows 10 Pro 20H2 19042.488
Ubuntu 20.04
WSL 2

Steps to reproduce
Enable WSL 2 and install Ubuntu from Windows Store.
Share a Windows Environment Variable by creating a variable on windows like this:

name: WSLENV
value: ANDROID_HOME/p

Add emulator's folder to .zshrc or .bashrc
export PATH=$PATH:$ANDROID_HOME/emulator

WSL logs:
https://aka.ms/AA9kxem
Expected behavior
I would like to run
~ emulator // expected output> emulator: ERROR: No AVD specified. Use '@foo' or '-avd foo' to launch a virtual device named 'foo'

I can only get that response if I run emulator command with it's file extension:
~ emulator.exe

Actual behavior
But instead I get:
~ emulator // actual output> zsh: command not found: emulator

This is by design.  You must specify the full executable name (including extension).  If you like you can create a .bashrc alias.


HLSL: passing gl_ClipDistance into a function call causes invalid code-gen

Caused by type mismatch of clip-distance builtin in HLSL(float4) and GLSL(float[4]). Presumably mesh-shader only case.
Relevant part of original shader:
pos = mapViewport(pos, gl_MeshVerticesEXT[laneID].gl_ClipDistance);

spirv-cross output:
float param_3[4];
float4 _522 = mapViewport(param_2, param_3);
gl_MeshVerticesEXT[laneID].gl_ClipDistance = param_3; // cannot implicitly convert from 'float [4]' to '__restrict float4'

gl_MeshVerticesEXT[laneID].gl_ClipDistance = param_3

This line in spirv:
%53 = OpLoad %9 %51  // param3
%55 = OpAccessChain %54 %38 %16 %20  // &gl_MeshVerticesEXT[laneID].gl_ClipDistance
OpStore %55 %53

Here OpStore, results into CompilerGLSL::cast_to_variable_store call. In theory cast_to_variable_store should already handle builtins, except it is broken and unable to recognize structure-members as builtin.
Offended part of code:
void CompilerGLSL::cast_to_variable_store(uint32_t target_id, std::string &expr, const SPIRType &expr_type)
{
        // returns gl_MeshVerticesEXT and loses information about whole access chain
	auto *var = maybe_get_backing_variable(target_id);
	if (var)
		target_id = var->self;

	// Access chain also has no DecorationBuiltIn in this case
	if (!has_decoration(target_id, DecorationBuiltIn))
		return;


[1.9.4] CollideEntityEvent not firing for boats

Works in 1.8.9 SpongeVanilla. Doesn't work in 1.9 SpongeVanilla, Haven't tested 1.8.9 SpongeForge.

Closed in https://github.com/SpongePowered/SpongeCommon/commit/0e095e3c796279bf2e2d448b9455456a8ac0a0d6.


Add haptic feedback for Switch toggles

Toggling a native boolean switch control on iOS gives short haptic feedback on newer phones. The Flutter Switch widget should match this.

Note that there's a pretty extensive set of system haptics on iOS which should be evaluated for Flutter https://www.macstories.net/stories/system-haptics-on-the-iphone-7/


Line Has Inline Suggestion Audio Cue — Pain Point Solution

While on a given line with Inline Suggestions, the cue gets triggered by any keystroke, often resulting in rapid fire repetition.
(Hi! Audio UX/Sound Designer from D3 studios here, btw, working with Isidor, who suggested I open an issue here).
Ideas to reduce this friction:

(Most likely the ideal option). Keystrokes made beyond a certain threshold during a timeframe of X seconds trigger a different audio file which sounds like the original file, but is either filtered, lower volume, or a micro-variation.

Create a threshold where the system only plays the cue one time every X amount of keystrokes within a timeframe of Y seconds.

@AFre100 Hi Amnon! Thanks for opening this issue. We will investigate this and look into a fix later in this milestone (July).

@AFre100 Hi Amnon! Thanks for opening this issue. We will investigate this and look into a fix later in this milestone (July).

@isidorn Hi! Awesome — thank you!


Add 'powershell_runspace.rs' example

This PR introduces a new example script that showcases the versatility and an important use case of ClrOxide: Using a custom PowerShell runspace to execute PowerShell code without spawning powershell.exe.
I think this snippet serves as an interesting example due to the structure and logic used for retrieving types, initializing functions, accessing properties, and calling functions, all within .NET from Rust.
Additionally, it demonstrates how .NET reflection can be used to load a library from the correct path within the .NET framework (thanks to yourself for helping me with that 🥳).
Hope it's useful!

Great addition! Thank you so much! 😁