Production Release as on 12-01-2020

What does this pull request aim to achieve? 💯
Please be concise and link any related issue(s):

[ ] I have checked that no one else is working on similar changes.
[ ] I have read the latest README and understand the development workflow.
[ ] The name of this branch is: feature/<branch_name>, or hotfix/<branch_name> if this is a hotfix, where <branch_name> briefly describes the issue(s) resolved and is prefixed with the issue number(s) (e.g. 1127-1130-update-git-branching-model). The branch is created in a cloned version of this repo, not a forked repo.
[ ] This branch is rebased/merged with the latest staging (or the latest production if it is a hotfix).
[ ] There are no merge conflicts.
[ ] There are no console warnings and errors.
[ ] On the right hand side of this PR, I have linked the appropriate issue(s) under "Issues" and added a project progress under "Projects".
[ ] The title describes the issue(s) being addressed using format: <issue_numbers> - <brief_issue_description> (e.g. #1127/#1130 - Update Git Branching Model)

I have verified these PRs -
Fix delete post/comment modal UI #1932; fix fonts for Vietnamese, (and other languages)#1934=Verify; #1394 - added all special Characters used by auth0 to F/E password ;#1948 - fix "view help board" button visibility #1956; #1916 - added missing translation keys for messaging and notifications #1959;#1940 - sort languages alphabetically (#1965); #1893 - Feed Message Modal Initialize On Cancel (#1938);#1931 - Modify labels on post cards #1976;#1975 - Add new types of Help #1977;Lokalise: Translations update #1996

Retested:
1957, 1965, 1958, 1983, 1969, 2013 and automated tests 1937 1941 1864

Retested: #1992 , #1990 , #1996


[Feature Request]: Toggleable Shuffle

What this feature does is that, it shuffles the playlist if on but if turned off it will return to its original playlist.
Sorry bother you if this was already implemented but I can't figure out how to do it using this script. As you know using cycle shuffle doesn't actually work in runtime so I thought of using this script to do exactly that.

Add this in input.conf KEY script-message playlistmanager shuffle to suffle at runtime. Although there is no function to reverse it. What use case do you have to return to original?

I need it cause sometimes i press shuffle by mistake, un-shuffling it would help in that case. mostly. And sometimes tho it is rare, while listening to songs I listen to some album songs in order that is why. But mostly it the first scenario that happens to me frequently and is annoying lol.

nvm I think i found a way to do it.
Using this js script:
var state = 0

var commands = [
    'playlist-shuffle',
    'playlist-unshuffle'
]

function perform_action() {
    mp.command(commands[state])
    state = (state + 1) % commands.length
}

mp.add_key_binding('i','toggle-shuffle', perform_action)

Thank you for the help! Feel free to close this issue.

playlist-unshuffle cool I didn't know about this :+1:
I feel like it's a bit waste to re-implement that for this script. I think maybe this script shouldn't include a shuffle anyway nowadays. Not sure if anyone actually uses it over the native shuffle.


[Support] VLAN Routing

In raising this issue, I confirm the following:
{please fill the checkboxes, e.g: [X]}

[X] I have read and understood the contributors guide.
[X] The issue I am reporting can be replicated.
[] The issue I am reporting can be is directly related to the pivpn installer script.
[X] The issue I am reporting isn't a duplicate (see FAQs, closed issues, and open issues).

I am running PiVPN - Wireguard (and PiHole) on a Unifi network. I have the Pi linked to a trunk port on the switch with the Pi getting a untagged ip (10.0.10.X), I have a vlan set up (eth0.30) that gets a tagged network ip (10.0.30.x). When running the installer script I select the vlan interface (eth0.30) and proceed with the install script. Everything is happy, I reboot. When I generate a client profile, add it to my phone (android, on cellular), I can not access the tagged network or the internet. I had a spare pi so I installed PiVPN on it and used just the untagged interface, works correctly. Uninstalled everything, clean image of raspbian, set up the vlan, installed PiVPN, and issue comes back, so I know it isn't my original PiHole RPi. My port forward is set to forward to the ip of the tagged interface. However, when connected to the same wifi network I am routed to the proper tagged network (wifi does NOT have access to tagged network) which makes me think it is a routing issue somewhere, but i cant find out where.
Have you searched for similar issues and solutions?
Yes i did a search for open and closed issues, the 3 that i found were similar enough to perk my interest, but were either OpenVPN or restricting to a network, so not of a lot of help. (36, 1014, and 1017)
Console output of      pivpn debug First Time
pi@PiHole:~ $ pivpn debug
::::		PiVPN debug		 ::::
=============================================
::::		Latest commit		 ::::
commit b2ab7fc862e31da92576d51609f250701eb6e02c (grafted, HEAD -> master, origin/test, origin/master, origin/HEAD)
Author: Orazio<EMAIL_ADDRESS>Date:   Tue Jun 9 15:45:38 2020 +0200

    Fix change from pull request #1000 that prevented 'pivpn -l' to show revoked client names
=============================================
::::	    Installation settings    	 ::::
PLAT=Raspbian
OSCN=buster
USING_UFW=0
IPv4dev=eth0
dhcpReserv=1
IPv4addr=<IP_ADDRESS>/24
IPv4gw=<IP_ADDRESS>
install_user=pi
install_home=/home/pi
VPN=wireguard
pivpnPORT=51820
pivpnDNS1=<IP_ADDRESS>
pivpnDNS2=
pivpnHOST=REDACTED
INPUT_CHAIN_EDITED=0
FORWARD_CHAIN_EDITED=1
pivpnPROTO=udp
pivpnDEV=wg0
pivpnNET=<IP_ADDRESS>
subnetClass=24
UNATTUPG=1
INSTALLED_PACKAGES=()
=============================================
::::  Server configuration shown below   ::::
[Interface]
PrivateKey = server_priv
Address = <IP_ADDRESS>/24
ListenPort = 51820
### begin Test1 ###
[Peer]
PublicKey = Test1_pub
PresharedKey = Test1_psk
AllowedIPs = <IP_ADDRESS>/32
### end Test1 ###
=============================================
::::  Client configuration shown below   ::::
[Interface]
PrivateKey = Test1_priv
Address = <IP_ADDRESS>/24
DNS = <IP_ADDRESS>

[Peer]
PublicKey = server_pub
PresharedKey = Test1_psk
Endpoint = REDACTED:51820
AllowedIPs = <IP_ADDRESS>/0, ::0/0
=============================================
:::: 	Recursive list of files in	 ::::
::::	[4m/etc/wireguard shown below	 ::::
/etc/wireguard:
client_private_key  configs  server_private_key  wg0.conf
client_public_key   keys     server_public_key

/etc/wireguard/configs:
clients.txt  Test1.conf

/etc/wireguard/keys:
server_priv  server_pub  Test1_priv  Test1_psk	Test1_pub
=============================================
::::		Self check		 ::::
:: [OK] IP forwarding is enabled
:: [OK] Iptables MASQUERADE rule set
:: [ERR] Iptables FORWARD rule is not set, attempt fix now? [Y/n]

Console Output of pivpn debug Second Time
::::		PiVPN debug		 ::::
=============================================
::::		Latest commit		 ::::
commit b2ab7fc862e31da92576d51609f250701eb6e02c (grafted, HEAD -> master, origin/test, origin/master, origin/HEAD)
Author: Orazio<EMAIL_ADDRESS>Date:   Tue Jun 9 15:45:38 2020 +0200

    Fix change from pull request #1000 that prevented 'pivpn -l' to show revoked client names
=============================================
::::	    Installation settings    	 ::::
PLAT=Raspbian
OSCN=buster
USING_UFW=0
IPv4dev=eth0
dhcpReserv=1
IPv4addr=<IP_ADDRESS>/24
IPv4gw=<IP_ADDRESS>
install_user=pi
install_home=/home/pi
VPN=wireguard
pivpnPORT=51820
pivpnDNS1=<IP_ADDRESS>
pivpnDNS2=
pivpnHOST=REDACTED
INPUT_CHAIN_EDITED=0
FORWARD_CHAIN_EDITED=1
pivpnPROTO=udp
pivpnDEV=wg0
pivpnNET=<IP_ADDRESS>
subnetClass=24
UNATTUPG=1
INSTALLED_PACKAGES=()
=============================================
::::  Server configuration shown below   ::::
[Interface]
PrivateKey = server_priv
Address = <IP_ADDRESS>/24
ListenPort = 51820
### begin Test1 ###
[Peer]
PublicKey = Test1_pub
PresharedKey = Test1_psk
AllowedIPs = <IP_ADDRESS>/32
### end Test1 ###
=============================================
::::  Client configuration shown below   ::::
[Interface]
PrivateKey = Test1_priv
Address = <IP_ADDRESS>/24
DNS = <IP_ADDRESS>

[Peer]
PublicKey = server_pub
PresharedKey = Test1_psk
Endpoint = REDACTED:51820
AllowedIPs = <IP_ADDRESS>/0, ::0/0
=============================================
:::: 	Recursive list of files in	 ::::
::::	[4m/etc/wireguard shown below	 ::::
/etc/wireguard:
client_private_key  configs  server_private_key  wg0.conf
client_public_key   keys     server_public_key

/etc/wireguard/configs:
clients.txt  Test1.conf

/etc/wireguard/keys:
server_priv  server_pub  Test1_priv  Test1_psk	Test1_pub
=============================================
::::		Self check		 ::::
:: [OK] IP forwarding is enabled
:: [OK] Iptables MASQUERADE rule set
:: [OK] Iptables FORWARD rule set
:: [OK] WireGuard is running
:: [OK] WireGuard is enabled (it will automatically start on reboot)
:: [OK] WireGuard is listening on port 51820/udp

Have you taken any steps towards solving your issue?
Described above and more detail of other things below.
double checked vlan set up, ran debug and added forward rule that wasn't there (no change), tested on multiple devices with same results, changed setupvars and client profiles to have a 10.0.30.x address, set wireguards ip range to <IP_ADDRESS>/24, all with no luck.

Considering this:

:: [ERR] Iptables FORWARD rule is not set, attempt fix now? [Y/n]

Can I see your firewall settings, as well as network interfaces?
sudo iptables -vnL
sudo iptables -vnL -t nat
ip a

Feel free to strip MAC addressed in the ip output.

`sudo iptables -vnL
Chain INPUT (policy ACCEPT 213K packets, 54M bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 1 packets, 64 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all  --  eth0   wg0     <IP_ADDRESS>/0            <IP_ADDRESS>/24          ctstate RELATED,ESTABLISHED /* wireguard-forward-rule */
    0     0 ACCEPT     all  --  wg0    eth0    <IP_ADDRESS>/24          <IP_ADDRESS>/0            /* wireguard-forward-rule */
    0     0 ACCEPT     all  --  eth0.30 wg0     <IP_ADDRESS>/0            <IP_ADDRESS>/24          ctstate RELATED,ESTABLISHED /* wireguard-forward-rule */
    0     0 ACCEPT     all  --  wg0    eth0.30  <IP_ADDRESS>/24          <IP_ADDRESS>/0            /* wireguard-forward-rule */
    0     0 ACCEPT     all  --  wg0    *       <IP_ADDRESS>/0            <IP_ADDRESS>/0
    0     0 ACCEPT     all  --  *      wg0     <IP_ADDRESS>/0            <IP_ADDRESS>/0

Chain OUTPUT (policy ACCEPT 158K packets, 144M bytes)
 pkts bytes target     prot opt in     out     source               destination

... -t nat
sudo iptables -vnL -t nat                                           Chain PREROUTING (policy ACCEPT 8019 packets, 1326K bytes)                         pkts bytes target     prot opt in     out     source               destination

Chain INPUT (policy ACCEPT 7991 packets, 1320K bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 6765 packets, 424K bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 MASQUERADE  all  --  *      eth0    <IP_ADDRESS>/24          <IP_ADDRESS>/0            /* wireguard-nat-rule */
  189 32088 MASQUERADE  all  --  *      eth0.30  <IP_ADDRESS>/0            <IP_ADDRESS>/0

Chain OUTPUT (policy ACCEPT 6953 packets, 456K bytes)
 pkts bytes target     prot opt in     out     source               destination

ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet <IP_ADDRESS>/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether dc:a6:32:37:e9:6f brd ff:ff:ff:ff:ff:ff
    inet <IP_ADDRESS>/24 brd <IP_ADDRESS> scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::dea6:32ff:fe37:e96f/64 scope link
       valid_lft forever preferred_lft forever
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether <> brd ff:ff:ff:ff:ff:ff
4: eth0.30@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether dc:a6:32:37:e9:6f brd ff:ff:ff:ff:ff:ff
    inet <IP_ADDRESS>/24 brd <IP_ADDRESS> scope global noprefixroute eth0.30
       valid_lft forever preferred_lft forever
    inet6 fe80::82b5:5f38:8351:32ed/64 scope link
       valid_lft forever preferred_lft forever
6: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none
    inet <IP_ADDRESS>/24 scope global wg0
       valid_lft forever preferred_lft forever

That is of the current set up which looks like it has the changed wg0 ip. If needed, I can reconfigure back to vanilla and give the same info.

In the install process you have selected eth0, with IP <IP_ADDRESS>/24 but you forwarded the port to the IP of the eth0.30 interface, which is <IP_ADDRESS>/24, so you can connect from the outside but you won't be able to reach the local network or the internet because the forward rules
    0     0 ACCEPT     all  --  eth0   wg0     <IP_ADDRESS>/0            <IP_ADDRESS>/24          ctstate RELATED,ESTABLISHED /* wireguard-forward-rule */
    0     0 ACCEPT     all  --  wg0    eth0    <IP_ADDRESS>/24          <IP_ADDRESS>/0            /* wireguard-forward-rule */

and nat rule
 0     0 MASQUERADE  all  --  *      eth0    <IP_ADDRESS>/24          <IP_ADDRESS>/0            /* wireguard-nat-rule */

are set up for the eth0 interface. You also have some other rules
    0     0 ACCEPT     all  --  wg0    *       <IP_ADDRESS>/0            <IP_ADDRESS>/0
    0     0 ACCEPT     all  --  *      wg0     <IP_ADDRESS>/0            <IP_ADDRESS>/0

  189 32088 MASQUERADE  all  --  *      eth0.30  <IP_ADDRESS>/0            <IP_ADDRESS>/0

which were not added by pivpn. How about the stored iptables configuration sudo cat /etc/iptables/rules.v4?

I've not yet used PIVPN so I cannot comment on how it's installer sets up network rules.
Linux uses a weak host model. It will send <IP_ADDRESS>/24 traffic out of the eth0 interface if that is your default route. The reason you can access it on the same wifi is because the <IP_ADDRESS>/24 network is directly connected and in your main routing table. You need to define a policy to send this traffic out the eth0.30 interface. Run-time that would be:
ip rule from <IP_ADDRESS>/24 lookup 30
ip route add default via <IP_ADDRESS> table 30

These can be added as post-up commands in /etc/network/interfaces

I reinstalled Raspbian on the test pi, set up the vlan, then installed PiVPN to see if when I select eth0.30 as the device if it would make the correct rules and this is what I got:
pi@raspberrypi:~ $ sudo iptables -vnL
Chain INPUT (policy ACCEPT 4264 packets, 1417K bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 23 packets, 3428 bytes)
 pkts bytes target     prot opt in     out     source               destination

pi@raspberrypi:~ $ sudo iptables -vnL -t nat
Chain PREROUTING (policy ACCEPT 141 packets, 25569 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain INPUT (policy ACCEPT 139 packets, 25471 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 10 packets, 1004 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 MASQUERADE  all  --  *      eth0.30  <IP_ADDRESS>/24          <IP_ADDRESS>/0            /* wireguard-nat-rule */

Chain OUTPUT (policy ACCEPT 10 packets, 1004 bytes)
 pkts bytes target     prot opt in     out     source               destination

pi@raspberrypi:~ $ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet <IP_ADDRESS>/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether dc:a6:32:24:96:27 brd ff:ff:ff:ff:ff:ff
    inet <IP_ADDRESS>/24 brd <IP_ADDRESS> scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::99ce:ddeb:284a:eebc/64 scope link
       valid_lft forever preferred_lft forever
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether <> brd ff:ff:ff:ff:ff:ff
4: eth0.30@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether dc:a6:32:24:96:27 brd ff:ff:ff:ff:ff:ff
    inet <IP_ADDRESS>/24 brd <IP_ADDRESS> scope global noprefixroute eth0.30
       valid_lft forever preferred_lft forever
    inet6 fe80::a2ad:edef:5eaa:21df/64 scope link
       valid_lft forever preferred_lft forever
6: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none
    inet <IP_ADDRESS>/24 scope global wg0
       valid_lft forever preferred_lft forever

Uninstalling, deleting the forward rules. and reinstalling on PiHole gets me:
pi@PiHole:~ $ sudo iptables -vnL
Chain INPUT (policy ACCEPT 17858 packets, 4548K bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 41 packets, 2111 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 10999 packets, 11M bytes)
 pkts bytes target     prot opt in     out     source               destination

pi@PiHole:~ $ sudo iptables -vnL -t nat
Chain PREROUTING (policy ACCEPT 1033 packets, 93572 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain INPUT (policy ACCEPT 1001 packets, 90369 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 905 packets, 58210 bytes)
 pkts bytes target     prot opt in     out     source               destination
   18  1080 MASQUERADE  all  --  *      eth0.30  <IP_ADDRESS>/24          <IP_ADDRESS>/0            /* wireguard-nat-rule */
   23  2865 MASQUERADE  all  --  *      eth0.30  <IP_ADDRESS>/0            <IP_ADDRESS>/0

Chain OUTPUT (policy ACCEPT 925 packets, 60884 bytes)
 pkts bytes target     prot opt in     out     source               destination

pi@PiHole:~ $ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet <IP_ADDRESS>/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether dc:a6:32:37:e9:6f brd ff:ff:ff:ff:ff:ff
    inet <IP_ADDRESS>/24 brd <IP_ADDRESS> scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::dea6:32ff:fe37:e96f/64 scope link
       valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether <> brd ff:ff:ff:ff:ff:ff
4: eth0.30@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether dc:a6:32:37:e9:6f brd ff:ff:ff:ff:ff:ff
    inet <IP_ADDRESS>/24 brd <IP_ADDRESS> scope global noprefixroute eth0.30
       valid_lft forever preferred_lft forever
    inet6 fe80::82b5:5f38:8351:32ed/64 scope link
       valid_lft forever preferred_lft forever
6: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none
    inet <IP_ADDRESS>/24 scope global wg0
       valid_lft forever preferred_lft forever

still get the same issue on both installs, I did make sure that eth0.30 was the selected interface with the (*) on that interface at install.

@orazioedoardo
pi@PiHole:~ $ sudo cat /etc/iptables/rules.v4
# Generated by xtables-save v1.8.2 on Sat Jun 27 17:48:54 2020
*filter
:INPUT ACCEPT [114837:32394064]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [67917:82443789]
COMMIT
# Completed on Sat Jun 27 17:48:54 2020
# Generated by xtables-save v1.8.2 on Sat Jun 27 17:48:54 2020
*nat
:PREROUTING ACCEPT [6345:610421]
:INPUT ACCEPT [6335:609792]
:POSTROUTING ACCEPT [5190:319748]
:OUTPUT ACCEPT [5245:327136]
-A POSTROUTING -s <IP_ADDRESS>/24 -o eth0.30 -m comment --comment wireguard-nat-rule -j MASQUERADE
-A POSTROUTING -o eth0.30 -j MASQUERADE
COMMIT
# Completed on Sat Jun 27 17:48:54 2020

@neutronscott I have a rather empty interfaces file so what should it look like to achieve what you are wanting me to try?
# interfaces(5) file used by ifup(8) and ifdown(8)

# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'

# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

They're likely individual files in /etc/interfaces.d then unless another network manager is used.
Did you try just running them from the prompt first (as root or preceded by sudo) to see if it solves it before considering how to install them persistently

pi@PiHole:~ $ sudo ip rule from <IP_ADDRESS>/24 lookup 30
Command "from" is unknown, try "ip rule help".
pi@PiHole:~ $ sudo ip route add default via <IP_ADDRESS> table 30
Error: Nexthop has invalid gateway.

and on the test pi i get
pi@raspberrypi:~ $ sudo ip rule from <IP_ADDRESS>/24 lookup 30
Command "from" is unknown, try "ip rule help".
pi@raspberrypi:~ $ sudo ip route add default via <IP_ADDRESS> table 30
pi@raspberrypi:~ $

Sorry I did not check my commands. It is ip rule add from <IP_ADDRESS>/24 lookup 30

On a clean install of Raspbian (which was overkill) you should only have this rule:
-A POSTROUTING -s <IP_ADDRESS>/24 -o eth0.30 -m comment —comment wireguard-nat-rule -j MASQUERADE
Did you add this manually?
-A POSTROUTING -o eth0.30 -j MASQUERADE
That said, can you connect this time?

Overkill, perhaps. I had the means to do so and I was curious of something else too.
I added nothing manually, everything that is there was done by the installer or something else unbeknownst to me.
Sadly, no still have the same dilemma. Enjoying the challenge and learning though!

@neutronscott asked for the routing table ip r.
I don’t really have experience with VLANs though so my help is limited. That rule has not been added by pivpn (you can see in the script, all rules added have a comment, which this doesn’t have one). You can remove it with
sudo -s
iptables -t nat -D POSTROUTING -o eth0.30 -j MASQUERADE
iptables-save > /etc/iptables/rules.v4
exit

You can use tcpdump to check if packets reach the eth0.30: https://github.com/pivpn/pivpn/wiki/FAQ#how-do-i-troubleshoot-connection-issues

Sorry I must have missed the routing table.
pi@PiHole:~ $ ip r
default via <IP_ADDRESS> dev eth0 src <IP_ADDRESS> metric 202
<IP_ADDRESS>/24 dev eth0 proto dhcp scope link src <IP_ADDRESS> metric 202
<IP_ADDRESS>/24 dev wg0 proto kernel scope link src <IP_ADDRESS>

I don't have an issue removing it, but I am the person that prefers to know WTH it is doing there first lol. I will check the vlan software and see if it adds that in there it self or whats up.

I don't have an issue removing it, but I am the person that prefers to know WTH it is doing there first lol.

Sure, the first rule, added by pivpn, performs network address translation. Suppose a vpn client <IP_ADDRESS> (X) wants to reach <IP_ADDRESS> (Y) (an IP of the eth0.30 interface).
When a packet from X reaches Y, the source IP will be... X but Y doesn’t know the route to the network <IP_ADDRESS>/24 so X wouldn’t receive a response.
To solve this the nat rule replaces X with raspberry’s eth0.30 IP so Y can respond, then the pi replaces back <IP_ADDRESS> with X.

I will check the vlan software and see if it adds that in there it self or whats up.

Ok so maybe don’t remove yet. This second rules does the same nat not just for <IP_ADDRESS>/24 IP but for every IP leaving the eth0.30 interface.
Have you tried tcpdump?

I have used TCP dump a few times to see what exactly is making it and not and where it is from and going. On the most 'successful' set up it would come from my phone to the Pi, but nothing would be sent back out to my phone. Thus how i came to believe it to be a routing issue somewhere.
Still looking into the VLAN set up, shouldn't be too much longer.

I don't really agree with the need to multi-home this device, but it's a good learning experience.
I don't see eth0.30 in your route table. PiHole & raspberrypi both had eth0.30 configured in earlier ip a outputs.
I am confident the two commands I gave earlier (after putting the add in to ip rule add from ...) would be enough to have the traffic leave the correct interface and get double-NAT'd access to the Internet. You will be NAT'd into your own network as well. Ideally you wouldn't do that and would need to further customize your NAT rules to exclude your own network range and add static routes down from the unifi router into your Pi.
For completeness, fixed and together with a device route (didn't see one. what is used to setup these interfaces...?)
sudo ip route add <IP_ADDRESS>/24 dev eth0.30 table 30
sudo ip route add default via <IP_ADDRESS> table 30
sudo ip rule add from <IP_ADDRESS>/24 lookup 30
sudo ip rule add to <IP_ADDRESS>/24 lookup 30

I generally like to stay minimal but the first and last lines were added in case your main table isn't right...

@neutronscott investigating the vlan set up and the rules @orazioedoardo was talking about I uninstalled PiVPN and purged the VLAN program, went in and made sure the files associated were cleaned of the vlan information, then re-set up the vlan and re ran ip r and got the following (PiVPN not yet installed, rebooting then installing)
pi@PiHole:~ $ ip r
default via <IP_ADDRESS> dev eth0 src <IP_ADDRESS> metric 202
default via <IP_ADDRESS> dev eth0.30 proto dhcp src <IP_ADDRESS> metric 204
<IP_ADDRESS>/24 dev eth0 proto dhcp scope link src <IP_ADDRESS> metric 202
<IP_ADDRESS>/24 dev eth0.30 proto dhcp scope link src <IP_ADDRESS> metric 204

Just to update everyone here are the current tables and situation.
pi@PiHole:~ $ sudo iptables -vnL
Chain INPUT (policy ACCEPT 7909 packets, 2074K bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 2 packets, 260 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 4960 packets, 5340K bytes)
 pkts bytes target     prot opt in     out     source               destination

pi@PiHole:~ $ sudo iptables -vnL -t nat
Chain PREROUTING (policy ACCEPT 305 packets, 36214 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain INPUT (policy ACCEPT 176 packets, 27341 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 380 packets, 24324 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 MASQUERADE  all  --  *      eth0.30  <IP_ADDRESS>/24          <IP_ADDRESS>/0            /* wireguard-nat-rule */
   12  1813 MASQUERADE  all  --  *      eth0.30  <IP_ADDRESS>/0            <IP_ADDRESS>/0

Chain OUTPUT (policy ACCEPT 391 packets, 26017 bytes)
 pkts bytes target     prot opt in     out     source               destination

pi@PiHole:~ $ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet <IP_ADDRESS>/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether dc:a6:32:37:e9:6f brd ff:ff:ff:ff:ff:ff
    inet <IP_ADDRESS>/8 brd <IP_ADDRESS> scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::8335:1e5e:c717:7ada/64 scope link
       valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether <> brd ff:ff:ff:ff:ff:ff
4: eth0.30@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether dc:a6:32:37:e9:6f brd ff:ff:ff:ff:ff:ff
    inet <IP_ADDRESS>/24 brd <IP_ADDRESS> scope global noprefixroute eth0.30
       valid_lft forever preferred_lft forever
    inet6 fe80::82b5:5f38:8351:32ed/64 scope link
       valid_lft forever preferred_lft forever
6: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none
    inet <IP_ADDRESS>/24 scope global wg0
       valid_lft forever preferred_lft forever

pi@PiHole:~ $ ip r
default via <IP_ADDRESS> dev eth0 src <IP_ADDRESS> metric 202
default via <IP_ADDRESS> dev eth0.30 src <IP_ADDRESS> metric 204
<IP_ADDRESS>/8 dev eth0 proto dhcp scope link src <IP_ADDRESS> metric 202
<IP_ADDRESS>/24 dev eth0.30 proto dhcp scope link src <IP_ADDRESS> metric 204
<IP_ADDRESS>/24 dev wg0 proto kernel scope link src <IP_ADDRESS>

I am not able to ping anything on <IP_ADDRESS>/24 however I am able get to my pihole admin console, because of internal routing I am assuming. I can not ping anything on the <IP_ADDRESS>/24 network either. From here I will keep the PiHole as it is and only do what you guys suggest to help keep this clean and straight forward with no confusion.
@neutronscott  What do you mean by multi home? Have it doing two different things on two differnet networks?
The above commands are with the rules you had mentioned. Also, sorry again, I completely missed your post/s asking for ip r, no idea how I missed it, but I did.
Here are a few other results from the connection issues FAQ sheet:
pi@PiHole:~ $ lsmod | grep wireguard
wireguard             143360  0
ip6_udp_tunnel         16384  1 wireguard
udp_tunnel             16384  1 wireguard
ipv6                  454656  42 wireguard

pi@PiHole:~ $ pivpn -d
::::		PiVPN debug		 ::::
=============================================
::::		Latest commit		 ::::
commit b2ab7fc862e31da92576d51609f250701eb6e02c (grafted, HEAD -> master, origin/test, origin/master, origin/HEAD)
Author: Orazio<EMAIL_ADDRESS>Date:   Tue Jun 9 15:45:38 2020 +0200

    Fix change from pull request #1000 that prevented 'pivpn -l' to show revoked client names
=============================================
::::	    Installation settings    	 ::::
PLAT=Raspbian
OSCN=buster
USING_UFW=0
IPv4dev=eth0.30
IPv4addr=<IP_ADDRESS>/24
IPv4gw=<IP_ADDRESS>
install_user=pi
install_home=/home/pi
VPN=wireguard
pivpnPORT=51820
pivpnDNS1=<IP_ADDRESS>
pivpnDNS2=
pivpnHOST=REDACTED
INPUT_CHAIN_EDITED=0
FORWARD_CHAIN_EDITED=0
pivpnPROTO=udp
pivpnDEV=wg0
pivpnNET=<IP_ADDRESS>
subnetClass=24
UNATTUPG=1
INSTALLED_PACKAGES=()
=============================================
::::  Server configuration shown below   ::::
[Interface]
PrivateKey = server_priv
Address = <IP_ADDRESS>/24
ListenPort = 51820
### begin test1234 ###
[Peer]
PublicKey = test1234_pub
PresharedKey = test1234_psk
AllowedIPs = <IP_ADDRESS>/32
### end test1234 ###
=============================================
::::  Client configuration shown below   ::::
[Interface]
PrivateKey = test1234_priv
Address = <IP_ADDRESS>/24
DNS = <IP_ADDRESS>

[Peer]
PublicKey = server_pub
PresharedKey = test1234_psk
Endpoint = REDACTED:51820
AllowedIPs = <IP_ADDRESS>/0, ::0/0
=============================================
:::: 	Recursive list of files in	 ::::
::::	[4m/etc/wireguard shown below	 ::::
/etc/wireguard:
client_private_key  client_public_key  configs	keys  server_private_key  server_public_key  wg0.conf

/etc/wireguard/configs:
clients.txt  test1234.conf

/etc/wireguard/keys:
server_priv  server_pub  test1234_priv	test1234_psk  test1234_pub
=============================================
::::		Self check		 ::::
:: [OK] IP forwarding is enabled
:: [OK] Iptables MASQUERADE rule set
:: [OK] WireGuard is running
:: [OK] WireGuard is enabled (it will automatically start on reboot)
:: [OK] WireGuard is listening on port 51820/udp
=============================================
:::: Having trouble connecting? Take a look at the FAQ:
:::: https://github.com/pivpn/pivpn/wiki/FAQ
=============================================
:::: WARNING: This script should have automatically masked sensitive       ::::
:::: information, however, still make sure that PrivateKey, PublicKey      ::::
:::: and PresharedKey are masked before reporting an issue. An example key ::::
:::: that you should NOT see in this log looks like this:                  ::::
:::: YIAoJVsdIeyvXfGGDDadHh6AxsMRymZTnnzZoAb9cxRe                          ::::
=============================================
::::		Debug complete		 ::::

Here is a snippet of the TCP dump
04:11:02.962715 IP <IP_ADDRESS>.51820 > <IP of Phone>: UDP, length 128
04:11:03.054259 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 93
04:11:03.054982 IP <IP_ADDRESS>.51820 > <IP of Phone>: UDP, length 112
04:11:04.638913 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 112
04:11:05.651486 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 112
04:11:05.718226 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 92
04:11:05.721503 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 92
04:11:05.722866 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 92
04:11:07.000338 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 112
04:11:07.127501 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 95
04:11:07.138948 IP <IP_ADDRESS>.51820 > <IP of Phone>: UDP, length 128
04:11:07.234225 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 92
04:11:07.433270 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 92
04:11:07.640393 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 112
04:11:08.275807 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 92
04:11:10.416687 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 92
04:11:10.843361 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 112
04:11:12.199313 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 92
04:11:12.560511 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 92
04:11:12.565880 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 92
04:11:12.574515 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 92
04:11:13.014774 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 93
04:11:13.015411 IP <IP_ADDRESS>.51820 > <IP of Phone>: UDP, length 128
04:11:13.126072 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 93
04:11:13.126849 IP <IP_ADDRESS>.51820 > <IP of Phone>: UDP, length 112
04:11:13.214997 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 92
04:11:14.473558 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 92
04:11:14.719378 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 112
04:11:15.764200 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 112
04:11:17.278910 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 92
04:11:18.283673 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 92
04:11:18.933659 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 107
04:11:18.944417 IP <IP_ADDRESS>.51820 > <IP of Phone>: UDP, length 176
04:11:19.031657 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 107
04:11:19.032397 IP <IP_ADDRESS>.51820 > <IP of Phone>: UDP, length 128
04:11:19.133327 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 92
04:11:19.372970 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 112
04:11:20.150902 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 92
04:11:20.318942 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 92
04:11:20.330129 IP <IP_ADDRESS>.51820 > <IP of Phone>: UDP, length 128
04:11:20.433070 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 92
04:11:20.433286 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 92
04:11:20.556755 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 92
04:11:21.431451 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 92
04:11:21.576880 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 92
04:11:22.151520 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 92
04:11:22.318607 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 112
04:11:22.573561 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 92
04:11:22.798616 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 112
04:11:23.323153 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 112
04:11:23.416380 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 92
04:11:23.631497 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 92
04:11:23.804296 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 112
04:11:24.163352 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 112
04:11:25.192220 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 112
04:11:25.353509 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 112
04:11:25.991554 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 112
04:11:27.271557 IP <IP of Phone> > <IP_ADDRESS>.51820: UDP, length 112

Your raspberry pi actually responds but I think there are too few packets raspberry -> phone compared to phone -> raspberry. Does pivpn -c show the last handshake?

@neutronscott What do you mean by multi home? Have it doing two different things on two differnet networks?
The above commands are with the rules you had mentioned. Also, sorry again, I completely missed your post/s asking for ip r, no idea how I missed it, but I did.

Multi-homed means it's on more than one network. It's also a second router and your UniFi router needs to know about it. You aren't running a routing protocol so it gets tough deciding the static routes. We are so use to NAT to overcome the need to route packets.
I never did actually ask for ip r I only jokingly later said it's been missing. Sorry.
The major problem here is <IP_ADDRESS>/24 is still going out eth0 and is not getting NAT'd. The UniFi likely doesn't have a route to <IP_ADDRESS>/24. Your eth0 default route gets the lower metric. I think the simplest solution is to remove the default route on eth0 for now. I think your interfaces are setup with systemd-network but I'm not sure. I will continue giving run-time commands and worry about making it persistent after it works. But somewhere in /etc/systemd/network you'd set a RouteMetric=10 to eth0.30 I'm guessing.

sudo ip route delete default dev eth0 will remove that. Now <IP_ADDRESS>/24 clients will egress out eth0.30 and you should be able to reach the internet. The 10/8 route learned by DHCP will still send internal traffic towards eth0, except for the more specific <IP_ADDRESS>/24 traffic to eth0.30.

Add static route in UniFi for <IP_ADDRESS>/24 to go to <IP_ADDRESS>. Now you should be able to ping <IP_ADDRESS>/24 network via UniFi router and PiVPN both ways. Packets from <IP_ADDRESS>/24 to <IP_ADDRESS>/24 will go out eth0.30 directly to destination. Replies will go to UniFi router which may send ICMP redirects. You can either distribute this static route over DHCP to them or create a new policy so it leaves the way you know it'll return so things are symmetrical and your VLAN 30 clients aren't making routing decisions.

sudo ip rule add from <IP_ADDRESS>/24 lookup 6
sudo ip rule add <IP_ADDRESS>/24 via <IP_ADDRESS> table 6

At this point all traffic is routed to the UniFi router and you got to ask yourself, did I need two interfaces? :) Or maybe I need a drawing of what you had in mind to give a better solution. Another solution which requires very little route setup on PiVPN would be to connect UniFi and PiVPN with a /30 network with just 1 interface and the static route for <IP_ADDRESS>/24 so we're not rewriting a lot with policy. Then everything just flows up to the UniFi router for routing and firewall decisions.

After some looking around to try and find an "official" network control, I came up short. However, it seems it fairly agreed upon that dhcpcd is used, which in this case is how i have my eth0.30 interface set up. Here is the new info after running the above mentioned commands. Still at the same place as before however.
pi@PiHole:~ $ pivpn -c
::: Connected Clients List :::
Name          Remote IP                 Virtual IP      Bytes Received      Bytes Sent      Last Seen
test1234      <phone ip>:48112      <IP_ADDRESS>        25KiB               21KiB           Jun 28 2020 - 17:11:40

pi@PiHole:~ $ sudo iptables -vnL
Chain INPUT (policy ACCEPT 650K packets, 185M bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 1860 packets, 124K bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 416K packets, 489M bytes)
 pkts bytes target     prot opt in     out     source               destination

pi@PiHole:~ $ sudo iptables -vnL -t nat
Chain PREROUTING (policy ACCEPT 31119 packets, 3174K bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain INPUT (policy ACCEPT 19402 packets, 2468K bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 26144 packets, 1592K bytes)
 pkts bytes target     prot opt in     out     source               destination
   50  3144 MASQUERADE  all  --  *      eth0.30  <IP_ADDRESS>/24          <IP_ADDRESS>/0            /* wireguard-nat-rule */
  319 46418 MASQUERADE  all  --  *      eth0.30  <IP_ADDRESS>/0            <IP_ADDRESS>/0

Chain OUTPUT (policy ACCEPT 26140 packets, 1615K bytes)
 pkts bytes target     prot opt in     out     source               destination

pi@PiHole:~ $ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet <IP_ADDRESS>/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether dc:a6:32:37:e9:6f brd ff:ff:ff:ff:ff:ff
    inet <IP_ADDRESS>/8 brd <IP_ADDRESS> scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::8335:1e5e:c717:7ada/64 scope link
       valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether <> brd ff:ff:ff:ff:ff:ff
4: eth0.30@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether dc:a6:32:37:e9:6f brd ff:ff:ff:ff:ff:ff
    inet <IP_ADDRESS>/24 brd <IP_ADDRESS> scope global noprefixroute eth0.30
       valid_lft forever preferred_lft forever
    inet6 fe80::82b5:5f38:8351:32ed/64 scope link
       valid_lft forever preferred_lft forever
7: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none
    inet <IP_ADDRESS>/24 scope global wg0
       valid_lft forever preferred_lft forever

pi@PiHole:~ $ ip r
default via <IP_ADDRESS> dev eth0 src <IP_ADDRESS> metric 202
default via <IP_ADDRESS> dev eth0.30 src <IP_ADDRESS> metric 204
<IP_ADDRESS>/8 dev eth0 proto dhcp scope link src <IP_ADDRESS> metric 202
<IP_ADDRESS>/24 dev eth0.30 proto dhcp scope link src <IP_ADDRESS> metric 204
<IP_ADDRESS>/24 dev wg0 proto kernel scope link src <IP_ADDRESS>

pi@PiHole:~ $ sudo ip rule add from <IP_ADDRESS>/24 lookup 6
pi@PiHole:~ $ sudo ip rule add <IP_ADDRESS>/24 via <IP_ADDRESS> table 6
Error: argument "<IP_ADDRESS>/24" is wrong: Failed to parse rule type

I am all for the most simplest way of doing things that meets the needs. The thought process was: PiHole is on the LAN1 network that everyone uses thus it serves as the DNS for that network. LAN2/VLAN30 (it is actually going out of LAN2 port on the USG) is the network my lab gear lives on and is segergated from the LAN1 network for security (it has been compromised once before, lessons were learned) reasons and so if something is screwed up on that network the rest of the house is not complaining that the internet doesnt work. The media server is the only thing that is accesible from both networks so that is avaible as a local connection vs a remote one. However, all that said, I have disabled the firwalll rules in the USG that seprate the networks to rule out that as the cause of not communicating.
I am not exactly sure what it is complaining about wiht the ...table 6 command, as i have said i am not master at ip tables, it eludes me even thoguh I have read up on it. I think it is the lack of a physical-ness to the reading that I am just missing it lol
Attached is a photo of the USG Direct route set up page and the options/settings it has.
I am more than happy to ditch the eth0.30 interface for a more robust/easier set up, but the other thought I had was not everyone has a fancy router, so I was trying to find a more universal way to get it set up. Which there might be, but it is proving to be a bit more intuitive than I had thought so maybe the eater way would be through ones router. Either way i guess it would be good to document it both ways...
I will make a back up of my router and play around with some routing in there/see what i can find that may be helpful.

I messed up the command again, the 2nd should say route.
sudo ip rule add from <IP_ADDRESS>/24 lookup 6
sudo ip route add <IP_ADDRESS>/24 via <IP_ADDRESS> table 6

From looks of that the static route would be:
Destination: <IP_ADDRESS>/24
Distance: 10
Type: Next Hop
Next Hop: <IP_ADDRESS>
Still need to remove that lower metric route

@neutronscott I am thinking you are referring to the command above of sudo ip route delete default dev eth0 to remove default via <IP_ADDRESS> dev eth0 src <IP_ADDRESS> metric 202? I ran the command but it seems to not have taken. I will add that static route and report back.

Added that static route and got nothing. I am also not able to delete the default via <IP_ADDRESS> dev eth0 src <IP_ADDRESS> metric 202 from ip r every time I put the command in, re run ip r it still exists.
@neutronscott What would be your preferred way of having this set up to run on a single pi?

ok, so I got something.
I reconfigured PiVPN to use the eth0 interface. I still have the static route mentioned by @neutronscott but it is routed to the the IP of the eth0 interface of <IP_ADDRESS>. Port forward is routed to the same IP as the static route. I am able to access the internet and both the LAN1 an LAN2 network. At this point would it be easier to set up firewall rules and what not? Technically it isn't VLAN though...


[RESOLVED] Interface eth0(): High error rate (>2 for 5m)

Problem started at 15:15:29 on 2023.05.10
Problem name: Interface eth0(): High error rate (>2 for 5m)
Host: S100-Primario
Severity: Warning
Operational data: errors in: 1, errors out: 0
Original problem ID: 20499
Event details in Zabbix: http://<IP_ADDRESS>/tr_events.php?triggerid=23483&eventid=20499

Problem has been resolved in 3m 0s at 15:18:29 on 2023.05.10
Problem name: Interface eth0(): High error rate (>2 for 5m)
Host: S100-Primario
Severity: Warning
Original problem ID: 20499


i can't able to install python extension

Type: Bug
i want python language but it couldn't download in the vs code
VS Code version: Code 1.93.1 (38c31bc77e0dd6ae88a4e9cc93428cc27a56ba40, 2024-09-11T17:20:05.685Z)
OS version: Windows_NT x64 10.0.22631
Modes:

Hi @KaranBodkhe599 ,
Thank you for contacting the VS Marketplace Team. To help us investigate further, could you please provide more details about your concern, including any screenshots or error messages? Also, please include the publisher/extension details.
Regards,
VS Marketplace Team

Closing the issue since there has been no updates on the information requested. If the issue still persists, please feel free to reopen or create a new issue.


Address Quay security scanner issues.

Quay security scanner shows several vulnerabilities for our builds, one such example:
https://quay.io/repository/kubernetes-service-catalog/apiserver/image/95b8cef81ef4107c7124a208ef430a5c04bb361cf2f43a519376f09a2b6a8796?tab=vulnerabilities

when 0.1.18 or higher is released, this will be solved as we will have a scratch image with binary only.

using scratch for image now https://github.com/kubernetes-incubator/service-catalog/releases/tag/v0.1.18 shows "unsupported" for scanning result.


Not working in Node 6

Path is 'null' while running sails-migrations in Node 6

@syaau This PR should fix the issue https://github.com/BlueHotDog/sails-migrations/pull/76

@syaau This should be fixed in 2.0.9

Tested and confirmed. If this issue still persists for anyone else, please leave a comment with your exact node version and OS version.


Template issue

Name: William Chandler De Kock
Name of Team: N/A as of yet
Student Number: 18291929
University: Stellenbosch University
Location: Stellenbosch
Target Sector: FinTech
LinkedIn: https://www.linkedin.com/in/william-de-kock-a89a2190/

Hey Chan,
Good to see you applied. Let me know if you want to start a team


Add istioctl consoleclidownload and install instructions

Goal
Being able to download istioctl from the OpenShift Web Console

TODO

Need to modify the download URL while the binary will be available
Fill in the Supported Commands table

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all


Confetti Celebration

Add a big confetti celebration whenever anything succeeds

Something like this maybe https://agezao.github.io/confetti-js/ :)


Windows Terminal crashed while copying output

Windows Terminal version (or Windows build number)
1.9.1942.0
Other Software
PowerShell 7.1.3
OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5
Steps to reproduce

ssh to remote machine
select large amount of output

Expected Behavior
selection of terminal output
Actual Behavior
Faulting application name: WindowsTerminal.exe, version: 1.9.2107.13002, time stamp: 0x60edf3e3
Faulting module name: ntdll.dll, version: 10.0.18362.1679, time stamp: 0x418df01d
Exception code: 0xc0000374
Fault offset: 0x00000000000f91c9
Faulting process id: 0x414
Faulting application start time: 0x01d7848bf0adfe9a
Faulting application path: C:\Program Files\WindowsApps\Microsoft.WindowsTerminal_1.9.1942.0_x64__8wekyb3d8bbwe\WindowsTerminal.exe
Faulting module path: C:\WINDOWS\SYSTEM32\ntdll.dll
Report Id: 3a536ca8-1a7a-4d62-a849-c6ccd84d03ea
Faulting package full name: Microsoft.WindowsTerminal_1.9.1942.0_x64__8wekyb3d8bbwe
Faulting package-relative application ID: App

/feedback

sorry, my corporate laptop doesn't have Feedback Hub


About the vocab size

from llama tokenizer, I saw it was 32k, but somewhere says it's 40k?

The official LLaMA tokenizer vocab size is 32k. I'm don't think it is 40k anywhere. You can check it in the HuggingFace LLaMA config


feat: select specific code

close #6

CC @fdschmidt93 how crazy is this? It works for code_actions gives us the same displaying as current telescope version. And it still works with the example provided in the vim.ui.select docs
vim.ui.select({ "tabs", "spaces" }, {
  prompt = "Select tabs or spaces:",
  format_item = function(item)
    return "I'd like to choose " .. item
  end,
}, function(choice)
  if choice == "spaces" then
    vim.o.expandtab = true
  else
    vim.o.expandtab = false
  end
end)

Thanks for the quick changes! I seem to get this error with :lua vim.lsp.buf.code_action() though.

I force pushed over this branch a couple of times. Make sure your checked out revision is: a41c612bb899af07f5949c48ec384d54a01910b9
If it still happens on that revision can you provide a few steps to reproduce?

Yep that's the version I'm using! Not sure, I'm literally just running that vim.lsp.buf.code_action() command.

my bad. Its fixed now

Oh nice works great for code actions now thanks! However, it seems to break normal vim.ui.select though (non-code-action).

okay should also be fixed

Yep thank you so much for the quick changes :))


Know-how to add ucanaccess driver manually needed

I have a win7-64 machine with no internet access. I need to set up DBeaver 5 connected to Ms access db. So I need to add ucanaccess driver manually. Step by step I added the following jars: ucanaccess, jackcess, hsqldb. After that I receive 'Unexpected driver error occured while connecting to database com/healthmarketscience/jackcess/impl/customtostringstyle'. Same dbeaver version on same os with the same access db file but with ucanaccess configured via internet download worked perfectly. What am I doing wrong?

Seems to be solved. I added 2 more jars: commons-lang and commons-logging.


fixes #325 Enforce correct order of plates in "Compress gDNA plates" interface

See #325 for a description of the issue and why it is a must-fix on this page.  See #351 for why it ISN'T a must-fix on the three other pages it affects, although it would certainly be nice to centralize the copy-pasted code ... someday :)

I didn't see anything on review, however I'm not very proficient with JS. I was able to understand the motivations and logic flow, and the contextual comments (e.g., addPlate) were very helpful.


Update clean_sandbox.py

No longer used, template transcluded automatically

Maybe you want to leave a comment instead of emptying it? Anyway, we use Gerrit for code reviews instead of Github pull requests. I expect we can get more advice there. Please see https://www.mediawiki.org/wiki/Manual:Pywikibot/Gerrit for details. Alternatively, you can also use this online tool to to submit a patch: https://tools.wmflabs.org/gerrit-patch-uploader .

Codecov Report

Merging #13 into master will increase coverage by -2.71%.

@@            Coverage Diff             @@
##           master      #13      +/-   ##
==========================================
- Coverage   65.67%   62.96%   -2.71%
==========================================
  Files         267      267
  Lines       50280    50280
==========================================
- Hits        33019    31658    -1361
- Misses      17261    18622    +1361

Impacted Files
Coverage Δ

scripts/clean_sandbox.py
18.09% <ø> (ø)
:white_check_mark:

scripts/version.py
0% <ø> (-82.36%)
:x:

tests/checkimages_tests.py
60% <ø> (-40%)
:x:

tests/oauth_tests.py
66.66% <ø> (-33.34%)
:x:

scripts/create_categories.py
30.61% <ø> (-22.45%)
:x:

scripts/transferbot.py
27.53% <ø> (-20.29%)
:x:

scripts/interwiki.py
11.86% <ø> (-16.19%)
:x:

pywikibot/titletranslate.py
17.24% <ø> (-15.52%)
:x:

scripts/cosmetic_changes.py
27.11% <ø> (-15.26%)
:x:

scripts/selflink.py
43.47% <ø> (-15.22%)
:x:

... and 87 more

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 ef42bb1...749b094. Read the comment docs.


Global v-link activeClass setting?

Looking through the docs and current/closed issues didn't surface anything, so:

Allow a global configuration to override the default active class for all v-link params
This removes boilerplate in Components, although does potentially increase coupling.
Suggested approach:

router.options({
  "activeClass": "active"
})

An alternative approach would be to override on a per-component basis.

http://router.vuejs.org/en/options.html look for "linkActiveClass"


EditPage menu throws error.. Index -1 requested, with  a size of 1.

1. DeletePage failed with exception.

2. Now tried EditPage menu, and an Application Error is thrown. Index -1
requested, with a size of 1.

At this point the application is non functional.

Original issue reported on code.google.com by<EMAIL_ADDRESS>on 5 Mar 2008 at 6:46

Original comment by<EMAIL_ADDRESS>on 13 Mar 2008 at 9:20

Changed state: Duplicate


Extra slash in error stack trace

I was working on reproducing a crash in swift-reflection-mirror, and successfully reproduced it on a non-Apple platform. The stack trace for the runtime error has slightly incorrect formatting. I never accounted for this type of error message while making Swift-Colab, which is probably why it's improperly formatted. However, I can at least use the stack trace to investigate the crash in ReflectionMirror.
// Cell 1 - pulls from the "colab-crash-1" branch
%install '.package(url: "https://github.com/philipturner/swift-reflection-mirror", .branch("colab-crash-1"))' ReflectionMirror
@_spi(Reflection) import ReflectionMirror
print(_forEachField)

// Cell 2
struct ASimpleKPI {
  var w = 1
}

struct AMixedKPI {
  var string = "foo"
}

struct ANestedKPI {
  var simple = ASimpleKPI()
  var mixed = AMixedKPI()
}

// Cell 3
var x = ANestedKPI()

do {
  var result: [PartialKeyPath<ANestedKPI>] = []

  var out = [PartialKeyPath<ANestedKPI>]()
  _forEachFieldWithKeyPath(of: ANestedKPI.self, options: .ignoreUnknown) { _, kp in
    out.append(kp)
    return true
  }

  for kp in out {
    result.append(kp)
    if x[keyPath: kp] is ASimpleKPI {
      _forEachFieldWithKeyPath(of: ASimpleKPI.self, options: .ignoreUnknown) { _, nkp in
        result.append(kp.appending(path: nkp as AnyKeyPath)!)
        return true
      }
    } else if x[keyPath: kp] is AMixedKPI {
      var out2 = [AnyKeyPath]()
      _forEachFieldWithKeyPath(of: AMixedKPI.self, options: .ignoreUnknown) { _, nkp in
        out2.append(nkp as AnyKeyPath)
        return true
      }

      for nkp in out2 {
        result.append(kp.appending(path: nkp)!)
      }
    }
  }
}

// Cell 4
do {
  var result: [PartialKeyPath<ANestedKPI>] = []

  var out = [PartialKeyPath<ANestedKPI>]()
  _forEachFieldWithKeyPath(of: ANestedKPI.self, options: .ignoreUnknown) { _, kp in
    out.append(kp)
    return true
  }

  for kp in out {
    result.append(kp)
    if x[keyPath: kp] is ASimpleKPI {
      _forEachFieldWithKeyPath(of: ASimpleKPI.self, options: .ignoreUnknown) { _, nkp in
        result.append(kp.appending(path: nkp as AnyKeyPath)!)
        return true
      }
    } else if x[keyPath: kp] is AMixedKPI {
      _forEachFieldWithKeyPath(of: AMixedKPI.self, options: .ignoreUnknown) { _, nkp in
        result.append(kp.appending(path: nkp as AnyKeyPath)!)
        return true
      }
    }
  }
}

Run the cells in this order:

Cell 1
Cell 2
Cell 3
Cell 4
Cell 3
Cell 4

In the second run of Cell 4, there should be a runtime crash. The error message's second stack frame says ReflectionMirror.swift/, with an extraneous slash after swift. The bug occurs in the function prettyPrintStackTrace, inside the file FormatErrors.swift. Permalink here.

On second examination, the first frame is also incorrect at closure #3 in  . There are two spaces between in and -, when I would like only one present.

Patched in Swift-Colab v2.3. I rewrote the serialization mechanism. Instead of relying on null terminators to denote ends of strings, I put their length as a 4-byte header. Then, I removed the null terminator. Each header had to restart at a 4-byte boundary, which required aligning memory addresses with ~3 & (x + 3).


Raise a ValueError if t_stop is earlier than t_start when creating an empty SpikeTrain

Fixes #430

Hello @apdavison! Thanks for submitting the PR.

In the file neo/core/spiketrain.py, following are the PEP8 issues :

Line 224:100: E501 line too long (102 > 99 characters)

In the file neo/test/coretest/test_spiketrain.py, following are the PEP8 issues :

Line 1567:100: E501 line too long (166 > 99 characters)

Coverage increased (+0.02%) to 48.816% when pulling ee6989bb854024a24198d5f6baa6fcf349d74579 on apdavison:issue430 into 643f889779ded1333bd433e004fe1f05b5c33026 on NeuralEnsemble:master.

Can I merge ?


don't re-import nixpkgs for no reason

instead of import nixpkgs { inherit system; };, which relies on coercing nixpkgs into a string via the outPath attribute the flake system adds, then directly calling default.nix (possibly bypassing customization done by flake.nix), why not just do nixpkgs.legacyPackages."${system}"?

where do you see this pattern being used?

Ah. here: https://github.com/nix-community/nur-packages-template/blob/756a77175ace2525180e9f169ef6a73cc6fa0baf/flake.nix#L18
Yes. Agreed.


Connects to Uniswap exchange instead of PancakeSwap

Describe the bug
Set up the amm_arb strategy for 2 exchanges: binance_paper_trade and pancakeswap_binance-smart-chain_testnet:

I launch the strategy - an error occurs:

The error shows that the bot is trying to connect to the Uniswap exchange instead of the PancakeSwap exchange.
Steps to reproduce

Using the command create create a new strategy based on amm_arb
Set PancakeSwap exchange as connector2
Start strategy

Release version
2.0.1
Type of installation
Source
Attach required files
No response

@fengtality did you know about this issue?

Pancakeswap uses the Uniswapish class so it might use code in the Uniswap folder, so this may not be a bug.
If a bug actually exists, run AMM-ARB on actual pools that exist on Binance Smart Chain (mainnet NOT testnet), and show us the pool address with transaction links and logs from your runs.


🧑💻 - Implement navbar

As a user, I want to be able to use the navigation bar to navigate through the different pages

Done in commit d854eaf607f6da18b515fa5c715578f18e04ab97


fix fix two case bug

Proposed changes
Issue Number: close #xxx

fix two case bug.

without sync.
missing drop table before create.

Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

run buildall


Cabal stores ghc version specific details in dist/build/autogen

We should detect that the ghc version has changed since the last build, and blow this directory away

/cc @tmcgilchrist I think may have been what was happening to you?
mafia clean will fix it, but it would be good to do it automatically

As a work around I've hardcoded my shell to use 7.8.4

https://github.com/haskell/cabal/issues/5661


Add preview link to model view

Add preview link to the model entity view form.
To do this a new layout needs to be created.
Preview link example
https://[localhost:3000]/api/preview?secret=[SECRET]&slug=[SLUG]
https://github.com/churchinsydney/churchinsydney.org/blob/archived-graph-csm/src/pages/api/preview.ts
Preview secret needs to be added back.
  // Check the secret and next parameters
  // This secret should only be known to this API route and the CMS
  if (
    req.query.secret !== process.env.WEBINY_PREVIEW_SECRET ||
    !req.query.slug
  ) {
    return res.status(401).json({ message: 'Invalid token' });
  }

Here is the new layout example
import React from "react";
import { CmsContentFormRendererPlugin } from "@webiny/app-headless-cms/types";

export default (): CmsContentFormRendererPlugin => ({
    type: "cms-content-form-renderer",
    modelId: "post",
    render({ fields }) {
        return (

                        Preview

                {Object.keys(fields).map(key => fields[key])}

        );
    }
});

Reference

https://www.webiny.com/docs/headless-cms/extending/customize-entry-form-layout
https://www.webiny.com/docs/headless-cms/references/plugins

done in webiny


[iOS] Crash while playing video using media_kit

Hello,
Thank you for creating and maintaining this plugin :).
We just wanted to share a app crash issue while playing video on iOS using media_kit.
We are using latest dependency, and have verified that the same video plays fine with flutter's video_player package.
Sample File:
ios_media_kit_crash.MP4.zip
  media_kit: ^1.1.10+1
  media_kit_libs_video: ^1.0.4
  media_kit_video: ^1.2.4

Flutter logs
[VERBOSE-2:shell.cc(1004)] The 'com.alexmercerind/media_kit_video' channel sent a message from native to Flutter on a non-platform thread. Platform channel messages must be sent on the platform thread. Failure to do so may result in data loss or crashes, and must be fixed in the plugin or application code creating that channel.
See https://docs.flutter.dev/platform-integration/platform-channels#channels-and-platform-threading for more information.
flutter: VideoOutput.Resize
flutter: {id: 0, rect: {top: 0.0, width: 0.0, height: 0.0, left: 0.0}, handle:<PHONE_NUMBER>12480}
flutter: NativeVideoController: Texture ID: 0
flutter: media_kit: wakelock: _count = 1

Native Crash Log
Thread 38 Crashed:
0   <translation info unavailable>	       0x10791c94c ???
1   <translation info unavailable>	       0x10791c94c ???
2   libsystem_platform.dylib      	       0x1106c3603 _sigtramp + 51
3   libsystem_c.dylib             	       0x1104f3fe0 abort + 130
4   libsystem_c.dylib             	       0x1104f32cc __assert_rtn + 314
5   Mpv                           	       0x10af4dfe3 mp_image_crop.cold.3 + 35
6   Mpv                           	       0x10af10ec9 mp_image_crop + 217
7   Mpv                           	       0x10af2fd5f render + 895
8   Mpv                           	       0x10af34850 mpv_render_context_render + 784
9   media_kit_video               	       0x10c452fea TextureSW.render(_:) + 3034 (TextureSW.swift:142)
10  media_kit_video               	       0x10c4537be protocol witness for ResizableTextureProtocol.render(_:) in conformance TextureSW + 30
11  media_kit_video               	       0x10c44a244 closure #1 in SafeResizableTexture.render(_:) + 116 (SafeResizableTexture.swift:28)
12  media_kit_video               	       0x10c44a37e SafeResizableTexture.locked<A>(do:) + 126 (SafeResizableTexture.swift:42)
13  media_kit_video               	       0x10c44a1b2 SafeResizableTexture.render(_:) + 114 (SafeResizableTexture.swift:27)
14  media_kit_video               	       0x10c44a8cb protocol witness for ResizableTextureProtocol.render(_:) in conformance SafeResizableTexture + 27
15  media_kit_video               	       0x10c4561cf VideoOutput._updateCallback() + 1039 (VideoOutput.swift:158)
16  media_kit_video               	       0x10c455d5b closure #1 in VideoOutput.updateCallback() + 27 (VideoOutput.swift:129)
17  media_kit_video               	       0x10c458b2c thunk for @escaping @callee_guaranteed () -> () + 12
18  media_kit_video               	       0x10c458f5c thunk for @escaping @callee_guaranteed () -> (@out ()) + 12
19  media_kit_video               	       0x10c458b2c thunk for @escaping @callee_guaranteed () -> () + 12
20  media_kit_video               	       0x10c458f5c thunk for @escaping @callee_guaranteed () -> (@out ()) + 12
21  media_kit_video               	       0x10c458bd3 Worker.loop() + 147 (Worker.swift:38)
22  media_kit_video               	       0x10c45883b implicit closure #2 in implicit closure #1 in Worker.init() + 27 (Worker.swift:12)
23  media_kit_video               	       0x10c459498 thunk for @escaping @callee_guaranteed @Sendable () -> () + 40
24  Foundation                    	       0x10f12111b __NSThread__start__ + 1009
25  libsystem_pthread.dylib       	       0x1108031d3 _pthread_start + 125
26  libsystem_pthread.dylib       	       0x1107febd3 thread_start + 15

Hi!
Are you on emulator? From the logs, it can be seen that software rendering is used. On most physical (likely all) devices, software rendering fallback will never be used as hardware rendering will work fine. Although, it is indeed an issue which should be resolved.

I'm going down to note down the problem:
Any video with rotation metadata (-90° in this case) causes issues in software rendering (MPV_RENDER_API_TYPE_SW). This will require some patch within mpv-player/mpv, doesn't look hard from quick look. Also: this is applicable to all platforms.

I am running into the same issue on a simulator, but it works fine on a real device

Also having the same issue as outlined above.
+1

Has this been solved at the main branch yet?

This is an issue with software rendering on all platforms for videos that contain rotation metadata.
This will never occur on real device. I will try to fix this in mpv upstream.


Page the same post.

Dear friends,
is it possible to add more than one page in the same post? Has anyone tried to do something similar?
Kind regards,
prdm0.

I "think" there's a way to do page-based pagination, but I'm not sure. Probably best to check the forums for that one. Closing for now. Re-open if there's anything we can do on the theme end.


Should padLeft pad "outwardly", or "left"?

Investigate use cases, and what other langs do. From @michaelficarra

I call this "alignment".

Things with the ability to specify both a length and a fillStr
Ruby has ljust and rjust, which conforms to the current alignment, "outwardly":
'abc'.rjust(6, 'de') => 'dedabc'
'abc'.ljust(6, 'de') => 'abcded'

PHP has strpad, which conforms to the current alignment, "outwardly":
echo str_pad('abc', 6, 'de', STR_PAD_LEFT); => "dedabc"
echo str_pad('abc', 6, 'de', STR_PAD_RIGHT); => "abcded"

Things that don't truncate
sed doesn't truncate, and the user specifies the alignment by their placement of &:
echo 'abc' | sed -e :a -e 's/^.\{1,5\}$/&de/;ta' => abcdede
echo 'abc' | sed -e :a -e 's/^.\{1,5\}$/de&/;ta' => dedeabc
echo 'abc' | sed -e :a -e 's/^.\{1,5\}$/ed&/;ta' => ededabc

Scala doesn't let me truncate or pad on the opposite side, and the number argument seems to be "number of occurrences of the fillStr":
"abc".padTo(6, "de") => "abcdedede"

Languages that only allow a single space, and thus don't apply
Java has String.format, which only pads with a single space:
String.format("%6s", "abc") => "   abc"
String.format("%-6s", "abc") => "abc   "

Smalltalk and Perl have sprintf which only fills with a single space.
Misc
Python also has ljust and rjust, but throws if you provide a multiple character fillStr:
'abc'.ljust(6, 'de') => TypeError: The fill character must be exactly one character long
'abc'.rjust(6, 'de') => TypeError: The fill character must be exactly one character long

Conclusion
I haven't found any examples of languages that accept a multiple character fill string, decide the alignment for you, and do that alignment differently than the current proposal. If you're satisfied with these results, I'll close the issue - please let me know!

Ruby still appears to differ from this proposal. Ruby:
irb(main):002:0> 'foo'.rjust(5, 'bar')
=> "bafoo"

This proposal:
assert(padLeft('foo', 5, 'bar') === 'arfoo');

Ah yes, you're correct - my Ruby example didn't correctly indicate what was going on. I'll update my comment.

@michaelficarra Given this sole example of alignment with the fill string, how do you want to proceed? Are you comfortable following PHP's example? Or would you prefer to follow Ruby's example?
Alternatively, do you have any other languages to recommend investigating that would help decide this? As it is, I'm aware of one applicable language on either side, which means we can choose whichever we want.

Can you update the PHP example in the same way? I think the new test is much better.

Done!

Okay, so they both are aligning padding left, which is what I would have intuited and not the way that is described by these proposals. Are you going to update it to sync with Ruby/PHP?

Given the evidence, that seems reasonable. I'll update that shortly.

@bterlson came up with a clear example of why this matters: With this change, "abc".leftPad(10, "1234567890") will produce "1234567abc", which is clearly better than without this change, which would produce "4567890abc". In generic terms, string.padLeft(mask.length, mask) should do what one expects.

1234567abc which is clearly better than without this change

Strange logic. 4567890abc looks more clearly for me.

str.padLeft(mask.length, mask) seems to be a valid use-case. Can you share a motivating example for the current behavior?

I had no motivating example, I just thought that padLeft should do the inverse of what padRight was doing, so that the fillStrings would be mirrors of each other.
Regardless, the consistency with both Ruby and PHP (and the lack of any other example language that differs) completely trumps it in my mind, even without the very compelling "mask" use case.

I was referring to @zloirock. I'm curious how the current behavior makes more sense to him (presumably because it's useful for some purpose I haven't thought of!).

@bterlson yes, with mask example 1234567abc will be convenient, but it will break mirror consistency with padRight.

With mask.reverse() in the padLeft, however, that could trivially be restored.

Even though 'abc' isn't symmetrical already?

Strings have .reverse method? ;) For mask case enough mask.slice(0, -str.length) + str.

@ljharb what a strange habit - removing comments? :) It doesn't look like something critical, but sometimes we lose a discussion line.

You replied to an already-deleted comment, because I'd realized my mistake that String#reverse isn't a thing. There's no need to preserve that discussion line - call it a rebase.


MSID: 94964 Version: 1 DOI: 10.1101/2<IP_ADDRESS>2042

MSID: 94964
Version: 1
Preprint DOI: https://doi.org/10.1101/2<IP_ADDRESS>2042
Step 1. Awaiting reviews
Editorial to post reviews via hypothesis
Useful links:

DocMap: https://data-hub-api.elifesciences.org/enhanced-preprints/docmaps/v2/by-publisher/elife/get-by-manuscript-id?manuscript_id=94964
New model tracking: https://docs.google.com/spreadsheets/d/1_fHaoOy7hjyocptKtVJRijeNpUY4hBS7Ck_aVmx6ZJk/
Reviews on sciety: https://sciety.org/articles/activity/10.1101/2<IP_ADDRESS>2042

For trouble shooting (e.g. no Docmaps available):

DocMap issue addressing: https://miro.com/app/board/uXjVNCwK6EI=/
Explore DataHub DocMaps API: https://lookerstudio.google.com/reporting/4c2f0368-babb-4beb-b5b3-497e7e7b0f08/page/ejphD
Unmatched submissions and preprints: https://lookerstudio.google.com/u/0/reporting/9f86204f-3bf7-477c-9b18-5c5ef141bf69/page/p_gxi57ha93c
Unmatched manuscripts spreadsheet: https://docs.google.com/spreadsheets/d/15QcK8w-ssB7109RQEDtFpJPZ0J5HTGxoHa_2TtpMBbg/edit#gid=1336081641

Step 2. Preview reviewed preprint
Production QC content ahead of publication
Instructions:

QC preview: https://prod--epp.elifesciences.org/previews/94964v1
Update ticket with any problems (add blocked label)
When QC OK, add QC OK label to ticket and add publication date and time to https://docs.google.com/spreadsheets/d/1amAlKvdLcaDp5W8Z8g77NmkwbMF5n_u89ArSqPMO8jg
Move card to next column
(At end of the day post link in #enhanced-preprint and ask for PDF to be generated)

Useful links:

Preprint DOI :  https://doi.org/10.1101/2<IP_ADDRESS>2042
Confirm reviews returned by EPP: https://prod--epp.elifesciences.org/api/reviewed-preprints/94964/v1/reviews
To update the MECA path in the docmap: https://docs.google.com/spreadsheets/d/1mctCQuNFBjSn97Lihy7_vBO6z7-N-oqyLv4clyi6zHg

Step 3: Awaiting search reindex
This step adds the reviewed preprint to the homepage: https://elifesciences.org
The search reindex is triggered once an hour. We need the reviewed preprint to be indexed as the search application serves the journal homepage.
Useful links:

Jenkins pipeline to reindex search can be triggered sooner or monitored here: https://alfred.elifesciences.org/job/process/job/process-reindex-reviewed-preprints/

Step 4: Published! PDF requested
Waiting for PDF to be generated
Useful links:

PDF tracking: https://docs.google.com/spreadsheets/d/106_XeDjmuBae7gexOTNzg60lapeqjl2aRn9DzupGyS8/

Step 5: Introduce PDF to data folder and git repo
Upload PDF to relevent folder in git repo https://github.com/elifesciences/enhanced-preprints-data/
Step 6: Done!

[ ] Kettle is on!

I think, despite this being moved yesterday, the reviews for this one were only posted today? We can hopefully expect the reviews to appear tomorrow

Hi @acollings, the version on bioRxiv is from December 27, 2022. Do the authors need to update the preprint on bioRxiv? I see the version we have on eJP has a supplementary section which isn't there on bioRxiv, but not sure if it's otherwise the same

Thanks @fred-atherden it's the same, only the authors have uploaded a single file including the supp info for the purposes of review, whereas they're available to download from bioRxiv. So, it's an okay to proceed from me.

Thanks @acollings. As it stands, we have no meca package from bioRxiv.
curl "https://api.biorxiv.org/meca_index/elife/all/2<IP_ADDRESS>2042" | jq
{
  "status": [
    {
      "count": 0,
      "messages": "none found"
    }
  ]
}

And the supplementary materials would be unavailable in the RP (since supplementary files aren't supported on EPP).
I could reach out to bioRxiv, but at this stage it might be easier and beneficial (since we'll get the supp info if it's submitted to bioRxiv in the main PDF) to get the authors to post an updated version. WDYT? If you're OK to proceed on that basis, I can reach out to them if you'd prefer

Sounds good, @fred-atherden: very happy for you to contact the authors!

(Authors have said they will post an updated preprint today or tomorrow)

(chased)

MECA now available. Need to wait for it be found by DataHub and imported by EPP:
curl "https://api.biorxiv.org/meca_index/elife/all/2<IP_ADDRESS>2042" | jq
{
  "status": [
    {
      "count": 1,
      "messages": "ok"
    }
  ],
  "results": [
    {
      "msid": "522042",
      "tdm_doi": "10.1101/2<IP_ADDRESS>2042",
      "ms_version": "1",
      "filedate": "2023-12-01",
      "tdm_path": "s3://transfers-elife/biorxiv_Current_Content/December_2022/28_Dec_22_Batch_1477/a648618d-6c33-1014-8b44-a7955edb4903.meca",
      "transfer_type": "api"
    }
  ]
}

Ready to check


No Wins servers are provided to Vpn clients !

No Wins servers are provided to Vpn clients with IP, DNS and so on.
That are Wins1 and Wins2.
And there is no place in either GUI panel or vpn server config where it could be specifed manually.

WINS is not supported in securenat but in local bridge scenario it should work as normal.


Error using page() to get infobox()

Do you have any thoughts on what Invalid attempt to destructure non-iterable instance is referring to in this context?
/PROJECTS/research/node_modules/wikipedia/dist/page.js:256
                throw new errors_1.infoboxError(error);
                      ^

infoboxError: infoboxError: TypeError: Invalid attempt to destructure non-iterable instance
    at Page.infobox (/PROJECTS/research/node_modules/wikipedia/dist/page.js:256:23)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
  code: undefined
}

Node.js v18.16.0

The code:
const wiki = require('wikipedia')
let page, infobox
async function getPage(input) {
  try {
    page = await wiki.page(input)
    infobox = await page.infobox()
    console.log(infobox)
  } catch (error) {
    console.log(error)
  }
  return infobox
}

getPage('John M. Vining')

Can you mention which page you faced this issue in? I think it might be a problem with https://www.npmjs.com/package/infobox-parser but we would need the page name to confirm @kingram6865

This is the page that I was attempting to parse: https://en.wikipedia.org/wiki/John_Vining

I think it's possible you need to account for the case where there is no Infobox.

You close this issue? It's not fixed.


Issue when device tries to connect to cloudcutterflash AP

Im getting the following when the device tries to connect to the AP. Looks like it attempts to connect but fails with
[W 221106 04:22:38 iostream:1406] SSL Error on 12 ('<IP_ADDRESS>', 26997): [SSL: DECRYPTION_FAILED_OR_BAD_RECORD_MAC] decryption failed or bad record mac (_ssl.c:1129)
Using PSK v1 - Received PSK ID version 02

Any ideas?
Thanks

That means the exploit didn't work and the profile did not match your device.  Full logs would show your device did not have an AP prefix starting with A- at that point, which is necessary for the exploit.
Please post what device this is, what module it has, what Tuya firmware is currently on it (if joined to SmartLife), or a firmware dump if you have have pulled one already.

That means the exploit didn't work and the profile did not match your device.  Full logs would show your device did not have an AP prefix starting with A- at that point, which is necessary for the exploit.
Please post what device this is, what module it has, what Tuya firmware is currently on it (if joined to SmartLife), or a firmware dump if you have have pulled one already.

To be honest I don't know much about it, but the brand is Brilliant. An Australian company.
Also, regarding the profile. I did not specify a profile when running run_detach.sh as there is nothing in the documentation regarding this?
Do I need it?

That means the exploit didn't work and the profile did not match your device.  Full logs would show your device did not have an AP prefix starting with A- at that point, which is necessary for the exploit.
Please post what device this is, what module it has, what Tuya firmware is currently on it (if joined to SmartLife), or a firmware dump if you have have pulled one already.

I believe it is a Generic Tuya device based on the GU10 RGBW bulbs. ESP8285 I believe.

It forces you to choose one after you run run_detach.sh if you didn't provide one in advance.  It made you select a mfg + model, which in combination is a profile.
If it is an ESP8285, Tuya-CloudCutter will not work on it.  CloudCutter is currently for Beken BK7231T and BK7231N based modules.

It forces you to choose one after you run run_detach.sh if you didn't provide one in advance.  It made you select a mfg + model, which in combination is a profile.
If it is an ESP8285, Tuya-CloudCutter will not work on it.  CloudCutter is currently for Beken BK7231T and BK7231N based modules.

Bugger, stuck with lemons


Use erblint to maintain consistency within ERBs

Supersedes #2867 (HT: @justinlittman)
Why was this change made? 🤔
Extend our linting & style-checking to ERB files, of which H2 has a great many.
Includes:

Add erblint dependency for linting ERB files (& supporting rake task)
Run erblint as part of CI
Autocorrect erblint violations

How was this change tested? 🤨
CI

@justinlittman 💬

Add something to README or Dev Playbook about how to run the lint?

Great idea: 48b32a9 (#3115)


client-go: always deepcopy before mutating lister objects

/cc @winterTTr

Thanks, @sttts. I believe your change is want i mean to, good to merge.


Adding generalized selectable mixin

Context
US116587
Generalizes the list-item-checkbox-mixin to selectable-mixin for easier use by non list-item components.

Readme with documentation and screenshot added
Event name decoupled from list-item
Demo page for the mixin added

Quality

Unit tests from list-item-checkbox-mixin migrated and adjusted
Manually tested with:

[x] Legacy Edge
[ ] CrEdge
[x] Firefox
[x] Chrome
[x] Safari

Issue with aXe automated test
This test fails:
const element = await fixture(`<${tag} key="1234" selectable></${tag}>`);
await expect(element).to.be.accessible()

aXe will cite this rule: Form elements must have labels
However, the checkbox is correctly labelled. I've removed this test as a result. If someone knows why this happens, I'd love to know so I can fix it.

This is interesting! I definitely see a need for multiple things to be "selectable", and so having that logic shared makes sense I think. However, I'm not sure we're at the point yet where we have all those different use cases really nailed down?[...]

These are fair points. The use case that was pointed out to me were things like cards, which currently aren't selectable but could be. You're probably right and I am jumping the gun here because others noticed that the list-item-checkbox-mixin does not need to be specific to list items and there could be use cases for other 'selectable' components.
I'm fine with this being shelved until those use cases are better understood.

I love the instinct towards reusability and factoring out useful bits for sure! So don't stop thinking that way. :) We just need to find that balance between factoring out before we know exactly how all the different usages will work vs. dealing with some duplicated code potentially.
Factored out code isn't perfect either as you're seeing... it can end up being complicated to use & understand when you come back to it months later (or someone else does), and hard to change/test later too once it's used in a bunch of ways you didn't initially imagine.
I'd suggest waiting until you have 3 or 4 solid "selectable" things that you can immediately use this thing in -- then I think if it works well for those and makes them each "better" (less code but still understandable), then go for it.


Github not linked on Powershell Gallery

This repository is not linked at https://www.powershellgallery.com/packages/vmxtoolkit/4.5.1 on the left side under "Project Site" making the Github repository hard to find.

i still maintain compatiobility to powershell 3.0. ProjectUri is a 5.0 psd tag, that would require an update of the modulemanifest and thus break in 3.0. will add the url do the description get-help -online might take you to my old homepage. nthere are some changes planned for 5.0 with documentation on readthedocs similar to http://labbuildr.readthedocs.io/en/master/


Feature/drawerheader

Fixes PXBLUE-1090.

Changes proposed in this Pull Request:

Add DrawerHeaderComponent

notes: The showcase is a bit overkill at this point. I was using it to test multiple states of the component and left it in for others to review.

Can you rename pxb-drawer-header-title-content to pxb-drawer-header-title-content-wrapper.  Whenever there's a wrapping div around an ng-content, I've been using this naming convention just for consistency.  pxb-[component-name]-[ng-content-name]-wrapper.

Are we adding any knobs on the DrawerHeader story?
I understand that the open knob won't get implemented with the DrawHeader, but perhaps the title knob.  Just asking.

@andrupu we're handling all the storybook stuff in a separate story. Having even the skeleton in there is extra for now.


StayInTouch - Feature/milestone 5

This a PR for review by Microverse TSEs

☝🏽 Stay In Touch - Milestone 5
Hi there,
This PR includes the required implementation of Friendships(v1). Users are currently able to:

Send friend requests
Receive friend requests
Accept or Decline friend requests

I have also added an additional Facebook-esque 'Friend Requests' tab in the top navbar which provides the user with an easy access dropdown menu of all friend requests and additional suggested users to add for the user. A notification light will also appear if new (incoming) friend requests appear.
Let me know if you have any questions or problems,
All the best,
Rory

Hi there,
Following the review above, I've taken steps to correct the issues laid out above. Namely:

The current_profile page no longer displays buttons for friendship interaction
The User index list has been modified to display the user, pending requests and all other users.
The user index will not duplicate users anymore.

Additionally, I realise that I accidentally completing the steps for the next milestone (milestone-6) in this milestone. What would be your advice on how to proceed? Just re-submit for another code review?
Thanks,
Rory

Hi Rory Hellier, I'm Sarah your reviewer for this PR 👩🚀
Good job with the fixes!
About the next milestone, you can just change branches and request a review for the next one in another PR like usual.

Your project is approved! 🎊 🥅 💛
You may close this Pull Request and merge the changes

Keep being an awesome dev and good luck with your next project!

Cheers and Happy coding!👏👏👏
Code review by Sarah Uryelah Silva Chamorro
(Feel free to contact me on slack by the handle of  sarah if you have any additional question)

@uryelah @uche-inyama
Thanks for the code reviews! Have a good weekend!
Rory


Pixelmon inventory support

Actually people can edit the pokemons before login, like removings it's abilities

I'm not really familiar with pixelmon, so I don't know what you mean with abilities, could you please explain what they are.
Actually the plugin cancels all change inventory events that Sponge provides. Could you post what Sponge version and Plugin version do you use, maybe it's an issue with an incompatible version? Could you also post how you edit the pokemons, maybe they trigger a different event?

Step by step
1- Join server, open inventory:

2- Righ click on one of the pokemon slots:

3- Then just select a stats and click on the trash:

I asked for suport because its an aditional menu, and i know the defaults wouldnt handle that.

Forge: forge-1.10.2-<IP_ADDRESS>2-universal.jar
Sponge: spongeforge-1.10.2-2281-5.2.0-BETA-2610.jar
ThePlugin: flexiblelogin-0.14.7.jar

It could because you use an outdated Sponge version.

Tried with spongeforge-1.10.2-2477-5.2.0-BETA-2637.jar
Same problem :D

What happens after a relogin, does it reset or does it keep the changes?

Keep changes

Could you try the newest version of FlexibleLogin.
https://github.com/games647/FlexibleLogin/blob/144c41b6d28b9d0ddb4b1824d129702457edb048/CHANGELOG.md#L213-L223

Yes, it solves the inventory problem!
There is another one related to pixelmon, i will open a new issue as soon as i make a few tests!


Allow the validator account to whitelist hotfixes

Description
This PR is on top of #2142 and allows validators to whitelist hotfixes with their account key, instead of requiring to do it with their validation signer keys. It fixes #1832. However, given the current urgency, it does not include the following:

Unit tests
CLI checks

Tested

Not tested

Related issues

Fixes #1832

Backwards compatibility
Should be backwards compatible

Closing since #2166 made it in


Is license broadly compatible with FreeDOS ? (for code sharing)

Hi @bitcrazed do you think this is a good idea? Can we develop a better overall DOS boot disk, by using the best pieces of source code from both projects?
My chief question is: It this possible, from a licensing standpoint? Are the 2 sets of licenses even compatible with each other? Or under what specific restrictions?

FreeDOS is under GPL2. They can take but not give.

FreeDOS is GPL and this is MIT. By those licenses, you could take MS-DOS code and bring it into FreeDOS, but not the other way around. Not legal advice. I would suggest contacting a lawyer before doing something like this.

The other part of the question was: But is it a good idea? Well i would say 'no'. At least whilst this open sourcing is limited to versions 1-2 of MS-DOS. Then there is probably very little benefit. Really I have no idea about the specifics here. But would imagine that we would want some much newer version of MS-DOS than this one.


Linux Platform

Hey all,
I've been looking through the source here and I've noticed that only Windows and Android N have dedicated platform support, but there's also a platform extension set generated for Linux. What's the process for using this vs. Windows?

I've mostly figured it out, I'm assuming that it's basically the same as with C++. Thanks!


[Bug] Doesn't Put Tabs in Assigned Groups Majority Of The Time

When you set a certain domain to open in a specific group, it does not always work. Most times it just opens it in the first group. Not sure what causes this.

It actually works as designed until I check the "Remember my decision for this site". Then once it is checked, the site opens in the current group.

I can't confirm but that might've been what was happening to me as well


Bugfix/snake camel dash

Description
Please provide a detailed description of the changes and the intent behind them :)
Checklist

[x] Changes are covered by tests if behavior has been changed or added
[x] Tests have 100% coverage
[x] The version in package.json has been bumped according to the changes made and standard semantic versioning rules

Resolves
#96
I saw an interesting thread about things that are not 100% compared to lodash. I made this pr to fix these "bug"

This PR has been published 🚀 to npm in version 8.0.3

Thanks @MarlonPassos-git so much for this PR, I like the simple fix and how consistent it is with the existing code. I also ❤ the added tests!

Thanks so much for the fix!
Just want to point out that the usage of toLowercase may not function as expected when some other locale is used as input. I believe one should prefer the usage of to LocaleLowerCase to get 100% accuracy, but as the two functions mostly produce the same results I'm not sure if you feel it is worth the change and possibly additional optional parameter.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toLocaleLowerCase

@wouter-leistra thanks for pointing this out, I've never had a need to work with i8 before so I've never used locale.
I'm down to add it or would accept a pr.


Make some return checks consistent with others

Three 'getters' introduced in 1.1.1 checks the return values different from what other getters do. Make them consistent

Okay, will merge soon. Thanks

Pushed to master as f895084 and 1.1.1 as 2ccfcbfb


Album View // About // Share Settings

It makes no sense to show that when not logged in ;-)
It's obviously public, not hidden nor password protected ... :-P And the owner ... I wrote about :-D

As you're making so many of these, could you please make UI issues in the UI repo Lychee-front?

Sure!


Concrete data stores core constructors

Fixes #250
https://www.bilibili.com/video/BV1V34y1R7TZ
bors r+

bors r-

bors r+

clicked the link out of curiosity and I forgot to turn off the volume in the classroom 🤣

Lmfao


Update dataset_wrappers.py

Thanks for your contribution and we appreciate it a lot. The following instructions would make your pull request more healthy and more easily get feedback. If you do not understand some items, don't worry, just make the pull request and seek help from maintainers.
Motivation
add get_ann_info in RepeatDataset and ConcatDataset to support MultiImageMixDataset
Modification
add get_ann_info in RepeatDataset and ConcatDataset
BC-breaking (Optional)
Does the modification introduce changes that break the backward-compatibility of the downstream repos?
If so, please describe how it breaks the compatibility and how the downstream projects should modify their code to keep compatibility with this PR.
Use cases (Optional)
If this PR introduces a new feature, it is better to list some use cases here, and update the documentation.
Checklist

Pre-commit or other linting tools are used to fix the potential lint issues.
The modification is covered by complete unit tests. If not, please add more unit test to ensure the correctness.
If the modification has potential influence on downstream projects, this PR should be tested with downstream projects, like MMDet or MMCls.
The documentation has been modified accordingly, like docstring or example tutorials.

Hi, thanks for your contribution. We fixed python3.9 CI, please merge the latest master.

Would you like to add get_ann_info to all other dataset wrapper so all of these wrappers can support MultiImageMixDataset?

Would you like to add get_ann_info to all other dataset wrapper so all of these wrappers can support MultiImageMixDataset?

As far as I know, only ClassBalancedDataset is not supported. I will try it.

Hi, thanks for your contribution. We fixed python3.9 CI, please merge the latest master.
Need me to raise a PR again?