failed to consensus: unable to read new message from the message queue

[Subject of the issue]
Description
I deploy polygon-edge for 3 validator nodes,  use pos consensus.
after run more than 20 hours, the system can't generate blocks. after analysis the log, I found the three node all have something wrong with the "unable to read new message from the message queue: timeout expired=5m0s". then I restart the proposal validator node, the system run ok.
Your environment
ubuntu 22.04
polygon edge  develop branch
Steps to reproduce
run 20 hours, all nodes in the same machine
Expected behaviour
Is there any optimize for the system self-cure replace restart nodes ?
Actual behaviour
the system can't generate blocks
Logs
2022-06-01T12:21:21.232Z [INFO]  polygon.consensus.ibft: unable to read new message from the message queue: timeout expired=5m0s
2022-06-01T12:28:40.733Z [INFO]  polygon.consensus.ibft: unable to read new message from the message queue: timeout expired=5m0s
2022-06-01T12:33:41.151Z [INFO]  polygon.consensus.ibft: unable to read new message from the message queue: timeout expired=5m0s
2022-06-01T12:38:41.436Z [INFO]  polygon.consensus.ibft: unable to read new message from the message queue: timeout expired=5m0s
2022-06-01T12:43:41.703Z [INFO]  polygon.consensus.ibft: unable to read new message from the message queue: timeout expired=5m0s
2022-06-01T12:48:41.956Z [INFO]  polygon.consensus.ibft: unable to read new message from the message queue: timeout expired=5m0s
2022-06-01T12:53:22.251Z [INFO]  polygon.network: Peer disconnected: id=16Uiu2HAkuV6dvZgwUhwd9f7QmBh2Yyd1b2WgweiJ22RcSLqstkzV
2022-06-01T12:53:27.815Z [INFO]  polygon.network: Peer connected: id=16Uiu2HAkuV6dvZgwUhwd9f7QmBh2Yyd1b2WgweiJ22RcSLqstkzV
2022-06-01T12:53:42.381Z [INFO]  polygon.consensus.ibft: unable to read new message from the message queue: timeout expired=5m0s
2022-06-01T12:53:43.033Z [INFO]  polygon.consensus.ibft: state change: new=AcceptState
2022-06-01T12:53:43.033Z [INFO]  polygon.consensus.ibft.acceptState: Accept state: sequence=50794 round=73
2022-06-01T12:53:43.033Z [INFO]  polygon.consensus.ibft: current snapshot: validators=3
2022-06-01T12:53:43.033Z [INFO]  polygon.consensus.ibft.acceptState: we are the proposer: block=50794
2022-06-01T12:53:46.812Z [INFO]  polygon.consensus.ibft: state change: new=ValidateState
2022-06-01T12:53:47.433Z [INFO]  polygon.consensus.ibft: state change: new=CommitState
2022-06-01T12:53:47.433Z [INFO]  polygon.blockchain: write block: num=50793 parent=0x3f1d5c6a0ac597bc55c70d9bb3fb3d085e3e91880b919dfd06cd674a281ad3a1
2022-06-01T12:53:47.435Z [INFO]  polygon.blockchain: new block: number=50793 hash=0x15c9ceb72381fd0c62e5fc44fb82525a843509adf9a4dae0f3871240b61282fd txns=0 generation_time_in_seconds=2
2022-06-01T12:53:47.435Z [INFO]  polygon.consensus.ibft: block committed: sequence=50794 hash=0x15c9ceb72381fd0c62e5fc44fb82525a843509adf9a4dae0f3871240b61282fd validators=3 rounds=73 committed=3
2022-06-01T12:53:47.439Z [INFO]  polygon.consensus.ibft: state change: new=AcceptState
2022-06-01T12:53:47.439Z [INFO]  polygon.consensus.ibft.acceptState: Accept state: sequence=50794 round=1
2022-06-01T12:53:47.439Z [INFO]  polygon.consensus.ibft: current snapshot: validators=3
2022-06-01T12:53:47.439Z [INFO]  polygon.consensus.ibft.acceptState: we are the proposer: block=50794
2022-06-01T12:53:47.440Z [INFO]  polygon.consensus.ibft: executed txns: failed =0 successful=0 remaining in pool=0
2022-06-01T12:53:47.457Z [INFO]  polygon.network: Peer disconnected: id=16Uiu2HAkuV6dvZgwUhwd9f7QmBh2Yyd1b2WgweiJ22RcSLqstkzV
2022-06-01T12:53:47.457Z [INFO]  polygon.network: Peer disconnected: id=16Uiu2HAm2xjh3zJ3vc2gEZRQtWp9V6DYZKRUVxKWzUVJoXVAKQjN
2022-06-01T12:53:47.457Z [INFO]  polygon.network: Peer disconnected: id=16Uiu2HAmBma6STKWCwVi3znTAYhVDv9d4dv3uFYGgtxaaoQzsTER
2022-06-01T12:53:47.457Z [INFO]  polygon.network: Peer disconnected: id=16Uiu2HAm6qozetaiNQzr7PVC2TgVpSNbF3NeYYwsAPaNp4TdnPoa
2022-06-01T12:53:47.457Z [INFO]  polygon.network: Peer disconnected: id=16Uiu2HAm8cLdMikNtX2hAqUKvqkeBHdrLCJ6y9SciJD8u2BdJMYm
2022-06-01T12:53:47.458Z [INFO]  polygon.network: Peer disconnected: id=16Uiu2HAmSF2bywVXVNxsmzoQWsHX17EeEbMmFWUCYg4VZiiPvQc8
2022-06-01T12:53:47.457Z [INFO]  polygon.network: Peer disconnected: id=16Uiu2HAmDHxTENhfnv2dYbMDKSKBEXzFjwpm4H15AxU4oUQunxS7
2022-06-01T12:53:47.458Z [INFO]  polygon.network: Peer disconnected: id=16Uiu2HAm5CCs3jedQMXces8pRcdCAwNGAd6XhVknoc4gdE4QYLJp
2022-06-01T12:53:47.458Z [INFO]  polygon.network: Peer disconnected: id=16Uiu2HAmPBCAzF6H66VnnpzneM6FBj1S1q7qoo1RNCwDzbcN6xG8
2022-06-01T12:53:47.723Z [INFO]  polygon: Data dir: path=/data/etm3test/data/node7
2022-06-01T12:53:47.776Z [INFO]  polygon.blockchain: Current header: hash=0x15c9ceb72381fd0c62e5fc44fb82525a843509adf9a4dae0f3871240b61282fd number=50793
2022-06-01T12:53:47.776Z [INFO]  polygon.blockchain: genesis: hash=0x3dab7cca87683489491589093774adfd59cf15a441359a32655af47895cce4b5
2022-06-01T12:53:48.390Z [INFO]  polygon.jsonrpc: http server started: addr=<IP_ADDRESS>:30002
2022-06-01T12:53:48.566Z [INFO]  polygon.consensus.ibft: validator key: addr=0xb1bb5DE2EA0F96ebeCF7f2d3A31E5f2B787E46A9
2022-06-01T12:53:48.566Z [INFO]  polygon: GRPC server running: addr=<IP_ADDRESS>:30000
2022-06-01T12:53:48.566Z [INFO]  polygon.network: LibP2P server running: addr=/ip4/<IP_ADDRESS>/tcp/30001/p2p/16Uiu2HAmK2QW6pecRJapfDY441scfT6gR4sg9wUgoZrQnoCq52wZ
2022-06-01T12:53:48.566Z [INFO]  polygon.consensus.ibft: state change: new=SyncState
2022-06-01T12:53:48.566Z [INFO]  polygon.consensus.ibft: state change: new=AcceptState
2022-06-01T12:53:48.566Z [INFO]  polygon.consensus.ibft.acceptState: Accept state: sequence=50794 round=1

Proposed solution
maybe in the case , the validators should step in sync state

Hey @xingxinglian,
Which commit hash are you running on from the develop branch?

@zivkovicmilos   I use the commit  8b85d687bc964109cd7935ef62a1e503e47a2fe9  ,  May 20

@xingxinglian
Got it, are you able to reproduce this problem with the latest commit?
We've added mechanisms in place that will prevent this kind of situation from occurring:
https://github.com/0xPolygon/polygon-edge/commit/06dc1551f58df081d41e0fd3e68233d8312b5cb0

Hey @xingxinglian,
There are several things that prevent it, actually.
One of the most obvious ones is that we've added improved block verification that will not cause your network to get confused when irregular blocks are proposed. This has been resolved and is live on the develop branch.
The other major thing that caused this sort of behavior is bad unlocking mechanisms that are in place in the current IBFT implementation. We've since resolved this in an open PR.
Let me know if you still experience these problems after you've pulled the latest develop changes 🙏
Also, please make sure your nodes are actually online and connected.

@zivkovicmilos Facing same issue I tried with latest release (v0.4.1) which has commit 06dc155 and even tried to setup freshly.
Here are my working logs for TESTING:
export GOPROXY=direct
go install<EMAIL_ADDRESS>#earlier tried with @develop, had the same issue

$ polygon-edge secrets init --data-dir test-chain-1

[SECRETS INIT]
Public key (address) = 0x27cA47569ab07408dd17Ef4C86D3aD7552f928DE
Node ID              = 16Uiu2HAm8phRNSM2q5ocJGhN6GLbtAbkcHj5foCVBvco76HqesLd

$ polygon-edge secrets init --data-dir test-chain-2

[SECRETS INIT]
Public key (address) = 0xD3FE2496eA30862303B30726ACFD69F96B9011F7
Node ID              = 16Uiu2HAkxDrmdxg8s5fUy47eDX6RRoAZhZzyVFCqzsFd2eurwNay

$ polygon-edge secrets init --data-dir test-chain-3

[SECRETS INIT]
Public key (address) = 0xCD29703Cae7096ddDd3FfB1592ED103b7939F8e6
Node ID              = 16Uiu2HAkzQHFomADnWfhJTBV1RnECCTTqJiqawixjqEQcK2SUpY1

$ polygon-edge secrets init --data-dir test-chain-4

[SECRETS INIT]
Public key (address) = 0xa1523656555B1c9F833B789764864E56aF08A631
Node ID              = 16Uiu2HAmNK1HC8cVziUWd7sjt3rmxGPHh1iyPUdmhXxSvvC8dunS

$ polygon-edge genesis --consensus ibft --ibft-validators-prefix-path test-chain- --bootnode /ip4/<IP_ADDRESS>/tcp/10001/p2p/16Uiu2HAm8phRNSM2q5ocJGhN6GLbtAbkcHj5foCVBvco76HqesLd --bootnode /ip4/<IP_ADDRESS>/tcp/20001/p2p/16Uiu2HAkxDrmdxg8s5fUy47eDX6RRoAZhZzyVFCqzsFd2eurwNay

$ polygon-edge server --data-dir ./test-chain-1 --chain genesis.json --grpc-address :10000 --libp2p :10001 --jsonrpc :10002 --seal
$ polygon-edge server --data-dir ./test-chain-2 --chain genesis.json --grpc-address :20000 --libp2p :20001 --jsonrpc :20002 --seal

Logs:

NODE 1:

$ polygon-edge server --data-dir ./test-chain-1 --chain genesis.json --grpc-address :10000 --libp2p :10001 --jsonrpc :10002 --seal

2022-06-09T05:08:17.495Z [INFO]  polygon: Data dir: path=./test-chain-1
2022-06-09T05:08:17.528Z [INFO]  polygon.blockchain: genesis: hash=0x200fa3735f1ab4101ffbd00fb246f6af97fd8432cc54cdae0239316e8a29bd1d
2022-06-09T05:08:17.528Z [INFO]  polygon.jsonrpc: http server started: addr=<IP_ADDRESS>:10002
2022-06-09T05:08:17.529Z [INFO]  polygon.consensus.ibft: validator key: addr=0x27cA47569ab07408dd17Ef4C86D3aD7552f928DE
2022-06-09T05:08:17.529Z [INFO]  polygon: GRPC server running: addr=<IP_ADDRESS>:10000
2022-06-09T05:08:17.529Z [INFO]  polygon.network: LibP2P server running: addr=/ip4/<IP_ADDRESS>/tcp/10001/p2p/16Uiu2HAm8phRNSM2q5ocJGhN6GLbtAbkcHj5foCVBvco76HqesLd
2022-06-09T05:08:17.529Z [INFO]  polygon.network: Omitting bootnode with same ID as host: id=16Uiu2HAm8phRNSM2q5ocJGhN6GLbtAbkcHj5foCVBvco76HqesLd
2022-06-09T05:08:17.529Z [INFO]  polygon.consensus.ibft: state change: new=SyncState
2022-06-09T05:08:17.529Z [INFO]  polygon.consensus.ibft: state change: new=AcceptState
2022-06-09T05:08:17.529Z [INFO]  polygon.consensus.ibft.acceptState: Accept state: sequence=1 round=1
2022-06-09T05:08:17.529Z [INFO]  polygon.consensus.ibft: current snapshot: validators=4 votes=0
2022-06-09T05:08:17.529Z [INFO]  polygon.consensus.ibft.acceptState: we are the proposer: block=1
2022-06-09T05:08:17.529Z [INFO]  polygon.consensus.ibft: executed txns: failed =0 successful=0 remaining in pool=0
2022-06-09T05:08:17.530Z [INFO]  polygon.consensus.ibft: build block: number=1 txns=0
2022-06-09T05:08:17.532Z [INFO]  polygon.consensus.ibft: state change: new=ValidateState
2022-06-09T05:08:27.533Z [INFO]  polygon.consensus.ibft: unable to read new message from the message queue: timeout expired=10s
2022-06-09T05:08:27.533Z [INFO]  polygon.consensus.ibft: state change: new=RoundChangeState
2022-06-09T05:08:39.535Z [INFO]  polygon.consensus.ibft: unable to read new message from the message queue: timeout expired=12s
2022-06-09T05:08:53.536Z [INFO]  polygon.consensus.ibft: unable to read new message from the message queue: timeout expired=14s
2022-06-09T05:09:11.537Z [INFO]  polygon.consensus.ibft: unable to read new message from the message queue: timeout expired=18s
2022-06-09T05:09:17.530Z [ERROR] polygon.network.discovery: Unable to execute bootnode peer discovery, %w: EXTRA_VALUE_AT_END="unable to create new discovery client connection, peer disconnected before the discovery client was initialized"
2022-06-09T05:09:35.118Z [INFO]  polygon.network: Peer connected: id=16Uiu2HAkxDrmdxg8s5fUy47eDX6RRoAZhZzyVFCqzsFd2eurwNay
2022-06-09T05:09:37.539Z [INFO]  polygon.consensus.ibft: unable to read new message from the message queue: timeout expired=26s
2022-06-09T05:10:19.540Z [INFO]  polygon.consensus.ibft: unable to read new message from the message queue: timeout expired=42s
2022-06-09T05:11:33.540Z [INFO]  polygon.consensus.ibft: unable to read new message from the message queue: timeout expired=1m14s

NODE 2:

$ polygon-edge server --data-dir ./test-chain-2 --chain genesis.json --grpc-address :20000 --libp2p :20001 --jsonrpc :20002 --seal

2022-06-09T05:09:35.077Z [INFO]  polygon: Data dir: path=./test-chain-2
2022-06-09T05:09:35.113Z [INFO]  polygon.blockchain: genesis: hash=0x200fa3735f1ab4101ffbd00fb246f6af97fd8432cc54cdae0239316e8a29bd1d
2022-06-09T05:09:35.114Z [INFO]  polygon.jsonrpc: http server started: addr=<IP_ADDRESS>:20002
2022-06-09T05:09:35.114Z [INFO]  polygon.consensus.ibft: validator key: addr=0xD3FE2496eA30862303B30726ACFD69F96B9011F7
2022-06-09T05:09:35.114Z [INFO]  polygon: GRPC server running: addr=<IP_ADDRESS>:20000
2022-06-09T05:09:35.114Z [INFO]  polygon.network: LibP2P server running: addr=/ip4/<IP_ADDRESS>/tcp/20001/p2p/16Uiu2HAkxDrmdxg8s5fUy47eDX6RRoAZhZzyVFCqzsFd2eurwNay
2022-06-09T05:09:35.114Z [INFO]  polygon.consensus.ibft: state change: new=SyncState
2022-06-09T05:09:35.114Z [INFO]  polygon.consensus.ibft: state change: new=AcceptState
2022-06-09T05:09:35.114Z [INFO]  polygon.consensus.ibft.acceptState: Accept state: sequence=1 round=1
2022-06-09T05:09:35.114Z [INFO]  polygon.consensus.ibft: current snapshot: validators=4 votes=0
2022-06-09T05:09:35.114Z [INFO]  polygon.consensus.ibft: proposer calculated: proposer=0x27cA47569ab07408dd17Ef4C86D3aD7552f928DE block=1
2022-06-09T05:09:35.114Z [INFO]  polygon.network: Omitting bootnode with same ID as host: id=16Uiu2HAkxDrmdxg8s5fUy47eDX6RRoAZhZzyVFCqzsFd2eurwNay
2022-06-09T05:09:35.118Z [INFO]  polygon.network: Peer connected: id=16Uiu2HAm8phRNSM2q5ocJGhN6GLbtAbkcHj5foCVBvco76HqesLd
2022-06-09T05:09:45.114Z [INFO]  polygon.consensus.ibft: unable to read new message from the message queue: timeout expired=10s
2022-06-09T05:09:45.114Z [INFO]  polygon.consensus.ibft: state change: new=RoundChangeState
2022-06-09T05:09:57.116Z [INFO]  polygon.consensus.ibft: unable to read new message from the message queue: timeout expired=12s
2022-06-09T05:10:11.117Z [INFO]  polygon.consensus.ibft: unable to read new message from the message queue: timeout expired=14s
2022-06-09T05:10:37.542Z [INFO]  polygon.consensus.ibft: unable to read new message from the message queue: timeout expired=18s
2022-06-09T05:11:03.543Z [INFO]  polygon.consensus.ibft: unable to read new message from the message queue: timeout expired=26s
2022-06-09T05:12:15.542Z [INFO]  polygon.consensus.ibft: unable to read new message from the message queue: timeout expired=42s
2022-06-09T05:13:29.544Z [INFO]  polygon.consensus.ibft: unable to read new message from the message queue: timeout expired=1m14s

Hi @spunkyshooter ,
Are you running only 2 nodes out of 4 ?
Can we get the logs from all nodes ?
Thanks

Yes, I ran only 2 out of 4 nodes and noticed the issue.
I tried now with all 4 nodes, seems to be working fine after some wait time. Thanks
$ polygon-edge server --data-dir ./test-chain-1 --chain genesis.json --grpc-address :10000 --libp2p :10001 --jsonrpc :10002 --seal

2022-06-09T10:16:36.917Z [INFO]  polygon: Data dir: path=./test-chain-1
2022-06-09T10:16:36.954Z [INFO]  polygon.blockchain: Current header: hash=0x200fa3735f1ab4101ffbd00fb246f6af97fd8432cc54cdae0239316e8a29bd1d number=0
2022-06-09T10:16:36.954Z [INFO]  polygon.blockchain: genesis: hash=0x200fa3735f1ab4101ffbd00fb246f6af97fd8432cc54cdae0239316e8a29bd1d
2022-06-09T10:16:36.955Z [INFO]  polygon.jsonrpc: http server started: addr=<IP_ADDRESS>:10002
2022-06-09T10:16:36.955Z [INFO]  polygon.consensus.ibft: validator key: addr=0x27cA47569ab07408dd17Ef4C86D3aD7552f928DE
2022-06-09T10:16:36.955Z [INFO]  polygon: GRPC server running: addr=<IP_ADDRESS>:10000
2022-06-09T10:16:36.955Z [INFO]  polygon.network: LibP2P server running: addr=/ip4/<IP_ADDRESS>/tcp/10001/p2p/16Uiu2HAm8phRNSM2q5ocJGhN6GLbtAbkcHj5foCVBvco76HqesLd
2022-06-09T10:16:36.955Z [INFO]  polygon.consensus.ibft: state change: new=SyncState
2022-06-09T10:16:36.955Z [INFO]  polygon.consensus.ibft: state change: new=AcceptState
2022-06-09T10:16:36.955Z [INFO]  polygon.consensus.ibft.acceptState: Accept state: sequence=1 round=1
2022-06-09T10:16:36.955Z [INFO]  polygon.consensus.ibft: current snapshot: validators=4 votes=0
2022-06-09T10:16:36.955Z [INFO]  polygon.consensus.ibft.acceptState: we are the proposer: block=1
2022-06-09T10:16:36.955Z [INFO]  polygon.consensus.ibft: executed txns: failed =0 successful=0 remaining in pool=0
2022-06-09T10:16:36.955Z [INFO]  polygon.network: Omitting bootnode with same ID as host: id=16Uiu2HAm8phRNSM2q5ocJGhN6GLbtAbkcHj5foCVBvco76HqesLd
2022-06-09T10:16:36.955Z [INFO]  polygon.consensus.ibft: build block: number=1 txns=0
2022-06-09T10:16:36.957Z [INFO]  polygon.consensus.ibft: state change: new=ValidateState
2022-06-09T10:16:46.958Z [INFO]  polygon.consensus.ibft: unable to read new message from the message queue: timeout expired=10s
2022-06-09T10:16:46.958Z [INFO]  polygon.consensus.ibft: state change: new=RoundChangeState
2022-06-09T10:16:55.247Z [INFO]  polygon.network: Peer connected: id=16Uiu2HAkxDrmdxg8s5fUy47eDX6RRoAZhZzyVFCqzsFd2eurwNay
2022-06-09T10:16:58.959Z [INFO]  polygon.consensus.ibft: unable to read new message from the message queue: timeout expired=12s
2022-06-09T10:17:12.961Z [INFO]  polygon.consensus.ibft: unable to read new message from the message queue: timeout expired=14s
2022-06-09T10:17:30.963Z [INFO]  polygon.consensus.ibft: unable to read new message from the message queue: timeout expired=18s
2022-06-09T10:17:39.497Z [INFO]  polygon.network: Peer connected: id=16Uiu2HAkzQHFomADnWfhJTBV1RnECCTTqJiqawixjqEQcK2SUpY1
2022-06-09T10:17:56.964Z [INFO]  polygon.consensus.ibft: unable to read new message from the message queue: timeout expired=26s
2022-06-09T10:18:20.209Z [INFO]  polygon.network: Peer connected: id=16Uiu2HAmNK1HC8cVziUWd7sjt3rmxGPHh1iyPUdmhXxSvvC8dunS
2022-06-09T10:18:38.965Z [INFO]  polygon.consensus.ibft: unable to read new message from the message queue: timeout expired=42s
2022-06-09T10:19:52.967Z [INFO]  polygon.consensus.ibft: unable to read new message from the message queue: timeout expired=1m14s
2022-06-09T10:19:52.967Z [INFO]  polygon.consensus.ibft: state change: new=SyncState
2022-06-09T10:19:52.969Z [INFO]  polygon.blockchain: write block: num=1 parent=0x200fa3735f1ab4101ffbd00fb246f6af97fd8432cc54cdae0239316e8a29bd1d
2022-06-09T10:19:52.969Z [INFO]  polygon.blockchain: new block: number=1 hash=0x117756ab789a5ac7965582bdbecf025293f519238cfa81a17c8ba8933a142d16 txns=0 generation_time_in_seconds=1654769962
2022-06-09T10:19:52.971Z [INFO]  polygon.blockchain: write block: num=2 parent=0x117756ab789a5ac7965582bdbecf025293f519238cfa81a17c8ba8933a142d16
2022-06-09T10:19:52.971Z [INFO]  polygon.blockchain: new block: number=2 hash=0x23763477a78b0eb660e0da083fb67906d57c0b235247f69117d567d59fb5ff65 txns=0 generation_time_in_seconds=2
2022-06-09T10:19:52.973Z [INFO]  polygon.blockchain: write block: num=3 parent=0x23763477a78b0eb660e0da083fb67906d57c0b235247f69117d567d59fb5ff65
2022-06-09T10:19:52.973Z [INFO]  polygon.blockchain: new block: number=3 hash=0x0afc76c60fb424f076a303ccda9c3594a01cc366ffb4f6d1b332fb61e6777010 txns=0 generation_time_in_seconds=2
2022-06-09T10:19:52.974Z [INFO]  polygon.blockchain: write block: num=4 parent=0x0afc76c60fb424f076a303ccda9c3594a01cc366ffb4f6d1b332fb61e6777010
2022-06-09T10:19:52.975Z [INFO]  polygon.blockchain: new block: number=4 hash=0xd70d335df3e9903916bac4b68edac68ed994af8389943c511044496bee84417d txns=0 generation_time_in_seconds=10
2022-06-09T10:19:52.976Z [INFO]  polygon.blockchain: write block: num=5 parent=0xd70d335df3e9903916bac4b68edac68ed994af8389943c511044496bee84417d
2022-06-09T10:19:52.976Z [INFO]  polygon.blockchain: new block: number=5 hash=0xe07f8d50176b5041efa89912ac6ba0ba5094d1b1f321bb259bf3d861f7fd42ad txns=0 generation_time_in_seconds=2
2022-06-09T10:19:52.978Z [INFO]  polygon.blockchain: write block: num=6 parent=0xe07f8d50176b5041efa89912ac6ba0ba5094d1b1f321bb259bf3d861f7fd42ad
2022-06-09T10:19:52.978Z [INFO]  polygon.blockchain: new block: number=6 hash=0x8a581bafdd6bb46ff70f4c6e40de21553713f49688ff065ce3d0f64657918f60 txns=0 generation_time_in_seconds=2
2022-06-09T10:19:52.979Z [INFO]  polygon.blockchain: write block: num=7 parent=0x8a581bafdd6bb46ff70f4c6e40de21553713f49688ff065ce3d0f64657918f60
2022-06-09T10:19:52.979Z [INFO]  polygon.blockchain: new block: number=7 hash=0x75f40d561ca1d48b4f3acebfdc07c4deca38ba000ceaefb5d407b16dea4d7cad txns=0 generation_time_in_seconds=10
2022-06-09T10:19:52.981Z [INFO]  polygon.blockchain: write block: num=8 parent=0x75f40d561ca1d48b4f3acebfdc07c4deca38ba000ceaefb5d407b16dea4d7cad
2022-06-09T10:19:52.981Z [INFO]  polygon.blockchain: new block: number=8 hash=0x0056b72309a965d492b61c4f55f10347a58d4940fab08bc3db87ac0666da5124 txns=0 generation_time_in_seconds=2
2022-06-09T10:19:52.981Z [INFO]  polygon.consensus.ibft: state change: new=AcceptState
2022-06-09T10:19:52.981Z [INFO]  polygon.consensus.ibft.acceptState: Accept state: sequence=9 round=1
2022-06-09T10:19:52.981Z [INFO]  polygon.consensus.ibft: current snapshot: validators=4 votes=0
2022-06-09T10:19:52.981Z [INFO]  polygon.consensus.ibft: proposer calculated: proposer=0xa1523656555B1c9F833B789764864E56aF08A631 block=9
2022-06-09T10:19:54.003Z [INFO]  polygon.consensus.ibft: state change: new=ValidateState
2022-06-09T10:19:54.007Z [INFO]  polygon.consensus.ibft: state change: new=CommitState
2022-06-09T10:19:54.008Z [INFO]  polygon.blockchain: write block: num=9 parent=0x0056b72309a965d492b61c4f55f10347a58d4940fab08bc3db87ac0666da5124
2022-06-09T10:19:54.009Z [INFO]  polygon.blockchain: new block: number=9 hash=0xd9e22d6e6bef8559785bd4733ec7de9dcad606de71f4a14d6f1f9857fae0f276 txns=0 generation_time_in_seconds=2
2022-06-09T10:19:54.009Z [INFO]  polygon.consensus.ibft: block committed: sequence=9 hash=0xd9e22d6e6bef8559785bd4733ec7de9dcad606de71f4a14d6f1f9857fae0f276 validators=4 rounds=1 committed=3
2022-06-09T10:19:54.009Z [INFO]  polygon.consensus.ibft: state change: new=AcceptState

@spunkyshooter Great 🥇
There needs to be at least 4 validators active at minimum in order for the blockchain network to run properly.
If there are less than 4 ( actually there can be 3 validators per IBFT spec ) there will be RoundChangeState in the logs and depending on the number of active validators the chain won't start / will halt .
I'll close this issue for now. Feel free to open a new issue if you face any more problems.


Is this project active?

Looking at the commit history, I couldn't help but wonder.

Just discovered this project and sadly, from the issue #687, bad news came out.
We will just use opencv.


Conveyor belt not working and lava not working properly..

So I received my Twang32 prebuilt from you except for the LED wire. We tested it out using two APA102's. I adjusted brightness, sound volume, attack sensitivity, and 288 LED's. It was working fine. My friends had a blast with it!
I took it home and played a game or two and it was working fine. However, later that night I came back and the conveyor belt did not light up (invisible/lights off) but it still functions properly (pushes you backwards). The lava doesn't look like it used to. Instead of twinkling when it's safe to cross, it does not light up (invisible/lights off) but still functions properly (kills me).
Any ideas what is wrong here?
(Also, side note.. how come my lives (and your video on YouTube) show the lives on the bottom next to the controller, but this guy https://www.youtube.com/watch?v=pCQsKuKeDGg his is at the top of the LED strip)

PS - I  have already tried recompiling and I have 2 more LED strips I tested. Same issue.. no conveyor or lava.

Try increasing the brightness to full, just as a test.

Already figured it out. I wish I would have figured it out before posting a
bug. 35 brightness shows.. I'm not sure the exact number but 25 definitely
doesn't show.
I was playing in the house and didn't wanna bother anyone is why I had it
down.
On Thu, Oct 24, 2019, 7:44 PM bdring<EMAIL_ADDRESS>wrote:

Try increasing the brightness to full, just as a test.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/bdring/TWANG32/issues/6?email_source=notifications&email_token=ACLNJVIH25J34UTWEKXUGT3QQIXNVA5CNFSM4JE4VZ6KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECGX63A#issuecomment-546144108,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACLNJVO5LZI7DSND4NSPGJDQQIXNVANCNFSM4JE4VZ6A
.

I have seen that on WS2812 strips, but not on APA102 strips, so i guessed that might be it. The brightness is a global thing and some of the lighter items drop out first.
In config.h you will see some compensation values for the strip types. These were chosen for the strips I tested. You could tweak those values if need be.

Also, you will probably never be able to use the full range of the brightness on all strip types. Something will drop out first.


Improved documents for reference

Just renaming the text in the README isn't sufficient enough. If you're planning to improve the documentation, you should include more information such as a proper description, packages used, their versions and more.


Clean up references to optBoolToOptJsBoolean since that is the identity function

Cleaning up bool-Js.boolean conversion artifacts.

Thanks for those PRs @sgny is there a chance you could submit them together (and possibly squash the commits)?

Sure, I'll take care of that later today.


Add test for pgmeta.upsertStmt

Extended the unit tests to test the helper method - upsertStmt

Fixes #222

@prestonvasquez I have raised a PR for this change. Can you help in a review?

@amoghrajesh There are some linting errors.
Ignore this one though: (lll). Would you mind adding that to gidari/.golangci.yml to be excluded from test rules: https://github.com/alpine-hodler/gidari/blob/main/.golangci.yml#L41

@prestonvasquez what should i add to the lint.yml file?
Could you help me with that?

@prestonvasquez what should i add to the lint.yml file? Could you help me with that?

Sure! We want to add lll to the exclude-rules for testing:
issues:
  exclude-rules:
    # Exclude some linters from running on tests files
    - path: _test\.go
      linters:
        # Tests are allowed to have complexity.
        - cyclop
        - gocognit
        - funlen
        - gochecknoglobals
        - goerr113
        - maintidx
        - lll # <-- We want to add this line

@prestonvasquez Oh you meant lll, i can add it. I am still having other issues, need some help.

This one mainly
golangci-lint run --fix
internal/storage/postgres_test.go:134:3: return both the `nil` error and invalid value: use a sentinel error instead (nilnil)
                return nil, nil

Thank you for this contribution @amoghrajesh ! 🎉


Added hint in Contribute-Readme

Intellij users needs the Eclipse Code Formatter Plugin to import custom formatter xml

@RudiKlassen thanks for taking the time to improve this !


Added a new locale (Igbo Language) to moment.js

@bukkysos you should add you file under src/locale/xx.js, don't modify locale/**. Also use the correct locale designation (2 letters + 2 letter country in most cases).

The correct code is ig https://en.wikipedia.org/wiki/Igbo_language ISO 639-1

I just noticed you haven't added a test file. All locales have one -- have a look under src/test/locale/*.js

@bukkysos any update?

You need to name the locale file ig.js and place it under src/locale/ig.js. Also tests go under src/test/locale/ig.js. You have copied the locale code for the test file... this is not how it works. Examine another locale test file for inspiration.
Closing for now, feel free to re-open if you fix the above


[drone] multiple anchor references fail

Steps to reproduce

Create example.ymlkind: pipeline
type: docker
name: default

anchors:
  - &first_anchor
    FIRST_VAR: value
  - &second_anchor
    SECOND_VAR: value

steps:
  - name: hello
    image: busybox
    environment:
      <<: *first_anchor
      <<: *second_anchor
    commands:
    - echo hello

trigger:
  branch:
  - main

Run go-convertgo-convert drone example.yml
2023/03/13 16:50:27 yaml: unmarshal errors:
  line 16: mapping key "<<" already defined at line 15

go-convert is using the latest version of go-yaml.  runner-go (drone) may be using a fork from buildkite.  we should be able to use just the buildkite fork in the drone package, but still use go-yaml for everything else.  cc @eoinmcafee00 can you take a look?

PR raised for this issue: https://github.com/drone/go-convert/pull/13 @bradrydzewski


Improve data export

We should now rely on the new export capability/tool in KDK (cf. https://github.com/kalisio/kdk/issues/787) to enhance some of the current exports, eg https://github.com/kalisio/crisis/blob/master/src/components/EventLogsList.vue#L48 & https://github.com/kalisio/crisis/blob/master/src/components/ArchivedEventsActivity.vue#L91.
We should also allow to export more data like members, groups, tags, ...

link to https://github.com/kalisio/kdk/issues/791

[ ] Members
[ ] Groups
[ ] Tags
[ ] Archived events
[ ] Event logs


keep app open in tray when window closed

Hey! Super useful plugin!
One value in having the tray icon is that if someone closes the window of the application (with the close button or command + q) the app will still appear in the tray and can be opened by clicking the tray icon. Is there a way to do this using the plugin?
Thanks!

Thanks @antler119 -- The issue is when they quit the app using a native way:

Do you know of any way to prevent those from closing the window/flutter app completely and instead just hiding the window?
Thanks!

on window you can try this
// flutter_window.cpp
LRESULT
FlutterWindow::MessageHandler(HWND hwnd,
                              UINT const message,
                              WPARAM const wparam,
                              LPARAM const lparam) noexcept {
  // Give Flutter, including plugins, an opportunity to handle window messages.
  if (flutter_controller_) {
    std::optional<LRESULT> result =
        flutter_controller_->HandleTopLevelWindowProc(hwnd, message, wparam,
                                                      lparam);
    if (result) {
      return *result;
    }
  }

  switch (message) {
    case WM_FONTCHANGE:
      flutter_controller_->engine()->ReloadSystemFonts();
      break;
    case WM_CLOSE: // add this
      return 0;
      break;
  }

  return Win32Window::MessageHandler(hwnd, message, wparam, lparam);
}

Amazing! instead of return 0, is there a way to explicitly hide the window?
Sorry for asking so many questions! I'm trying to migrate an app from electron to flutter

    case WM_CLOSE:
      ShowWindow(GetHandle(), SW_HIDE); // try this code
      return 0;
      break;

How about macOS?


Fix/wrong permissions for local snapshots

Description of change
When hornet reaches a checkpoint, the following error shows up in the hornet logs
2021-03-16T14:22:44Z	INFO	Snapshot	snapshot/local_snapshot.go:382	creating local snapshot for targetIndex 16764
2021-03-16T14:22:44Z	WARN	Snapshot	snapshot/plugin.go:196	mkdir snapshots/mainnet: permission denied: creating snapshot failed

A private tangle shouldn't sync up with the mainnet, but it's part of the database.
A path should be added to the local snapshots that hornet is taking (for recovery purpose when database file crashes). Permissions need to be given to the snapshots/private-tangle folder to write out the file. This problem shows up on the node, coo and spammer hence changes need to be made to the config files of this files.
Type of change
Bug fix (a non-breaking change which fixes an issue)
How the change has been tested
The snapshots/private-tangle folder permission were changed to enable hornet to write to the folder.
The config file for the  node, spammer and coo, in the snapshots section added the required path. Respectively.
After running the node, coo and spammer till the 100th milestone, the error vanished and instead we have the message
2021-03-19T12:18:42Z    INFO    Tangle  tangle/milestones.go:31 Valid milestone detected! Index: 101, Hash: MVQOKZDLAHYIKKZSHSNG9EMVTSDAL9BHIDGPPQBX9SFMWULACQTSOOWXRSZSJPCDUPUVJODNNNRPZB999
2021-03-19T12:18:42Z    INFO    Tangle  tangle/solidifier.go:394        Run solidity check for Milestone (101)...
2021-03-19T12:18:42Z    INFO    Tangle  tangle/solidifier.go:211        Solidifier finished: txs: 0, collect: 0s, solidity 0s, propagation: 0s, total: 0s
2021-03-19T12:18:42Z    INFO    Tangle  tangle/solidifier.go:449        Milestone confirmed (101): txsConfirmed: 4, txsValue: 0, txsZeroValue: 4, txsConflicting: 0, collect: 0s, total: 0s
2021-03-19T12:18:42Z    INFO    Tangle  tangle/solidifier.go:480        New solid milestone: 101, 0.07 TPS, 0.07 CTPS, 100.00% conf.rate
2021-03-19T12:18:42Z    INFO    Snapshot        snapshot/local_snapshot.go:382  creating local snapshot for targetIndex 51
2021-03-19T12:18:42Z    INFO    Snapshot        snapshot/local_snapshot.go:469  created local snapshot for target index 51 (sha256: 21df71b9354b1aabaea02c03218bc1a57f6f66742de1dfc78812c25e57fd1cd2), took 5.937165ms

And checking the snapshot folder we see the respective bin files listed

Change checklist

[x] I have performed a self-review of my own code

Hi, after this fix, I got a permission denied error by running ./private-tangle.sh start 16 on Ubuntu 18.04.

Generating an initial IOTA address holding all IOTAs...
Creating network "private-tangle" with the default driver
Creating hornet-private-net_address-generator_run ... done
./private-tangle.sh: line 237: ./snapshots/private-tangle/snapshot.csv: Permission denied

I have to use root to run it: sudo ./private-tangle.sh start 16

@CaixiangFan you are totally right, please review this patch https://github.com/iotaledger/one-click-tangle/pull/33


Installation Problems

I'm trying to follow your installation instructions and I'm having problems. First of all when I enter the osascript command into terminal I get back a "syntax error: A identifier can’t go after this identifier. (-2740)" message.
Also, when I go to the command pallette Install Packages is not listed in Sublime text v3 (build 3065).

Hi @paynoattn,
For Sublime Text, you'll want to install with Sublime Package Control. (the first set of instructions are for TextMate)
Follow the install instructions, then you can use the "Install Package" command in the Sublime command palette.

I can't see either the package listed

@tangorri Are you not seeing the package listed inside Sublime? or is there another problem you're running into?
https://packagecontrol.io/packages/Sass

@nathos I mean I cant find the package from sublime.
See

@tangorri Can you provide some details on your platform? (OS, OS version, Sublime Text version)
A clean Sublime Text 3 w/ Package Control on OS X displays this:

Sure, win8.1 pro, sublime text 3. not fresh install btw I may check next time I install st3


Increase or document environment branch reference limits

The baseref and headref fields on an environment in the database have a max length of 100. This can result in environments or pullrequests that have long branch refs failing to deploy with an obscure error.
https://github.com/uselagoon/lagoon/blob/1cf5c769be03f5b4d17ab1d8ea0ed9faf2a25102/services/api/database/migrations/20220908065119_initial_db.js#L79-L80
We should either increase this, or document these limits. We should also return an clearer error if these limits are exceeded, rather than when the SQL in performed.

It looks like github has a 255 char limit - including refs/heads/
so maybe we can change this - but should we also support longer environment names too - to accommodate it - or are we happy to truncate them when needed?
Context - making lots of db changes in https://github.com/uselagoon/lagoon/pull/3816 - so can accommodate these there if needed

so maybe we can change this - but should we also support longer environment names too - to accommodate it - or are we happy to truncate them when needed?

TLDR; Yeah, we can probably increase them to 255, but leave the environment name at 100.
Well we add some things into labels in resources, and labels in kubernetes have limits on the length of the value. If we were going to have any issues, it would be on the environment name after it has been modified, but this truncates the calculated name to 63 already (58+5, 5 being -hash).
Luckily, we put the unmodified values of branch/refs into annotations which can definitely support more than 255.
I don't think we do anything to the project name though, and this would suffer from a being greater than 63 thing, which I'm a bit surprised hasn't happened. We limit project names to 100 in the db


[6.3.0] Please ignore. This is for Automation testing

Forked from #233

Cherry-pick was attempted, but failed to push. Please check if the branch, cp233-6.3.0, exists
cc: @bazelbuild/triage


No files show when trying to open custom overlay.

The screenshots says it all, no files show up when attempting to import a custom overlay. I am using Linux Mint 18.1

Any idea why?

I have this problem as well, but on Mac. Can't figure out. Even replace all of the capital letters as lowercase letters in the .ovr file.

Sorry it took so long to get back on this—I'm trying out a fix and hopefully that'll get pushed out soon. ("Soon.")

Soon™

No problem, glad to hear a fix in on it's way.

(Thanks for the reminder!) I confirmed that my fix does work on my Linux machine, so this ticket should be good to close!

What was the fix?

Linux Mint here, the problem has not been solved.

File browser is Thunar.

This is the code change that fixed it for me: https://github.com/andrewsarnold/FlagMaker-2/commit/f6a495a9365f7f4d780b5f62f8499d2c66b4af73
It looks like you have the latest version, and it works on my vanilla Mint installation, so I wonder if Thunar is being problematic. But the file filter looks correct in your screenshot.

Well, if it works for you then it must be an issue entirely on my side. I can verify that I am using the latest version, but the bug persists through Thunar and Nautilius. Switching back and forth between the two installed java versions (8-oracle and 8-openjdk) proved fruitless as well. I will further test will alternative OSs.

Thanks for testing. Unfortunately I only have the one Linux machine to test on so this is very helpful!

@swoodmood Can you send a screenshot of the file explorer in that directory, so I can see a list of the files in it?

The issue isn't limited to Ubuntu based distros it seems. Im on a distro called Solus and im not seeing the files either.


🆕 Software Suggestion | LibreWolf

Basic Information
Name: LibreWolf
Category: Browsers → Browser Recommendations For Desktop
URL: https://librewolf-community.gitlab.io/docs/
Source Code: https://gitlab.com/librewolf-community/browser
Description
This project is an independent fork of Firefox, with the primary goals of privacy security and user freedom. It is the community run successor to LibreFox.
LibreWolf uses more than 500 privacy/security/performance settings, patches, LibreWolf-Addons (optional) and is designed to minimize data collection and telemetry as much as possible (updater, crashreporter and Firefox's integrated addons that don't respect privacy are removed).
Why I am making the suggestion
LibreWolf is a great alternative to Firefox for people who want great privacy and security without Mozilla bloating up their browser.
My connection with the software
I have no connection to the software.

[x] I will keep the issue up-to-date if something I have said changes or I remember a connection with the software.

I know there isn't another issue regarding LibreWolf but I'm sure it has already been discussed in the forum the reasons of why it wouldn't be listed. First and foremost it doesn't have an Android build which will make recommendations harder, it also doesn't have a Windows build which would make it unsuitable as of now (but I know they are working on it).
Then there's the fact that I feel all the "bloat" they remove are features or options which can be easily disabled in the settings or in about:config, and if you think about Firefox being used by regular Janes and Joes it makes sense for them to be there, I'm sure my mother doesn't care about that safe browsing connecting to Google's list of safe websites, and I prefer that since at least there's a layer of protection. Firefox couldn't create something designed only for the most private conscious individuals, it would go to ruin, which takes me to another point.
I think it would be the best scenario if Privacy Tools would lead as many people as possible towards using Firefox, I really like forks like this or Waterfox, or whatever other crazy stuff there is, but if Mozilla dies all that dies, too, there's no way any kind of group of individuals or whatever that will keep that alive, and even if it's possible it will just make things harder. You need a lot of time and money to do something like this, and we should help them.
Lastly, there's the fact of whether or not they are able to maintain LibreWolf up to date. I'm not saying they don't do it, just that it is important that they do it, not for a couple of months, but for a long period of time, constantly.

I know there isn't another issue regarding LibreWolf but I'm sure it has already been discussed in the forum the reasons of why it wouldn't be listed. First and foremost it doesn't have an Android build which will make recommendations harder, it also doesn't have a Windows build which would make it unsuitable as of now (but I know they are working on it).
Then there's the fact that I feel all the "bloat" they remove are features or options which can be easily disabled in the settings or in about:config, and if you think about Firefox being used by regular Janes and Joes it makes sense for them to be there, I'm sure my mother doesn't care about that safe browsing connecting to Google's list of safe websites, and I prefer that since at least there's a layer of protection. Firefox couldn't create something designed only for the most private conscious individuals, it would go to ruin, which takes me to another point.
I think it would be the best scenario if Privacy Tools would lead as many people as possible towards using Firefox, I really like forks like this or Waterfox, or whatever other crazy stuff there is, but if Mozilla dies all that dies, too, there's no way any kind of group of individuals or whatever that will keep that alive, and even if it's possible it will just make things harder. You need a lot of time and money to do something like this, and we should help them.
Lastly, there's the fact of whether or not they are able to maintain LibreWolf up to date. I'm not saying they don't do it, just that it is important that they do it, not for a couple of months, but for a long period of time, constantly.

I see what you mean about Windows builds marked as "coming soon".

Janes and Joes it makes sense for them to be there, I'm sure my mother doesn't care about that safe browsing connecting to Google's list of safe websites

Well, this site is for privacy tools. I doubt the average Jane, Joe or Mom would even use Firefox for privacy in the first place. If LibreWolf supported Windows, it would be a good addition. I'm closing this issue but if they add Windows support, I'll reopen it.

I see what you mean about Windows builds marked as "coming soon".

Janes and Joes it makes sense for them to be there, I'm sure my mother doesn't care about that safe browsing connecting to Google's list of safe websites

Well, this site is for privacy tools. I doubt the average Jane, Joe or Mom would even use Firefox for privacy in the first place. If LibreWolf supported Windows, it would be a good addition. I'm closing this issue but if they add Windows support, I'll reopen it.

I see what you mean about Windows builds marked as "coming soon".

Janes and Joes it makes sense for them to be there, I'm sure my mother doesn't care about that safe browsing connecting to Google's list of safe websites

Well, this site is for privacy tools. I doubt the average Jane, Joe or Mom would even use Firefox for privacy in the first place. If LibreWolf supported Windows, it would be a good addition. I'm closing this issue but if they add Windows support, I'll reopen it.

Well, Privacy Tools is not designed for power users only, the list tools and you decided where it's enough. Still, this is my opinion, I don't take any decisions, just giving my two cents, maybe the admins decide to list it.

I see what you mean about Windows builds marked as "coming soon".

Janes and Joes it makes sense for them to be there, I'm sure my mother doesn't care about that safe browsing connecting to Google's list of safe websites

Well, this site is for privacy tools. I doubt the average Jane, Joe or Mom would even use Firefox for privacy in the first place. If LibreWolf supported Windows, it would be a good addition. I'm closing this issue but if they add Windows support, I'll reopen it.

Well, Privacy Tools is not designed for power users only, the list tools and you decided where it's enough. Still, this is my opinion, I don't take any decisions, just giving my two cents, maybe the admins decide to list it.

I don't think they can list it until it has Windows support.

I don't think they can list it until it has Windows support.

experimental windows support is available, don't know if they added that recently

Thanks! I'm reopening this issue now that Windows builds are available.

Just to clarify: we closed this issue because it is notoriously difficult to maintain a browser without a dedicated team.  Hence, we don't recommend LibreWolf, or any other, similar, Firefox fork.

and it's configuration is a complete mess

outdated prefs since day one
conflicting prefs
prefs that reduce security
overkill on prefs and redundancy (making it harder to revert)
locking prefs (unnecessary)
failure to even keep up with prefs changes (and yet they still claim it uses the "ghacks" user.js)
no clear strategy of what they are doing and way too many wishwashy conflicts

which takes precedence: security or privacy?
what about compat

This harks back to initika's compilation in the old librefox: where he basically scraped together every single pref he could find under the sun, merged them all into a single file, and set them all to break everything possible
The whole thing seems to be, and at least attracts all the crazies, about how to beat the jewgle femto mozilla botnet into submission and be based.

I may sound harsh, and I have zero love for Librewolf, but it's a solution looking for a problem: they all are.

https://librewolf-community.gitlab.io/docs/

Utter BS. PK's is ~40% deprecated items and basically hasn't been touched in 3+ years. Arkenfox's updates have been practically ignored

https://gitlab.com/librewolf-community/settings/-/issues/21
^^ that's it: last time they looked was FF75
to be fair, there have probably been a few other changes, but it certainly isn't from arkenfox, and it certainly isn't with any coherent plan (or schedule) in mind

/rant : pisses me off that they proudly mention arkenfox (or rather ghacks) as some sort of approval stamp - it's not.

In fact, @shreyasminocha - please remove any reference to arkenfox (ghacks) from your documentation: you're not using the user.js as is, so I do not care about any license

Hi @Thorin-Oakenpants , osx maintainer of librewolf here, but I will mainly speak for myself in this comment.
I want to start this by saying that I value your opinion and I respect you and your work a lot: I've used arkenfox's user.js for a long time and I've learnt a lot from your documentation, so of course it would be stupid to come out here and say that I don't care about your thoughts on the current status of librewolf, or even worst that I don't know about your effort towards privacy. I have no problem admitting that I share some of arkenfox's views and I apply them to my own personal setup: in the end me, as many others, would not be able to achieve improvements in privacy without a strong collaborative effort with the privacy community.
For this very reason I think that all the technical stuff that you mentioned in your comments should not go unheard by the librewolf community, but in fact it should be taken into consideration as something that we should work on, as a chance for improvement.
Yes, you sounded harsh, but your criticism is something that we should build on, and your opinion on the need of a hardened Firefox alternative is respectable, although I do not agree with this as I don't see an issue with having more than a single option when it comes to privacy tools. I think that user empowerement is a good thing and more privacy related projects means a growing privacy community that can learn by working togheter, despite having different views on software, and even on the value of a project.
To me, for example, librewolf is a valuable alternative that allows me to improve my privacy, and I honestly highly appreciate that it is a community effort that tries to be private by default, versus a Mozilla software that can be configured to be more private. Generally speaking, I dislike this idea that we should only have one single major option, I want to move my life away from centralization of any kind, I see enough of it in everyday's life.
The only thing that personally bothered me, is the part where you mention that 'The whole thing seems to be, and at least attracts all the crazies, about how to beat the jewgle femto mozilla botnet into submission and be based'. I don't know if I might have poorly interpreted your words, but if you mean that librewolf engages in conspiracy, homophobic, misogynist, alt-right or any kind of hateful stuff, I want to take a stance against this by saying that I never saw any of our project members spread this kind of bullshit, as otherwise I would have never joined the project in the first place given that I do not associate myself with hate speech of any kind.
I don't enjoy this kind of talk, and nobody I interacted with in the project ever acted in a way that was hateful. For this reason it makes me sad and a bit bothered to see a project I contribute to being associated to this kind of stuff, if anything I found our gitter and reddit community to be positive places to hang in.
Additionally, I feel like when it comes to this kind of stuff, everyone is always put under this american umbrella, which, as a european citizen, is something I dislike. Again, maybe I misunderstood your words, but I don't care and I don't even bother being informed about 'alt-right based pro trump or whoever' crap, so I don't like seeing me (and others) being put under the umbrella like this. I've seen enough linux and privacy community members turn political and hateful recently, I would like to keep our browser out of this crap: it should be a community not a political clan, and I think it is, so using this as a way to talk down on the project under privacytools.io suggestion is a bit offending, at least to me.
Peace 🐟

I think it is, so using this as a way to talk down on the project under privacytools.io suggestion is a bit offending, at least to me

Except the "attract crazies" part, it is all relevant as to why librewolf should not be added to PTIO. PS: I edited my earlier post to clarify that the "crazies" was not meant to imply the librewolf devs
But I agree this is not the right forum. I've said my piece. If you want to continue the discussion, and you seem level headed, then I'm happy to invite you to a private repo - just let me know @fxbrit

Except the "attract crazies" part, it is all relevant as to why librewolf should not be added to PTIO. PS: I edited my earlier post to clarify that the "crazies" was not meant to imply the librewolf devs

I understand your stance, the part you quoted wasn't meant to undermine your criticism of librewolf, I just thought that the part about being based and stuff was a bit out of place and I do not recognize our community in that phrase. Btw, thank you for editing that part, I appreciate your honesty. Other than the devs I think that every LW community I interacted with so far has been hate-free, I hope it stays that way for the longest.
I honestly don't have anything else to add at the moment, but if you want to further discuss about technical and non-technical stuff, or if you just want to add something to what we said so far, feel free to ping me at any given time in a private repo of your liking. Thank you @Thorin-Oakenpants :-)
Oh, btw, sorry PTIO folks about cluttering your thread with this discussion lol.

Oh, btw, sorry PTIO folks about cluttering your thread with this discussion lol.

Thats fine, though I think a private reop would be a better option for this discussion 👍🏼

FYI: partially resolved: https://gitlab.com/librewolf-community/docs/-/commit/ad68c29b2dcec9a537a6d8cbd1bb86ab8e24051b

FYI: [note: this does not mean I am endorsing anything]

https://gitlab.com/fxbrit/settings/-/blob/master/README.md
@fxbrit has been busy [work in progress]

removed approx 350 prefs so far (only 200 to go IMO) [I do not know how LW will handle reverting these for existing profiles]
unlocked prefs
some better pref choices
I assume it lands in the next release, IDK

thank you for updating this post, appreciate your fairness. your wake up call wasn't unheard on our side :-)
regarding the releases, I do not have a precise timeline but we are going to review the changes and then it's likely going to be in a release,. the old configuration will be marked as legacy and it will be considered deprecated.

@freddy-m librewolf remains actively updated, I see a lot of advantages when comparing the default Firefox browser. I think this should be reconsidered.

No. I see a lot of advantages in a user.js with Firefox compared with a default Librewolf.
Librewolf is still too much of a mess. Not sure where the pref changes are at, but it was at 400 which is about 150 too many, and I'm allowing some URL prefs in that number for defense-in-depth. And now it's actively developing a settings UI which includes undermining RFP 🤦

advantages in a user.js with Firefox compared with a default Librewolf

why it gotta be one or the other? not saying this to have librewolf included on PTIO, it's fair from them to stay minimal and not include every project. but just in general, why we gotta necessarily go at war.

Librewolf is still too much of a mess. Not sure where the pref changes are at, but it was at 400 which is about 150 too many, and I'm allowing some URL prefs in that number for defense-in-depth

actually I believe we are at 350 counting the URLs you mentioned.

And now it's actively developing a settings UI which includes undermining RFP 🤦

some contributors are working on a UI that exposes the settings so that we don't actually require users to go out their way to change stuff. one of them is going to be a setting that allows to have dark mode even with RFP, but it will be disabled by default and probably even locked (we changed the way we lock stuff, it will be only for weird stuff like that), with a big warning saying what it might do. we noticed that many users where either using an extensions or disabling rfp completely just for the dark theme, so we tried something else.
I always appreciate your frankness and fairness and I even thanked you for that as you had been nothing but nice ever since our conversation started, but this feels a bit like whispering the accomplishments and screaming the failures - I assume you consider the above mentioned pref as failure given that you called it 'undermining RFP', and I'm not trying to argue with this opinion of yours on the specific setting in this thread -, meh.

No. I see a lot of advantages in a user.js with Firefox compared with a default Librewolf.

The reason I prefer Librewolf is because it comes with the right settings out of the box. Additionally it has removed all connections like pocket to Mozilla fully. An average user will likely not install a custom user profile, but using another browser is a lot easier.

why it gotta be one or the other? ... why we gotta necessarily go at war.

On a PTIO thread about adding it to PTIO .. it's not about one or the other, it's about whether or not it fits PTIO, and clearly nothing has changed enough yet (IMO), and some "blockers" can't change. Glad it is down to 350, keep at it.
I mentioned a couple of things to back up my copypasta reply of ph00lt0's comment (I'm taking the piss), to show that "opinions" need facts.
re: the "undermining" of RFP is not an "opinion", it's a mathematical proven certainty, and criticism is a valid answer. This RFP dark/light option is incredibly dangerous (in FPing), and you know some of my background in this FPing - and knowing that, not a single mention of it to me at you know where. It doesn't matter the default or warnings (lock might help a bit), if you allow the option users will take it (and unlocking it wouldn't be much of a barrier?) - users (you have to take a lowest common denominator) are not simply not informed enough (they're not meant to be) - it's meant to be a lock-in for a reason. To me this comes back to LW's core purpose - see my earlier comment "no clear strategy of what they are doing and way too many wishwashy conflicts" - so you want to use RFP but then allow users to alter it. Where is the leadership on this? - these are questions for LW itself, not for this thread, as you say, -meh
No-one is at "war". Calm down and chive on, as they say :)
@ph00lt0
The reason I prefer a user.js is because it comes with the right settings out of the box. Additionally it has removed all connections like pocket to Mozilla. An average user will likely not install a fork, and just dropping a small file into a profile is a lot easier
Stop posting opinions. How do you know it's the right settings? Show me why pocket is a privacy/tracking concern - it does nothing unless you sign up. How is dropping a user.js (without reading it) into a profile any less confusing than just installing a new browser (with no detailed info on the 350+ changes)? How does a fully documented user.js confuse people - information overload aside, it's purpose is the exact opposite of what you're claiming? .. etc

On a PTIO thread about adding it to PTIO .. it's not about one or the other, it's about whether or not it fits PTIO, and clearly nothing has changed enough yet (IMO), and some "blockers" can't change. Glad it is down to 350, keep at it.

yeah that was probably me overreacting. it's valid reasoning and I wish more people were actually concerned with how open source projects are doing or at least reviewing the code to a capacity. fair.

criticism is a valid answer

for sure, but I'm also sure you can see why we are considering something like this. I can sum it up with: unlocking that pref is harder than changing the RFP one probably. this is better for a private discussion than having it here tho, unless someone is specifically interested.

unless someone is specifically interested.

I'm interested in this discussion tbh. So if you want to discuss it somewhere else, it would be nice if it's open for others to see.

FYI: pants kinda moved the discussion to this issue where she dropped some knowledge, it's very much worth a read.


Conditional notifications

Hi,
I'm using homebridge and your hue plugin to add my hue motion sensors to Home. I'd like to receive notifications when the sensors detects a motion but only when I'm not home. Is there any way to achieve that? Thanks.

Not in HomeKit.  The notifications are part of the Home app.  They're not even part of the published HomeKit API, so other HomeKit apps cannot access them.  They're not part of HAP either, so accessories like homebridge-hue cannot access them.
My best bet would be a location aware Hue iOS app, but I don't know any that supports this.  Maybe this could be achieved through IFTTT, but currently tye motion sensor isn't exposed to IFTTT, see https://developers.meethue.com/content/motion-sensor-and-ifttt.

Thanks a lot. I close this issue then.


Sync dependencies with main repo and only load required modules

Changes

Removed rust/swift/... compilation tools from Dockerfile.
Synced dependency versions in build.sh

Will look into integrating with GitHub Actions to build images and push to dockerhub/quay.io
@yurishkuro - Could you please review?
Signed-off-by: Annanay<EMAIL_ADDRESS>

Most importantly, please test this by replacing the proto gen step in jaeger/Makefile with a call to this tool. A successful test would be if we can produce the same *.pb.go files as currently exist in Jaeger.

With the latest changes and the following changes to the Jaeger Makefile -
diff --git a/Makefile b/Makefile
index 7173bc0..0951ec5 100644
--- a/Makefile
+++ b/Makefile
@@ -418,14 +418,14 @@ generate-mocks: install-mockery
 echo-version:
        @echo $(GIT_CLOSEST_TAG)

-PROTOC := protoc
+PROTOC := docker run --rm -v${PWD}:${PWD} -w${PWD} annanay25/jaeger-docker-protobuf:latest -I/usr/include/github.com/gogo/protobuf --proto_path=${PWD}
 PROTO_INCLUDES := \
-       -I model/proto \
-       -I idl/proto \
-       -I vendor/github.com/grpc-ecosystem/grpc-gateway \
-       -I vendor/github.com/gogo/googleapis \
-       -I vendor/github.com/gogo/protobuf/protobuf \
-       -I vendor/github.com/gogo/protobuf
+       -Imodel/proto \
+       -Iidl/proto \
+#      -Ivendor/github.com/grpc-ecosystem/grpc-gateway \
+#      -Ivendor/github.com/gogo/googleapis \
+#      -Ivendor/github.com/gogo/protobuf/protobuf \
+#      -Ivendor/github.com/gogo/protobuf
 # Remapping of std types to gogo types (must not contain spaces)
 PROTO_GOGO_MAPPINGS := $(shell echo \
                Mgoogle/protobuf/descriptor.proto=github.com/gogo/protobuf/types, \
@@ -478,17 +478,17 @@ proto:

        $(PROTOC) \
                $(PROTO_INCLUDES) \
-               -I plugin/storage/grpc/proto \
+               -Iplugin/storage/grpc/proto \
                --gogo_out=plugins=grpc,$(PROTO_GOGO_MAPPINGS):$(PWD)/proto-gen/storage_v1 \
                plugin/storage/grpc/proto/storage.proto

        $(PROTOC) \
-               -I model/proto \
+               -Imodel/proto \
                --go_out=$(PWD)/model/prototest/ \
                model/proto/model_test.proto

        $(PROTOC) \
-               -I plugin/storage/grpc/proto \
+               -Iplugin/storage/grpc/proto \
                --go_out=$(PWD)/plugin/storage/grpc/proto/storageprototest/ \
                plugin/storage/grpc/proto/storage_test.proto

I was able to generate the exact same files as the repo :)
/cc @yurishkuro

Can we merge this one while we figure out publishing to dockerhub?


Consider integrating eslint-plugin-jsx-a11y

https://github.com/evcohen/eslint-plugin-jsx-a11y might be a good addition to the react ruleset.

+1


Split code into core and submodules for non-core code

The first commit for this merge request. DO NOT MERGE YET
Items:

Split project into parent and submodules
Moved all code into tornadofx-core submodule
Completely rewrote the pom.xml files
Did not move over test code; I think this should be reviewed first
Did not move over documentation via dokka; not sure how this works yet

https://github.com/edvin/tornadofx2/issues/3

@edvin Take a look at this for the structure; you should be able to pull it down and use it. I was able to use it in our app without any issue. If youre OK with this, can then work on moving the components out of core into their other projects.

I converted this PR to a draft/WIP to prevent accidental merging. When you're ready for it to be merged, mark it as "Ready for review".

I converted this PR to a draft/WIP to prevent accidental merging. When you're ready for it to be merged, mark it as "Ready for review".

Thanks. Ill be the one to merge it anyways, but good to follow the right process.

Going to merge this in and start moving forward...


aos:out/in and mirror not working

This is:

Question

Hi there! I was wondering if Iam doing something wrong. The eventlisteners aren't working at all, I tried out adding an id for one of them but that didnt work as well.
The mirror value doesn't work as well. The element isn't animating out when scrolling past its point.
this is my code:

+1

Hi @SueIte
Could you check the version you are using?
Use the latest aos@next version to see if your issue is not because of the version mixed up.
<EMAIL_ADDRESS>Thanks

v2 doesn't have events feature. It has been added in v3 (next) @SueIte


No longer able to explicitly set hostname, fqdn or domain facts

With the changes as a result of the report starting in, I think, #509 it is no longer possible to set a node name independent from the system's facter FQDN. This is a breaking change from the prior release and has broken a number of our test cases.
In environments where the node (certificate) name of a system is independent from its FQDN this introduces significant testing issues as there is no longer any way to set the fqdn, hostname, or domain facts (either top-level or in the networking hash) to the expected/required values for testing.
Previously in facts_hash https://github.com/rodjek/rspec-puppet/blob/c6639523b7989fd1c935905f0348f4267d288442/lib/rspec-puppet/support.rb#L113 any user-specified facts were merged in last.

In order to stick with semver, I think any solution will require letting people override the facts via setting them in the facts hash.
A way to support this going forward might be to let people do something like: let(:fqdn) { 'test.example.com' } to set the value that the fqdn, domain, and hostname facts derive from, and if no let(:fqdn) is declared then default to the value of :node.

I've just pushed a fix which I believe addresses both the original concerns/goals as well as provides compatibility with user-supplied fact overrides.

Yeah, I've never actually seen a real world use of nodename != fqdn, it's always been a theoretical case until now! :)
Given that, I don't think it's possible to satisfy all the conditions without a breaking change. I think I'll have to revert the original change and restore the 2.5.x behavior. I like the idea of using let(:fqdn), but that's still a breaking behavior change. As it would require a major version bump, I'd also like to rename let(:node) to something like let(:certname) to make the difference between the two obvious.

Having nodename != fqdn is a requirement in our environment for a couple of reasons. It does make some things a bit more complicated in Puppet-land, given the general presumption that they are equal, but it is quite doable.
Did you have a chance to look at the PR I put up? Any reason to think it wouldn't work to achieve the original intention that prompted the change while still providing backwards compatibility?

Yeah, the change that was introduced in 2.6.0 to override the fqdn based facts was to account for the rspec-puppet-facts workflow. rspec-puppet-facts gives you a hash of pre-generated facts for a particular OS, which includes things like fqdn, hostname, domain etc and we need to be able to override those values if the user specifies a node name in their spec.
That desired behaviour is pretty much the exact opposite of what you need, if i'm reading this correctly. We could perhaps add a configuration option to disable/enable the nodename overwriting facts to avoid having to back out the change while still providing the work flow you need... A bit of a stopgap solution until I have time to work on 3.0.0

@seanmil I've pushed 2.6.5 to rubygems with a solution for this, you'll just need to set derive_node_facts_from_nodename = false in your RSpec.configure block.


Need test mechanism to start multiple Pilot instances and have some evicted from cluster

Would help with dashboard testing, but also seems useful for testing failures in HA scenarios, etc.

This is a dup of #2506

No. That is complimentary, but I need a way to evict Pilots during a test as well.

You can use k8s to increase/decrese the number of pods.


s/in other/in order

LGTM

[Current coverage][cc-pull] is 52.72%

Merging [#856][cc-pull] into [master][cc-base-branch] will not change coverage

3 files (not in diff) in manager/orchestrator were modified. more

Misses +8
Partials +4
Hits -12

1 files (not in diff) in manager were modified. more
File .../test/deepcopy.pb.go (not in diff) was modified. more

Misses -8
Partials -4
Hits +12

@@             master       #856   diff @@
==========================================
  Files            70         70
  Lines         11135      11135
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
  Hits           5871       5871
  Misses         4436       4436
  Partials        828        828

[][cc-pull]

Powered by Codecov. Last updated by [14051cb...9133c1b][cc-compare]
[cc-base-branch]: https://codecov.io/gh/docker/swarmkit/branch/master?src=pr
[cc-compare]: https://codecov.io/gh/docker/swarmkit/compare/14051cb2636d7b01358476bed078c536cf24a186...9133c1b37d120891575176dd55cf9b8ec3172939
[cc-pull]: https://codecov.io/gh/docker/swarmkit/pull/856?src=pr

LGTM


Build Error (Sail up / Sail Build) : #0 615.4 /bin/sh: 1: npm: not found

Sail Version: 1.15.1
Laravel Version: 9.23.0
PHP Version: 8.0.2
Host operating system: Windows 11 Pro 21H2 Build 22000.675/WSL 2

Description:
when attempting to up/build always stopped at "#0 615.4 /bin/sh: 1: npm: not found".
here's the log : gist log
i've been trying to do re-installing docker or ubuntu wsl but still producing same error.
Steps To Reproduce:
clean install by following official documentation. then run sail up / build.

I started getting the same thing about 30 minutes ago

I just tried this and everything works fine for me on a fresh install.

I just tried myself, started by shutting won all containers, removing them, removing all images and all volumes from docker desktop, then following the getting started guide for Windows and got the same error.
gist of the log

@loony383 If you're on Windows, do you have version 2 compatibility checked in the Docker Desktop's general settings menu? If not, try checking it and test again.

@GoodM4ven I'm using WSL2 if that's what you mean, otherwise I'm not certain which setting you're reffering to

@GoodM4ven I'm using WSL2 if that's what you mean, otherwise I'm not certain which setting you're reffering to

Last check at the bottom. Check it and test.

@GoodM4ven That didn't make any noticeable difference however looking at the error I was trying to work out what might intefere with the nodesource repo, and then it clicked, recently started using Cloudflare WARP, disabling that long enough to build the image fixed it.
Have been using WARP for a few weeks-months now so not sure if there is a recent change to the repo/warp itself that's started causing it

Can confirm, was experiencing the exact same issue w/ WSL2 and disabling Cloudflare WARP fixed it.

I had the same error. It turns out it was my company's network firewall that was preventing Nodejs from being downloaded and installed on the container.
I managed to fix it by using a VPN whenever I am building the container ( sail build, or the first time running php artisan sail:install/sail up )
So if you are using some firewall/VPN, try disabling them. If you can not disable it (like on a company network), then try using some VPN. (VPN is needed only when building the container. After the build is finished, you can turn off the VPN. )
To check the issue, you can try opening this URL in your browser
https://deb.nodesource.com/setup_18.x
If it doesn't work, then try using a VPN. If the URL works after using VPN, then you can try sail up/sail build


Throughput changes result in Copy Volume instead of

We've been testing the resize capabilities of the cpi and came across an interesting problem.
Goal:
We had a 4TB disk that we wanted to bump to 1000MB throughput on a GP3.
Outcome of changing
    cloud_properties:
-     throughput: 500
+     throughput: 1000

Was that a volume copy kicked off, I think I was hoping that it'd follow that magic path of the resize capabilities and provide the throughput configuration but it didn't.
With the resize feature the idea that i was grasping onto is that it modifies the volume and continues saving us from the x hours of waiting on large disks to move around.  Looking at this;
https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/EC2/Types/ModifyVolumeRequest.html
It suggests that providing throughput and iops independent of a resize could result in a management ease of iops and performance changes.  Would this be logical in a place like the CPI to do this?
As we may want to tune up our configs from a later date and spending X days just to up the throughput seems wrong.

did you enable the native resize option with directory property enable_cpi_resize_disk

any updates on this?

I have a few iterations of this locally I've just not had the time to spend on it, but i managed to get something working in the area of "if the size is the same and the settings are different it uses the aws api to natively change it", kind of like the way the resize works right now.  But haven't been able to get it working all the way.

The best way to implement this would be to add a update_disk cpi method similar to resize_disk which should be called when the cloud_properties for a disk change. The cpi should validate the incoming cloud properties and determine if an in-place update is supported, if not it should return a not supported error to the director at which point the director should fall back to the original recreate disk behavior.
All of this would be a lot of work and should be discussed in more detail in a new issue to be created against the bosh director. I'm going to close this issue for now, due to inactivity.


Added Vignere Cipher

I added Vignere Cipher and fixed the bug with cesar

what is the issue, can someone help @gdscsmit


Indic cause and effect

Hi @Sohl-Dickstein,
Kindly consider inclusion of this task in the benchmark.

Thanks for your submission! @vedant and @guygurari will be reviewers, and @liamb315 will be the meta-reviewer. Remember to use the structured review criteria. Thanks again!

A ping of @vedant . Thank you!

Hi @manandey, I'm one of the reviewers for this task - thank you for your submission!
Correctness: I reviewed a number of Hindi examples and they were largely unambiguous and well formed. I left a comment in hindi_one_sentence_no_prompt/task.json on one example with a possibly ambiguous label. It's also possible the label is ambiguous in the way the question is phrased in Malayalam or Bengali. I'm not sure if there are other examples with ambiguous labels, but it would be helpful for you to check for these as well.
Besides this issue, I recommend accepting this task.

Hi @guygurari and @vedant, thanks a lot for reviewing this task! I have tried to address your comments in my recent commits. Hope there is nothing else pending from my side. Thanks again! :)

Since @liamb315 is on vacation, I will meta-review.
This task seems to be well made, and clearly improves the coverage of BIG-bench. Especially because we saw interesting behavior in the cause_and_effect task in English, it will be interesting to be able to compare it against a parallel task in Indic languages.
I would strongly encourage you to make a small followup PR, which adds a sentence to the English cause_and_effect README which references the Indic cause and effect task.
Thank you again for your submission! Merging now.


Pypi install is not working correctly

Pypi package is not installing correctly.
lots of issues

Work around: use the package release on github and run the python setup.py install after pip install -r requirements.txt

08b46c07adcdcb06096e279fe30747250825fda0 should be working finally


إضافة اللغة العربية - Added Arabic Language

please tell me that the name/class of the strings in the "strings.xml" from "values-ar-rSA" is the same in the main english "strings.xml"

Yeah, they are the same. So the translation file is correct


Ability to group it blocks with respect to before(:each)

I avoid before(:all) like the plague, but I find myself in situations where I have a large number of tests that are being run in the context of the same before(:each) hierarchy, and for which I know that all of the tests are non-mutating.
At the same time, I strongly prefer to avoid putting multiple assertions in the same it block, unless I know there are sequencing dependencies that are unavoidable in the test.  If I group everything in the same it block, I speed up the testing, but I lose the ability to watch multiple tests fail simultaneously.
I know I'm not the only person in this situation because I've found the discussions on the web, and I've been mulling alternatives around in my mind hunting for a solution that preserves the good things about before(:each), let, and single-purpose it blocks, while still permitting performance optimization where possible.
I'm suggesting an extension to rspec-core that would allow test authors to define a scope for which all before(:each) blocks outside of the scope are only run once for that scope (and the after(:each)  is only run once as well).  Similarly, any let method that is triggered from a before(:each) block would be memoized over the scope.
Issues I see with this:

Mocks would be tricky to get right.  The mocks would have to be left in place after each it block terminates, but that they would still need to be checked for their assertions and would have to have any counts reset.
Memoization of let values would be tricky - anything that was accessed in a before(:each) block outside of the scope would stay memoized over the scope, but anything that only got accessed within the scope would reset on each it block.
Within such a scope, it would be valuable to randomize the order of test execution.
If possible, it would be nice to be able to define additional before(:each) blocks within the scope that do get executed for each it block.  Similarly, it would be nice to be able to nest these scopes.

One thought for identifying these scopes would be static_context - it would behave just like describe and context, but it would initiate one of these static scopes.
I apologize if an idea like this has already been brought up and rejected (I did my best to look though issues for anything that sounded like this), of if there is such a creature that I have yet to discover.

I just developed an update for Nullipotent_Tests based on RSpec 3.2.0.  This fixes a number of latent bugs of which I was unaware, and it also eliminates the side-effect where additional examples were created for the before and after block execution that were part of the group.  The new approach only reports on the before and/or after blocks if they failed.  If the before block was successful, the execution time for that block is allocated either to the first example (:first strategy) or it is split evenly across the examples (:split strategy).  Once again, I have attempted to keep track of the source of all of the copied code and what tweaks were made to it to facilitate maintenance.
To use this, save it into a folder with the path lib/rspec/core/nullipotent_tests.rb (pathing is critical to ensure that RSpec sees the code as part of core and doesn't report on this module).  I put it in extras/ in Rails 4.
Then add the following line to your spec_helper.rb:
require_relative '../extras/lib/rspec/core/nullipotent_tests'

If you want to adjust the global settings, add the following two lines to spec_helper.rb:
RSpec::Core::Nullipotent_Tests.enabled = true
RSpec::Core::Nullipotent_Tests.before_allocation_strategy = :first

The first can be set to true or false, and the latter to :first or :split.

Enjoy!
module RSpec
  module Core
    module Nullipotent_Tests
# CUSTOM: Determines whether RSpec::Core::Nullipotent_Tests supports the in-use version of RSpec
      def self.rspec_version_supported?
        Version::STRING =~ /\A3\./
      end

# CUSTOM: implements the nullipotent_tests example group method
# The code is derived from RSpec::Core::ExampleGroup.define_example_method, rspec-core 3.2.0
      def nullipotent_tests(enabled=true, &block)
        if Nullipotent_Tests.rspec_version_supported? && Nullipotent_Tests.enabled && enabled
# TWEAK: Replace this line with one that doesn't support customized Metadata
          # options = Metadata.build_hash_from(args)
          options = Metadata.build_hash_from([])
          options.update(:skip => RSpec::Core::Pending::NOT_YET_IMPLEMENTED) unless block
# TWEAK: Comment out this line because customized Metadata is unsupported
          # options.update(extra_options)

# TWEAK: Replace this line with one that uses Nullipotent_Tests::ExampleSet
          # examples << RSpec::Core::Example.new(self, desc, options, block)
          examples << Nullipotent_Tests::ExampleSet.new_of_subclass(self, nil, options, &block)
          examples.last
        else
          yield
        end
      end

# CUSTOM: class accessor for turning nullipotent_tests support on and off system-wide
      @enabled = true
      class << self
        attr_accessor :enabled
      end

# CUSTOM: class accessor for specifying before_allocation_strategy (:first or :split)
      @before_allocation_strategy = :first
      class << self
        attr_accessor :before_allocation_strategy
      end

# RSpec considers every ExampleGroup an instance of a custom-class.  In a nutshell,
# RSpec::Core::Nullipotent_Tests::ExampleSet behaves like an Example to the ExampleGroup
# that contains it, but behaves internally like a cross between an Example and an
# ExampleGroup.  In general, it's an Example with ExampleGroup behaviors mixed in.

      class ExampleSet < RSpec::Core::Example
        if Nullipotent_Tests.rspec_version_supported?

# CUSTOM: creates a new subclass of RSpec::Core::Nullipotent_Tests:ExampleSet and then
# instantiates an instance of that subclass, sets it up properly, and returns it
          def self.new_of_subclass(example_group_class, description, user_metadata, &example_set_block)
# Create the new subclass and an instance thereof
            subclass = Class.new(self)
            example_set = subclass.new(example_group_class, description, user_metadata, example_set_block)
# Set the new subclasses class instance property to the new instance of the subclass
            subclass.instance = example_set
# Ensure the subclass gets all the child examples created and then return it
            subclass.class_eval &example_set_block
            example_set
          end

# OVERRIDE initialize to ensure that the example_block does not get used
          def initialize(example_group_class, description, user_metadata, example_block=nil)
            super(example_group_class, description, user_metadata, Proc.new {})
          end

# CUSTOM: instance accessors for stashing clock start time and elapsed time
          attr_accessor :nullipotent_started_at, :nullipotent_elapsed

# CUSTOM: override start to only stash the starting time
          def start(reporter)
            self.nullipotent_started_at = clock.now
          end

# CUSTOM: ADAPTED from RSpec::Core::Example#start, rspec-core 3.2.0
          def start_retroactive(reporter)
            reporter.example_started(self)
# TWEAK: Replace this line with code to use nullipotent_started_at
            # execution_result.started_at = clock.now
            execution_result.started_at = nullipotent_started_at
          end

# ADAPTED from RSpec::Core::Example#finish, rspec-core 3.2.0
          def finish(reporter)
            pending_message = execution_result.pending_message

            if @exception
# TWEAK: Added line to retroactively start reporter
              start_retroactive(reporter)
              record_finished :failed
              execution_result.exception = @exception
              reporter.example_failed self
              false
            elsif pending_message
# TWEAK: Added line to retroactively start reporter
              start_retroactive(reporter)
              record_finished :pending
              execution_result.pending_message = pending_message
              reporter.example_pending self
              true
            else
# TWEAK: Added line to set nullipotent_elapsed
              self.nullipotent_elapsed = clock.now - nullipotent_started_at
# TWEAK: Commented out 2 lines - no reporting will be done if before or after was successful
              # record_finished :passed
              # reporter.example_passed self
              true
            end
          end

# ADAPTED from RSpec::Core::Example#run, rspec-core 3.2.0
          def run(example_group_instance, reporter)
            @example_group_instance = example_group_instance
            hooks.register_global_singleton_context_hooks(self, RSpec.configuration.hooks)
            RSpec.configuration.configure_example(self)
            RSpec.current_example = self

            start(reporter)
            Pending.mark_pending!(self, pending) if pending?

            begin
              if skipped?
                Pending.mark_pending! self, skip
              elsif !RSpec.configuration.dry_run?
                with_around_and_singleton_context_hooks do
                  begin
                    run_before_example
# TWEAK: Replace this line with code to run the child examples instead
                    # @example_group_instance.instance_exec(self, &@example_block)
                    run_examples(@example_group_instance, reporter)

                    if pending?
                      Pending.mark_fixed! self

                      raise Pending::PendingExampleFixedError,
                            'Expected example to fail since it is pending, but it passed.',
                            [location]
                    end
                  rescue Pending::SkipDeclaredInExample
                    # no-op, required metadata has already been set by the `skip`
                    # method.
                  rescue Exception => e
                    set_exception(e)
                  ensure
                    run_after_example
                  end
                end
              end
            rescue Exception => e
              set_exception(e)
            ensure
              ExampleGroup.each_instance_variable_for_example(@example_group_instance) do |ivar|
                @example_group_instance.instance_variable_set(ivar, nil)
              end
              @example_group_instance = nil
            end

            finish(reporter)
          ensure
            RSpec.current_example = nil
          end

# CUSTOM: runs the child examples.  Note that the reporter is still open when this gets called,
# and is expected to be open again when this exits
          def run_examples(example_group_instance, reporter)
            finish(reporter)

            if self.class.examples.size > 0
              case Nullipotent_Tests.before_allocation_strategy
              when :first
                self.class.examples.each { |example| example.before_allocation = 0 }
                self.class.examples.first.before_allocation = nullipotent_elapsed
              when :split
                split_allocation = nullipotent_elapsed / self.class.examples.size
                self.class.examples.each { |example| example.before_allocation = split_allocation }
              else
                raise StandardError,
                  "Unsupported RSpec::Core::Nullipotent_Tests.before_allocation_strategy value"
              end
            end

            self.class.examples.each do |example|
              example.run(example_group_instance, reporter)
            end
          ensure
            start(reporter)
          end

# CUSTOM: the ExampleGroup-like code stores its data in the custom class, but it should pull the
# metadata from the Example instance, so this provides support for linking them.
          class << self
            attr_accessor :instance
          end

# OVERRIDE self.metadata to access the metadata from the Example instance
          def self.metadata
            instance.metadata
          end

# COPIED from RSpec::Core::ExampleGroup.examples 3.2.0
          def self.examples
            @examples ||= []
          end

# CUSTOM: implement self.parent_groups to delegate to the instance's example_group
          def self.parent_groups
            instance.example_group.parent_groups
          end

# CUSTOM: implement self.top_level_description to delegate to the instance's example_group
          def self.top_level_description
            instance.example_group.top_level_description
          end

# COPIED from RSpec::Core::ExampleGroup.idempotently_define_singleton_method 3.2.0
          def self.idempotently_define_singleton_method(name, &definition)
            (class << self; self; end).module_exec do
              remove_method(name) if method_defined?(name)
              define_method(name, &definition)
            end
          end

# ADAPTED from RSpec::Core::ExampleGroup.define_example_method, rspec-core 3.2.0
          def self.define_example_method(name, extra_options={})
            idempotently_define_singleton_method(name) do |*all_args, &block|
              desc, *args = *all_args

              options = Metadata.build_hash_from(args)
              options.update(:skip => RSpec::Core::Pending::NOT_YET_IMPLEMENTED) unless block
              options.update(extra_options)

# TWEAK: Replace RSpec::Core::Example with Nullipotent_Tests::Example
              # examples << RSpec::Core::Example.new(self, desc, options, block)
              examples << Nullipotent_Tests::Example.new(self, desc, options, block)
              examples.last
            end
          end

# COPIED from RSpec::Core::ExampleGroup following .define_example_method, rspec-core 3.2.0
          # Defines an example within a group.
          define_example_method :example
          # Defines an example within a group.
          # This is the primary API to define a code example.
          define_example_method :it
          # Defines an example within a group.
          # Useful for when your docstring does not read well off of `it`.
          # @example
          #  RSpec.describe MyClass do
          #    specify "#do_something is deprecated" do
          #      # ...
          #    end
          #  end
          define_example_method :specify

          # Shortcut to define an example with `:focus => true`.
          # @see example
          define_example_method :focus,    :focus => true
          # Shortcut to define an example with `:focus => true`.
          # @see example
          define_example_method :fexample, :focus => true
          # Shortcut to define an example with `:focus => true`.
          # @see example
          define_example_method :fit,      :focus => true
          # Shortcut to define an example with `:focus => true`.
          # @see example
          define_example_method :fspecify, :focus => true
          # Shortcut to define an example with `:skip => 'Temporarily skipped with xexample'`.
          # @see example
          define_example_method :xexample, :skip => 'Temporarily skipped with xexample'
          # Shortcut to define an example with `:skip => 'Temporarily skipped with xit'`.
          # @see example
          define_example_method :xit,      :skip => 'Temporarily skipped with xit'
          # Shortcut to define an example with `:skip => 'Temporarily skipped with xspecify'`.
          # @see example
          define_example_method :xspecify, :skip => 'Temporarily skipped with xspecify'
          # Shortcut to define an example with `:skip => true`
          # @see example
          define_example_method :skip,     :skip => true
          # Shortcut to define an example with `:pending => true`
          # @see example
          define_example_method :pending,  :pending => true

        end
      end

      class Example < RSpec::Core::Example
        if Nullipotent_Tests.rspec_version_supported?

# CUSTOM: Accessor for passing the amount of time allocated to this example by the before block
          attr_accessor :before_allocation

# OVERRIDE with_around_and_singleton_context_hooks to always yield since that should be handled by the parent
          def with_around_and_singleton_context_hooks
            yield
          end

# OVERRIDE run_before_example to do nothing
          def run_before_example
          end

# ADAPTED from RSpec::Core::Example#run_after_example, rspec-core 3.2.0
          def run_after_example
            assign_generated_description if defined?(::RSpec::Matchers)
# TWEAK: Comment out everything except for the above line
          #   hooks.run(:after, :example, self)
          #   verify_mocks
          # ensure
          #   @example_group_instance.teardown_mocks_for_rspec
          end

# ADAPTED from RSpec::Core::Example#start, rspec-core 3.2.0
          def start(reporter)
            reporter.example_started(self)
# TWEAK: Replace this line with code to compensate with before_allocation
            # execution_result.started_at = clock.now
            execution_result.started_at = clock.now - before_allocation
          end

# ADAPTED from RSpec::Core::Example#run, rspec-core 3.2.0
          def run(example_group_instance, reporter)
            @example_group_instance = example_group_instance
            hooks.register_global_singleton_context_hooks(self, RSpec.configuration.hooks)
            RSpec.configuration.configure_example(self)
            RSpec.current_example = self

            start(reporter)
            Pending.mark_pending!(self, pending) if pending?

            begin
              if skipped?
                Pending.mark_pending! self, skip
              elsif !RSpec.configuration.dry_run?
                with_around_and_singleton_context_hooks do
                  begin
                    run_before_example
                    @example_group_instance.instance_exec(self, &@example_block)

                    if pending?
                      Pending.mark_fixed! self

                      raise Pending::PendingExampleFixedError,
                            'Expected example to fail since it is pending, but it passed.',
                            [location]
                    end
                  rescue Pending::SkipDeclaredInExample
                    # no-op, required metadata has already been set by the `skip`
                    # method.
                  rescue Exception => e
                    set_exception(e)
                  ensure
                    run_after_example
                  end
                end
              end
            rescue Exception => e
              set_exception(e)
# TWEAK: Comment out ensure block
            # ensure
            #   ExampleGroup.each_instance_variable_for_example(@example_group_instance) do |ivar|
            #     @example_group_instance.instance_variable_set(ivar, nil)
            #   end
            #   @example_group_instance = nil
            end

            finish(reporter)
          ensure
            RSpec.current_example = nil
          end

        end
      end
    end
  end
end

# Extend RSpec::Core::ExampleGroup to support the nullipotent_tests method
RSpec::Core::ExampleGroup.module_eval do
  extend RSpec::Core::Nullipotent_Tests
end

@tovodeverett -- thanks for posting an update.  It worries me a bit that you have to monkey with RSpec's internals to get that to work how you want, though :(.
There's one alternate solution to this issue that we're considering (probably for RSpec 3.3):
rspec/rspec-expectations#733
It's a pretty different solution to what you have here but is intended to solve the same pain point.  You might find it useful.

Should what you're considering make it into RSpec 3.3, I would probably seriously consider switching.  To a large extent, I can't even justify the time I spend maintaining this currently, except out of a perverse sense of responsibility to keeping it going for it's own sake.  I only use it in a personal website (a photo archive and sharing site I use to keep track of all the photos and videos we've taken for the past decade+ and to share them with family and friends).  The test suite for that site takes a little over 30 seconds to run the 4,300+ tests, and if I turn off nullipotent_tests and run them with independent setup/teardown, it takes around 65 seconds.  So I save 30 seconds per test run.  I know the time budget doesn't justify my maintenance, it's just hard to give it up (partially because I enjoy the challenge of figuring out just enough of RSpec's internals to keep it working).
One thing to keep in mind - I'm not actually monkeying with RSpec's internals per se.  I'm copying RSpec's internals, and monkeying with them once they become Nullipotent_Tests' internals!
If you ever decided you wanted to consider this approach, I think that a large percentage of the "copy-and-tweaking" could be eliminated through modest refactoring in RSpec core.  For instance, the only reason I copy and modify RSpec::Core::Example#run in RSpec::Core::Nullipotent_Tests::Example (which inherits from RSpec::Core::Example) is to be able to comment out the ensure block so that the child example doesn't wipe out the instance variables when it finishes.  If that code were extracted out of the ensure block into #wipe_instance_variables, then I wouldn't copy and modify #run and I would instead just override #wipe_instance_variables with an empty method body.  There's a lot of that going on.

Well by placing Nuillpotent under Core you are monkey patching...


In serve, after reload, the page is sometimes blank

Short description of the problem:
Working on files while ionic serve is running, when the app detects changes it is meant to reload the page in the browser. However, every so often, after making changes to some html files, when the app reloads, the browser does reload the page but the page is blank. From the console logs it looks like something is happening, but nothing is shown on the page. I have to then force refresh the page to get things to display again.

JS changed:   www/build/main.js
CSS changed:  www/build/main.css
[21:14:03]  template update started ...
[21:14:03]  build update started ...
[21:14:03]  transpile update started ...
[21:14:03]  transpile update finished in 230 ms
[21:14:03]  webpack update started ...
[21:14:08]  webpack update finished in 4.74 s
[21:14:08]  build update finished in 4.97 s
[21:14:08]  template update finished in 4.97 s

[21:14:08]  watch ready

What behavior are you expecting?
The app should properly reload when changes are detected.
Which @ionic/app-scripts version are you using?
Cordova CLI: 6.4.0
Ionic Framework Version: 2.0.0-rc.2
Ionic CLI Version: 2.1.4
Ionic App Lib Version: 2.1.2
Ionic App Scripts Version: 0.0.41
ios-deploy version: 1.9.0
ios-sim version: 5.0.10
OS: Mac OS X Sierra
Node Version: v6.9.1
Xcode version: Xcode 8.1 Build version 8B62

Seems to be fixed with version 0.42.

@dylanvdmerwe,
I think this is just a race condition of saving too many files back to back. It may have triggered multiple builds/bundle updates. We are now debouncing our file saves to prevent this.
I'm going to close this for now but I'll re-open if the issue crops up again. I think we have another change we'll make to make this even more rock solid.
Thanks,
Dan


Modules tab doesn't show anything when selected.

Sadrien at 5/9/2020 9:11:50 AM +00:00

going to the manage modules tab in settings on the latest version does not change the appearance of the page from the other tabs.

REF: https://discordapp.com/channels/531175899588984842/534492012263636992/708607152692133938

This is confusing when the user has no modules currently in the modules folder.

Fixed in #293