Prepare for release v1.10.0-rc1

Summary of Changes
Major Changes:

Add AlibabaCloud Operator (#15160, @l1b0k)
Add support for k8s 1.21 and set minimal k8s supported version to 1.16 (#15502, @aanm)
doc: Add Code of Conduct (#15305, @tgraf)
doc: Deprecate managed etcd mode (#15464, @tgraf)
Implement external IP (LoadBalancer) allocation & announcement via BGP for services (#15340, @christarazi)
Integrate Wireguard for pod2pod encryption (#15383, @brb)
Rework Quick & Helm Installation Guide (#15695, @tgraf)

Minor Changes:

Add helm option enableEgressGateway (#15777, @anfernee)
Added a new daemon option --tofqdns-idle-connection-grace-period. (#15458, @jrajahalme)
Adds an option to specify Cilium router device IP (#14800, @Weil0ng)
agent: Silence some useless warnings (#15450, @tgraf)
bpf: Adds support for drop IPv4 fragmented packet (#15733, @navarrothiago)
Change default ENI property FirstInterfaceIndex to 0 and improve IPAM logic in ENI & Azure modes (#14801, @christarazi)
ci: Increase time limit from 15m to 30m (#15371, @tgraf)
cilium: Add encryption mode to cilium status (#15833, @gandro)
custom calls: add new metrics to count skipped tail calls to custom programs (#15475, @qmonnet)
daemon: add new option --allocator-list-timeout (#15538, @ArthurChiao)
daemon: Remove --help flags grouping (#15564, @brb)
datapath: add tail call hooks for custom metrics, bytecounter example (#13191, @qmonnet)
datapath: Create MAC_BY_IFINDEX_MACRO in Go (#15267, @brb)
doc: Use Cilium CLI for Cluster Mesh documentation (#15359, @tgraf)
docs: Move host firewall out of beta (#15761, @pchaigno)
docs: Update OpenShift (OKD) GSG to use OLM operator (#15608, @errordeveloper)
examples: remove obsolete Mesos example (#15377, @tklauser)
Expose more syslog options (#15545, @jaffcheng)
Hash IPSec keys in the bugtool. Unit test are also added. (#15550, @h3llix)
helm: add ca.crt to tls secrets (#15443, @kaworu)
helm: consolidate IPSec and Wireguard encryption options (#15809, @jibi)
helm: move IPSec options under encryption.ipsec (#15846, @jibi)
helm: Replaced object-based extraArgs with array-based (#15233, @D1abloRUS)
hubble: Add a flag to write Hubble events to a rotated file (#15557, @michi-covalent)
hubble: Add recorder API (#15680, @gandro)
hubble: add separate API to get agent and debug events (#15715, @tklauser)
Improve scalability by reducing number of CEP watch events (#15230, @Weil0ng)
iptables: add support for NOTRACK rules for pod to pod traffic (#15264, @jibi)
iptables: relax no CT rules to match all pod traffic (#15467, @jibi)
k8s: add support for ipFamilies to services (#14914, @fristonio)
Minor README updates (#15372, @tgraf)
node-neigh: Query once netlink for neigh discovery device (#15431, @brb)
PolicyImportErrorsTotal metric is now incremented also from k8s policy watchers (#15820, @jrajahalme)
Remove legacy flannel integration (#15786, @tgraf)
Remove some obsolete documentation (#15370, @tgraf)
Support host policies with per-endpoint routes (#15217, @pchaigno)
Updates & clarifications to Governance Rules (#15325, @tgraf)
VM support has been updated to make use of the new cilium cluster CLI tool. (#15320, @jrajahalme)
wireguard: Add pod2pod encryption support in tunnel mode and fix IPv6 for direct routing mode (#15716, @brb)
wireguard: Add support for managed K8s (#15674, @gandro)

Bugfixes:

toFQDNs rules now allow underscores in match patterns and names (#15801, @jrajahalme)
bpf: Fix defines in policy.h (#15763, @pchaigno)
bpf: fix map_array_get_16 backend retrieval (#15808, @borkmann)
cilium: encryption, auto-discover interface and subnet (#15357, @jrfastab)
ctmap: do not call InitMapInfo() in init() (#15590, @kkourt)
daemon/ipam: correct total IP count in cilium status output (#15707, @ArthurChiao)
Decrease verbosity of error "Unable to update ipcache map entry on pod add" for certain conditions (#15757, @aanm)
encryption: Limit encryption keys to 2 bits (#15335, @tgraf)
eni: Assign primary IP to support multiple VPC CIDRs (#15453, @gandro)
Envoy is updated with security fixes for Envoy CVEs released on 4/15/2021 (#15725, @jrajahalme)
Fix a bug that was causing Azure IPAM to not work when ApplicationSecurityGroups were attached to IPConfigurations of a NIC. (#15194, @AnishShah)
Fix an issue where packets are dropped when a pod connects to itself via a service clusterIP. (#15321, @aditighag)
Fix bug where any non-leader Operator in HA mode would crash updating CRDs (#15544, @christarazi)
Fix channel panic from ipcache kvstore reconnect (#15668, @jomenxiao)
Fix ethtool issues (#15622, @tklauser)
Fix ICMP Echo ID placement in CT maps (#15275, @brb)
Fix the initialization of host endpoint labels (#15780, @pchaigno)
Fixing pods restart on nodes running containerd on COS (#14708, @fallard84)
Handle events with pod IP and node IP addresses being modified (#15803, @aanm)
ipam: Fix ENI routing for secondary CIDRs (#15303, @gandro)
ipcache: Expose correct source in Cilium API (#15706, @gandro)
kvstore/etcd: fix etcd rate limit (QPS) not working (#15742, @ArthurChiao)
kvstore: Fix aborted delayed delete warning (#15409, @tgraf)
lib/proxy.h: set variable as maybe unused to avoid compilation error (#15607, @johngv2)
nat: Do not increment delete error metric on nat entry GC (#15587, @joamaki)
pkg/k8s: reset k8s event lag metric on pod add (#15804, @aanm)
Treat empty NetworkPolicyPort as "all ports on TCP" during network policy parsing (#14720, @mattfenwick)
Wait for endpoints to be stopped on agent shutdown (#15447, @jaffcheng)

CI Changes:

.github: fix kind GH action for encryption e2e tests (#15731, @aanm)
.travis: Disable email notifications on master failures (#15373, @pchaigno)

 (#15659, @Ankurk99)

 (#15796, @michi-covalent)

Add cyclonus network policy tester. (#14889, @mattfenwick)
bpf: Extend datapath options for K8sVerifier test (#15540, @pchaigno)
ci: add AKS workflow (#15466, @nbusseneau)
ci: add EKS workflow (#15465, @nbusseneau)
ci: add gke workflow (#15416, @nebril)
ci: Fix BGP router does not have route for LB IP (#15771, @gandro)
ci: Fix local files chmod in test vagrantfile (#15397, @nebril)
ci: Fix nightly image (#15605, @nebril)
ci: fix nightly image sha (#15708, @nebril)
ci: fix/update GKE workflow (#15482, @nbusseneau)
ci: push cilium-test image to quay.io, use it in nightly (#15569, @nebril)
ci: retry gke cluster scale up, don't clear cluster at start (#14819, @nebril)
cilium: Add workflows for GKE in tunnel mode, with and without encryption (#15678, @jrfastab)
cilium: test encryption workflows for GKE (#15595, @jrfastab)
cilium: Use build-and-push-with-qemu for builder (#15679, @jrfastab)
daemon: Do not attach bpf_host to L3 dev if skb_change_head is unavailable (#15343, @brb)
Remove unused jenkinsfiles (#15578, @aanm)
Revert "ci: push cilium-test image to quay.io, use it in nightly" (#15574, @pchaigno)
test/gke: refactor test-clusters operations (#15863, @nbusseneau)
test/gke: use correct cluster IPv4 CIDR (#15346, @jibi)
test/helpers: Support non-standard nodes names with NO_CILIUM_ON_NODE (#15384, @christarazi)
test/provision: adjust Dockerfiles considered for image download (#15389, @tklauser)
test: add e2e tests for fromEntities: cluster and all (#15398, @chez-shanpu)
test: Allow hostfw tests to run on GKE (#15479, @pchaigno)
test: CI pipeline with kube-proxy running alongside our replacement (#14543, @pchaigno)
test: Disable host firewall in incompatible tests (#14545, @pchaigno)
test: ensure kubectl version is available for test run (#15748, @nebril)
test: Format test-only's kernel_version to avoid mistakes (#15743, @pchaigno)
test: K8sUpdates: Remove deprecated code (#15349, @pchaigno)
test: make RunsOnNetNextKernel() helper work with KERNEL="net-next" (#15395, @qmonnet)
test: Make Wireguard tcpdump filter more fine grained (#15507, @brb)
test: quarantine failing NodePort tests on 1.14 (#15415, @nebril)
test: Skip K8sPolicy on GKE and 4.19 (#15762, @pchaigno)
test: Uncouple KPR from presence of kube-proxy (#15543, @pchaigno)
test: Unquarantine K8sVerifier on k8s-all (#15154, @pchaigno)
test: update k8s testing versions to 1.18.18, 1.19.10 and 1.20.6 (#15755, @aanm)
test: Use node labels when testing host policies (#15714, @pchaigno)
test: Wait for cilium monitor to match expected output (#15848, @pchaigno)
vagrant: Bump all Vagrant box versions (#15772, @pchaigno)
vagrant: Bump all Vagrant box versions (#15812, @pchaigno)
vagrant: Upgrade Vagrant box versions (#15356, @aditighag)
wireguard: Add pod2pod encryption tests (#15573, @brb)
workflows: add encryption for AKS testing (#15657, @nbusseneau)
workflows: add multicluster CI 3.0 workflow (#15710, @nbusseneau)
workflows: fix EKS encryption testing not using aws operator image (#15745, @nbusseneau)
workflows: fix GKE if condition (#15788, @nbusseneau)
workflows: fix schedule triggers (#15813, @nbusseneau)
workflows: improvements to CI 3.0 workflows (#15694, @nbusseneau)
workflows: increase multicluster timeout to 30 minutes (#15811, @nbusseneau)
workflows: small fixes to Kind (#15658, @nbusseneau)

Misc Changes:

.github: change dependabot interval to daily (#15651, @aanm)
.github: fix markdown typo (#15792, @aanm)
.github: remove unnecessary docker hub credentials (#15841, @aanm)
.github: update steps for the release process of a RC (#15319, @aanm)

 (#15113, @TrevorTaoARM)

Add Cluster Health metrics (#15380, @h3llix)
Add custom resource for egress nat policies (#14998, @MasterZ40)
add doc for AlibabaCloud ENI (#15512, @l1b0k)
add support for EndpointSlice V1 (#15524, @aanm)
Add support to enable EndpointStatus in Helm chart (#15844, @carloscastrojumo)
Add warning log when host enable SELinux (#15414, @konghui)
Adds a Getting Started Guide for Rancher Kubernetes Engine (#15323, @seanmwinn)
Adds ipv6 support for local-router-ip (#15662, @Weil0ng)
all: don't use the deprecated io/ioutil package (#15242, @tklauser)
Assign specific, unique ports for pprof (Agent, Operator, Hubble Relay) (#15441, @christarazi)
AUTHORS: Update email (#15885, @jrajahalme)
aws/eni/limits: lazily populate limits map (#15523, @tklauser)
azure: Fix API rate limit test (#15493, @twpayne)
bpf: Comment BPF hook points, some tail calls, and local delivery code (#15204, @pchaigno)
bpf: initial pcap exporter for lb (#15376, @borkmann)
bpf: lift port restriction and allow l4 dnat in ipip (#15396, @borkmann)
bpf: option for selecting DSR L4 DNAT method for IPIP (#15880, @borkmann)
bpf_host: declare variables in the beginning of the block (#15560, @johngv2)
bugtool: dump iptables-legacy and iptables-nft (#15363, @h3llix)
build(deps): bump actions/cache from v2.1.4 to v2.1.5 (#15666, @dependabot[bot])
build(deps): bump actions/download-artifact from 4a7a711286f30c025902c28b541c10e147a9b843 to 2.0.9 (#15582, @dependabot[bot])
build(deps): bump docker/build-push-action from 9379083e426e2e84abb80c8c091f5cdeb7d3fd7a to 2.4.0 (#15586, @dependabot[bot])
build(deps): bump docker/setup-buildx-action from 154c24e1f33dbb5865a021c99f1318cfebf27b32 to 1.1.2 (#15600, @dependabot[bot])
build(deps): bump docker/setup-buildx-action from 2a4b53665e15ce7d7049afb11ff1f70ff1610609 to 1.2.0 (#15862, @dependabot[bot])
build(deps): bump docker/setup-qemu-action from 25f0500ff22e406f7191a2a8ba8cda16901ca018 to 1.1.0 (#15854, @dependabot[bot])
build(deps): bump docker/setup-qemu-action from 6520a2d2cb6db42c90c297c8025839c98e531268 to 1.0.2 (#15585, @dependabot[bot])
build(deps): bump github.com/aws/aws-sdk-go-v2/feature/ec2/imds from 1.0.2 to 1.0.3 (#15358, @dependabot[bot])
build(deps): bump github.com/Azure/go-autorest/autorest/azure/auth from 0.5.6 to 0.5.7 (#15412, @dependabot[bot])
build(deps): bump golangci/golangci-lint-action from v2.5.1 to v2.5.2 (#15552, @dependabot[bot])
build(deps): bump jinja2 from 2.10.1 to 2.11.3 in /Documentation (#15407, @dependabot[bot])
build(deps): bump KyleMayes/install-llvm-action from v1.1.1 to v1.2.1 (#15571, @dependabot[bot])
build(deps): bump KyleMayes/install-llvm-action from v1.2.1 to v1.2.2 (#15684, @dependabot[bot])
build(deps): bump pygments from 2.4.2 to 2.7.4 in /Documentation (#15495, @dependabot[bot])
build(deps): bump pyyaml from 5.3.1 to 5.4 in /Documentation (#15473, @dependabot[bot])
build(deps): bump Sibz/github-status-action from e92e9076ba64fe070b6f06221720fc647d82e90e to 1.1.5 (#15584, @dependabot[bot])
build(deps): update actions/upload-artifact requirement to ee69f02b3dfdecd58bb31b4d133da38ba6fe3700 (#15599, @dependabot[bot])
Bump hubble UI version and pinned digest for envoy proxy (#15889, @aanm)
cilium/cmd: don't write copyright header in generated shell completion (#15845, @tklauser)
cilium: Fix EKS encryption panic and reinit path and add workflows test (#15669, @jrfastab)
cilium: pcap recorder agent management (#15633, @borkmann)
cilium: pcap recorder follow ups (#15782, @borkmann)
CODEOWNERS: Add @cilium/wireguard for pkg/wireguard (#15618, @brb)
CODEOWNERS: Add pkg/bgp (#15663, @christarazi)
CODEOWNERS: Create cilium/alibabacloud team (#15665, @l1b0k)
CODEOWNERS: Create cilium/loader team (#15451, @pchaigno)
CODEOWNERS: Remove @cilium/monitor team (#15368, @pchaigno)
contrib: add dual-stack support for dev VMs (#15827, @aanm)
contrib: Clean output of submit-backport script (#15838, @pchaigno)
contrib: fix remote overriding (#15328, @kaworu)
custom calls: cleanup and improve a few elements (#15480, @qmonnet)
daemon/cmd: fix Cilium version status output (#15649, @aanm)
daemon: Add hidden --cflags debug command (#15549, @joestringer)
daemon: Create RuntimePath if not equal to StateDir (#15711, @oblazek)
daemon: Fatal on XDP + egress gateway (#15511, @pchaigno)
daemon: Fix the init of the endpoints' datapath config (#15785, @pchaigno)
daemon: log errors from bpf.TestDummyProg() (#15460, @rgo3)
daemon: Make Hubble Recorder API opt-out (#15781, @gandro)
daemon: Remove unnecessary log (#15776, @christarazi)
datapath/linux/arp: avoid leaking sock fd if unix.SetNonblock fails in func listen (#15646, @tklauser)
datapath/linux/probes: remove unused (*ProbeManager).GetMisc (#15647, @tklauser)
datapath: Move XDP handling from bpf/init.sh to agent (#15497, @brb)
doc: Add Egress Gateway Getting Started Guide (#15661, @MasterZ40)
docs/contrib: Clarify the options for the Vagrant setup (#15835, @pchaigno)
docs/encryption: Document limitations and workarounds (#15876, @gandro)
docs/policy: Clarify table for deny policy scenarios (#15836, @pchaigno)
docs: Add BGP GSG (#15519, @christarazi)
docs: add cilium-operator technical overview documentation (#14530, @fristonio)
docs: Add section for filtering by subnet tags in ENI mode (#15635, @christarazi)
docs: Add Wireguard Getting Started Guide (#15787, @gandro)
docs: De-duplicate k8s integration section (#15454, @joestringer)
docs: document final steps for nomination of new committers (#15378, @qmonnet)
docs: example cluster-wide health endpoint (#15348, @Shikugawa)
docs: Fix commands for IPSec key rotations (#15481, @pchaigno)
docs: Fix invalid link for BPF Newsletter (#15746, @LiangZhou-CTY)
docs: Fix pip installation (#15705, @brb)
docs: Fix sed in OKD GSG (#15822, @christarazi)
docs: fix the Cilium namespace in GKE (#15463, @kaworu)
docs: Hide "Edit on GitHub" buttons (#15579, @joestringer)
docs: Make cross-cluster policy more explicit (#15778, @jrajahalme)
docs: Mention KUBEPROXY ENV var in e2e section (#15535, @brb)
docs: Tweak backporting doc (#15369, @twpayne)
docs: Update DNS proxy timeout value (#15581, @aditighag)
docs: update k3s installation instructions (#15503, @aanm)
docs: use dedicated Sphinx role to reference GitHub issue (#15814, @qmonnet)
Documentation: fix key rotation command in encryption guide (#15365, @mauriciovasquezbernal)
Egress NAT control plane watchers and egress policy manager (#15134, @MasterZ40)
endpoint: Add named type for endpoint state (#15614, @ammmk)
ENI migration followups (#15702, @christarazi)
examples: add 'rebel-base-global-shared.yaml' (#15886, @bmcustodio)
examples: Split host policies for dev. VMs (#15577, @pchaigno)
Extend the monitor notification interface with endpoint id getter (#15391, @aditighag)
Fix BPF_JMP_MAP_ID on tail call toy example. (#15576, @yiannisy)
Helm: adjust comment in values.yaml to accomodate Vim users (#15334, @qmonnet)
images/runtime: update ubuntu base image (#15615, @aanm)
images: squash common operator images in a single Dockerfile (#15849, @aanm)
Implement egress gateway datapath (#14830, @anfernee)
Improve release scripts (#15294, @joestringer)
Improve the docs CRD schema version update script (#15869, @joestringer)
install/kubernetes: fix upgrade envoy to 1.18.2 for Hubble UI (#15879, @kaworu)
ipam: Fix empty interface number in Azure (#15533, @christarazi)
ipsec: Fix routing CIDR iteration on EKS (#15645, @gandro)
iptables: GetProxyPort(): run iptables quietly (#15779, @kkourt)
iptables: use CILIUM_* chains for per-endpoint no CT rules (#15411, @jibi)
k8s/api: More consistent field name capitalisation (#15521, @errordeveloper)
k8s: Consolidate check for EndpointSlice support (#15561, @christarazi)
k8s: Fix Wireguard with IPAM != ClusterPool (#15784, @gandro)
k8s: Introduce subscriber package to simplify & consolidate K8s watcher callbacks / event handling (#15295, @christarazi)
Kata: Mention incompatibility with host-reachable services or strict KPR in documentation (#15589, @qmonnet)
loader : Log upsert and remove route errors (#15339, @h3llix)
loader : Log upsert and remove route errors (#15525, @h3llix)
MAINTAINERS: update MAINTAINERS.md (#15603, @kaworu)
Make encryption+chaining limitations clearer (#15598, @joestringer)
make: add help target to root Makefile for printing info about availble targets (#15087, @fristonio)
Makefile: Fix microk8s image target (#15516, @joestringer)
mtu: Switch to v/netlink for querying netdevs (#15260, @brb)
node-neigh: Reduce arping related log msg's level (#15261, @brb)
node: Remove SetInternalIPv4From Method (#15873, @nathanjsweet)
pkg/client/client.go: Set EnabledProtocols when pointer is nil (#15688, @johngv2)
pkg/datapath: ignore certain error types on route delete (#15730, @aanm)
pkg/k8s: fix concurrent access in CNP field (#15518, @aanm)
pkg/k8s: set the right api group for EndpointSlice (#15631, @aanm)
pkg/sysctl: Sanitize parameter names (#14533, @twpayne)
policy: improve CNP initial sync (#15492, @jaffcheng)
Prepare branch for v1.10 release cycle (#15868, @joestringer)
Prepare helm charts for v1.10.0-rc0 (#15322, @aanm)
release: Automate image digest PR creation (#15818, @joestringer)
Remove duplicated ruleLabels in DerivedFromRules (#15280, @aanm)
Remove NEEDS_RELAX_VERIFIER (#15610, @rscampos)
rename ciliumNodeInformer to ciliumEndpointsInformer according to the context (#15806, @sstoner)
Revert "encryption: Limit encryption keys to 2 bits" (#15487, @brb)
Revert "loader : Log upsert and remove route errors" (#15517, @nbusseneau)
Revert exported NoTrack rule function names. (#15505, @Weil0ng)
Simplify runtime/builder image update (#15326, @tklauser)
Small updates to image build doc to make it a bit clearer (#15816, @Weil0ng)
source: Reorder AllowSource switch Statement and Comment Nits (#15696, @nathanjsweet)
Stub out some functionality on non-Linux platforms (#15355, @joestringer)
test: Remove nop condition from tests (#15541, @pchaigno)
test: update add_vagrant_box.sh (#15831, @twpayne)
test: update k8s tested versions (#15528, @aanm)
test: update k8s to 1.21.0 (#15616, @aanm)
ui deployment: upgrade envoy to 1.18.2, fix config (#15847, @geakstr)
Update AWS deps (#15759, @ungureanuvladvictor)
Update Go to 1.16.2 (#15344, @tklauser)
Update Go to 1.16.3 (#15566, @tklauser)
Update gops to v0.3.18 and build it statically linked (#15853, @tklauser)
Update kube-router YAML to a newer release in the guide (#15639, @weirdwiz)
Update stable releases (#15805, @joestringer)
Updates golang:1.16.3 digest (#15790, @Weil0ng)
Use go embed and remove go-bindata dependency (#15834, @aanm)
vagrant: Follow cilium-agent options on development VM to Helm defaults (#15367, @Shikugawa)
vendor: Bump to latest vishvananda/netlink (#15461, @joestringer)
vendor: Update sigs.k8s.io/structured-merge-diff to v4.1.0 (#15488, @christarazi)
vendor: Upgrade github.com/cilium/ebpf to v0.5.0 (#15386, @aditighag)
wireguard: Better error message if kernel support is lacking (#15825, @gandro)
wireguard: Fix rp_filter setting (#15542, @brb)
wireguard: Improve logging (#15807, @brb)
wireguard: Remove operator and disable KPR encryption (#15565, @brb)

I also missed a few of the release notes and skipped CHANGELOG.md entirely, will fix those up.


The second picture of the heat network is incorrect and should be changed

Closed by https://github.com/quintel/etmoses/wiki/Heat-network/c347b085cc16723bc095a0bdf5e1f706b00bcd28.


Adding Crossfire protocol?

Hi,
adding crossfire would allow using ELRS as trainer link from head tracker to radio.
Recent versions of ELRS allow reprogramming RX as TX, so a tiny RX converted to TX could be used on the head tracker.
Edge-TX supports Crossfire as trainer input.

I do not use Crossfire or ELRS myself, so chances are slim I ever implement this.
But I'm happy and open for contributions.
Just for me to have the full picture.

We are talking about radios w/o built-in bluetooth or with bluetooth but which does not speak PARA trainer protocol; otherwise no point to implement yet another link.
An ELRS receiver flashed and configured as transmitter (TX) will need to be connected to HeadTracker board (XIAO BLE Sense).

What's required from HeadTracker then? How shall it communicate with the ELRS TX board? Shall HeadTracker send data to serial port (RX/TX pins) in Crossfire format?

Hi there,
1 Yes and no. I guess every TX that understands Crossfire will also understand para. Crossfire as input is only on EdgeTX afaik. So your reasoning is not wrong. Sometimes it is easier to fit an connect a small ELRS RX with ceramic antenna into the TX.
I see that BT is already in head tracker side. So it’s straight forward using BT on TX side.
2 The ELRS RX flashed as TX gets its data over serial in crossfire protocol.
One other project uses this to transmit directly to the gimbal with the ELRS PPM RX directly at the gimbal. With all mixing in the head tracker.

The other project being https://github.com/dlktdr/HeadTracker perhaps?
I want to keep this Head Tracker's code compact and zero-configuration, this means all mixing and scaling have to happen in radio.

Fully understand. Closing this one.


docs folder is not in .gitignore

What is the issue?
The docs folder gets created when make run command is executed in the terminal. When I do git status, it shows docs folder as untracked.
It is not included in .gitignore.
Here is a screenshot of the same.

Proposed solution
The docs folder should be included in .gitignore.

I will be happy to take up this issue.
Please let me know in case something is amiss in my understanding and there is a reason why it is not included in .gitignore.

The make run command doesn't currently output files to the same directory as the make build command. This is a known issue of low priority that doesn't impact generated docs output. I'd prefer to address an issue like this by updating the makefile to ensure output is in the correct directories. Let me know if you're open to investigating the changes needed to the makefile.

The make run command doesn't currently output files to the same directory as the make build command. This is a known issue of low priority that doesn't impact generated docs output. I'd prefer to address an issue like this by updating the makefile to ensure output is in the correct directories. Let me know if you're open to investigating the changes needed to the makefile.

I have a couple of questions:

...ensure output is in the correct directories...
So should the docs folder be created inside the dist directory when make run is executed? Or in some other directory?

Do docs and dist folder serve different purposes?
What is the harm in adding docs folder to .gitignore if it is used only for development purposes?
What benefits do we get if we don't add docs folder to .gitignore?

New solution
In config.toml file, I just need to change the path in line #8:
publishDir = "${new_path}"
Here new_path is the placeholder. Once I know the exact path, I will replace it here.

@chessmadridista - As I mentioned, this is a low priority issue that doesn't impact the production instance of the Mattermost Developer Documentation, nor does it impact generated docs output. The Mattermost Docs team doesn't have bandwidth to take on an investigation in this area at this time. That being said, you're always welcome to dig deeper to find answers to your questions and help propose a future iteration of cleanup for this repository.
Perhaps there are ways to achieve similar directly within your local dev environment that don't involve changes to this Mattermost repository.

Hi @cwarnermm, thank you for the detailed clarification!
Sure, I will create a PR having the docs folder in .gitignore.
Shall I create another issue for finding out the root cause of why the files are being made in docs folder instead of the dist folder when make run is executed?

That would be really great, @chessmadridista! Thank you!

That would be really great, @chessmadridista! Thank you!

Hi @cwarnermm, I am happy to be of help!
#1383 has been created to investigate the Makefile issue related to docs and dist.


foxy upgrade

Description
Foxy upgrade.
Fixes (https://trello.com/c/36LSIUAv/76-create-ci-for-foxy-upgrade)
Type of change
Please delete options that are not relevant.

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

How Has This Been Tested?
This PR is to make the team aware of new issues created from the migration to foxy by making it available in CI.  I create docker images on my laptop and had issues but this PR will use Dockerhub images in the same manner they're are created for the team now.
Checklist:

[ ] I have performed a self-review of my own code
[ ] Any dependent changes have been merged and published in downstream modules

Closing in favor of oci-labs:foxy


Add function type for use in searching and calling functions.

Edit after discussion (renamed title):
I've changed the title to represent what seems to be the way to go: Creating a delegate type for looking up functions in E2 and calling them afterwards. For backwards compatibility, strfuncs need to stay.
Features required for approval (so far)

Function type
- Points to any one function or nothing (nofunction(), like noentity()).
- Can be retrieved at runtime through getFunction(name, [args]).
- Can be called using "getFunction("name", Args):call(Args)".
- Possibly: Can get name, return type, extension type and parameters from (as array of types in order).

If features should be different. Would like to hear so.
Original post:
The main reason for this feature is that you cannot safely check if a function can be called or not. Not sure if the E2 can easily implement eval(). Otherwise maybe something like a try-catch when E2 throws an error. So that you can handle it and continue. Without respawning the E2.
Syntax propose:
if (first()) {
    function entity:sayPM(Message:string) {
        concmd("say /pm " + This:name() + " " + Message)
    }
}

......
......
......

if (chatClk(owner()) {
    Targets = findPlayersByName(...)

    local Command = lastSaid(owner())
    eval(Command)
    # Possibly:
    # local Players = evalArray("players()")
    # local OwnerName = evalString("owner():name()")
    if (!lastEval()) {
        # Fallback plan.
    }
}

Example chat: "# sayPM(Targets, "I'm your dynamic calling")"
Having this feature will allow users to create command-like utilities without getting an error message when calling an undefined function with "str"().

string function error handling should be better yeah, but I don't think an exception handling is the correct way since e2 was made to be safe from errors. Maybe instead of erroring the chip, an attempt to call an invalid function string should set a global error value/string which can be retrieved and reset with lastError(). Like how C programs work.

Or you can define your functions with tables as arguments when you don't know the types or how many it will receive.

You only want 'eval' as a steal from a dynamic language ( JS / Lua ). What you actually want is to create a parser. I see no reason for the use of eval. If you can provide a secondary use case that cannot be solved by using a parser, I will concede the point.

what @awilliamson means is basically what I said: either you use a table for dynamic types, or you could use a string and some very simple parsing to retrieve the values from the string (like we usually do with chat commands)

@Divran @awilliamson
Thanks for your thoughts. Using a table as parameter is a good idea I can currently do. Thought it would be a nice addition if there was a nice way to call strfuncs without throwing errors. And without redefining all functions in a table. Some kind of self-awareness would help a lot of redundancy.

A functionExists(str) would be great.

Yes, though it would be nice if you could do it the same as you call it:
if (functionExists(Command, Arg1, Arg2)) {
    Command(Arg1, Arg2)
}

eval? no

Nobody said eval exists on C or any language, but it does exist as pcall in lua. I mentioned that lastError() is how many C apis handle errors, but edited it out because that was irrelevant.

@oldmud0 I don't see how anonymous functions would solve the issue at hand?
@Measuring I've yet to see you raise a valid point against using a parser. Your parser is responsible for interpreting your 'commands' eg "tp radon divran", and relaying the args to whatever function ( or in a case where tp is undefined, erroring ). Then it will pass args to the defined function, which will then be responsible for validity checks? Obviously I don't know the specifics of E2's UDFs, but the implementation should be trivial. If you make the parser correctly, you shouldn't be attempting to call invalid functions.

Its redundant to have to make your own check that a function exists when e2 should have it built in.

Right now you can add all valid functions to a table and check that
@persist ValidActions:table
if (first()) {
    function doSomething( Args:table ) {
        #whatever
    }

    ValidActions = table(
        "doSomething" = 1
        #more stuff
    )

    function functionExists( Str:string ) {return ValidActions[Str,number]}
}

We know. Just seemed like something that should be built in.

@awilliamson @Divran I have no valid points against using a parser. I've done the part I can with a parser. The problem I have is that users CANNOT make any mistakes in what they type. Because it'll try to call that function. Unless I first check if the given function call is valid through a table of "valid-functions". Would be nice to have it build in. So utilities like this can be easily extended by adding a function or an '#include "lib"'

The workaround i used it dumping the whole funtion list to vonEncoded table, with function name as key and a array of matching e2helper parameter and return types as value, which i then #include in the main e2 (else it lags the syntax highlighter badly).
Makes the E2 take awefully long to upload, has to be updated whenever you switch server(due to changed extensions) or a when new functions get added, but works.
See #652

@adosikas I appreciate that solution to check for functions that exist. But dumping the function list in a vonEncoded table would still require you to type everything out I assume?
I know I could go out of the way and just redefine functions as text in a table. Though it seems like E2 can do much easier and better than me if it was added. Without having possible issues like "whoops, forgot to change my table".

@adosikas I removed my original post. Think I misinterpreted your post. You said "dumping the functions to a vonEncoded table with lua". Is this something you purpose as a solution for E2? Or for me as a user? As I understand it: You write lua to parse the E2 code to only take the function information and write that back to a vonEncoded table. Then load this table in your E2 chip with an include?
That's a smart but really exhaustive method to get it to work imo.

As a solution for you, as i made a similar request which was denied.
And no, i don't parse the E2 code, i convert the E2Helper.Descriptions table into a lookup table (using clientside lua), and have a E2 that does FunctionTable=vonDecodeTable("") and provides a function that checks the table if a function with said name (and parameters) exist.
That whole procedure is a one-off thing that you can forget about, until the e2 function list changes (wiremod updates adds functions, or server enables/disables extensions), which should not be to often.
When that is done you can just #include that file, and use the function to check whenever you need.
Of course you will still have to add your own (user defined) functions to the FunctionTable, if you plan on using those alongside the given ones.

fyi that lua code there is horrendously unoptimized (thanks to garry).  Two examples in your code is table.Count, which loops through the entire table, and table.GetKeys which also loops through the entire table.  And that table isn't exactly small. (but we can't really say it's your fault - these functions garry added just makes it easy to make bad code)

There are no errors that dont halt execution immediately, so a lastFuncError function is useless
If you want to introduce an eval, make it return a user-defined function
You dont need functionExists(), you have #ifdef and you want to introduce an eval, right?
@thegrb93 pcall is not in any way equivalent to eval
If you introduce error handling, make it pcall-like, not with a silly lastError function.

PCallResult = pcall(Function, ...)
PCallResult:message()
PCallResult:returnValue()[1,type]
I just notice that would throw type safety out the window... meh

@TomyLobo He changed his proposed syntax since my comment.
I doubt a pcall system can smoothly be integrated into e2.

@TomyLobo #ifdef doesn't work on user defined functions because #ifdef is a preprocessor command and UDFs don't exist until after the E2 is parsed.

Yes, I eventually went with lastFuncError(). Because it was the easiest thing to implement and doesn't have a huge impact. Besides, it's something a rookie can do without breaking a lot :).

@thegrb93 yes there are, but can you name any that don't? also, we can implement e2 pcall with lua pcall :)
@Divran the eval gets the UDFs from the main script and you just put #ifdef there to return different things based on the result.
Also, if UDFs are not sourced from other scripts, why the heck would you even need this feature?
You already know which functions you defined...
@Measuring "easy to implement" shouldnt be a criterion for what gets in

@TomyLobo these guy want this feature to avoid having to add all their UDFs to a table to check if it exists, like we already explained like 5 times
Myself I don't see the need for this and I am fine with adding the functions to a table if necessary.

@Divran Alright. But if I do get around working on it. How would you guys like it to be? Or is this out of the question?

@TomyLobo Nevermind I misread your double negative statement. "There are no errors that dont"

There's nothing wrong with lastFuncError(). I would prefer a functionExists() though.

@thegrb93 both are kinda broken designs. functionExists is less broken, though.
A delegate would be the proper way to do this.
@Divran do we have automatic type conversion in E2? String->Function, for instance?

@TomyLobo we only have automatic type conversion in some cases, for example number->string when concatenating. I wouldn't really call callable strings a type conversion

I can't believe I said the word lambda instead of delegate

Actually, wouldn't a delegate for E:owner() include a reference to E? :)
It's actually more of a function pointer.
Let's just call the type "Function" with abbreviation "f" if that's still available.

@TomyLobo Well, a function pointer is really basic. So I thought that delegates would make it more extensible. Like this answer: http://stackoverflow.com/a/8097290/1277156 "function objects".  Containing information about the function. Like arguments, return type. Instead of only being able to call it.

Let's call it function object then.
That seems the least "huh?"-inducing :)

Would the behavior be like JavaScript?

nope, not possible, since we have overloading
For the function search syntax, I propose the #ifdef syntax:
function("entity:setAlpha(number)"):call(MyEntity, MyNumber)

We have #ifdef now I believe

This is still one of the biggest issues for releasing public scripts. We have #ifdef, but would a @required tag at the top for specific extensions (at least those included in wiremod) be possible?
Something like...
@required propcore

This is still one of the biggest issues for releasing public scripts. We have #ifdef, but would a @required tag at the top for specific extensions (at least those included in wiremod) be possible?
Something like...
@required propcore

Just saw this, I mean you can do this now with compile time preprocessor errors so it's more obvious.
#ifndef propSpawn(string, vector, angle, number)
    #error This chip does not work without propcore enabled.
#endif


Update RulesMissingDocumentation.md

All these rules have been documented, e.g. https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1859.

Oops, opened in wrong repo.


Fix a small bug in the Stackdriver Logging documentation

Fixes https://github.com/kubernetes/kubernetes.github.io/issues/4449
/cc @YouriT @chenopis

This change is

/assign @chenopis

Deploy preview ready!
Built with commit 00266a4fd044ada99e8629e7f2cecabe6c2b1c7e
https://deploy-preview-4453--kubernetes-io-master-staging.netlify.com

/lgtm


allow module.singleton(id, object)

would be convenient if module.singleton() allowed me to pass an object as 2nd argument, not only a function.
currently i have to write:
module.singleton("foo", function() { return {"bar": "baz"}; })

when i mean to say:
module.singleton("foo", {"bar": "baz"})

I close this issue now since there exists a first (work in progress) PR for this and the discussion should continue there.


Fix README.md typo

Hi, thanks for the PR. Could you please send it to the dev branch? I have tired to change it from the GitHub UI but looks like the original fork was quite old.

Hi, thanks for the PR. Could you please send it to the dev branch? I have tired to change it from the GitHub UI but looks like the original fork was quite old.

Sure, I've already make new PR to dev branch.

Thanks, merged :)


Separate labels from controls

Is it planned to be able to provide a label externally for input controls?
For example, if I wanted to use a text input control (or a colour picker), and have it display in a table, and I wanted to have the labels in the left column cells, and the control itself in the right column, then I wouldn't be able to do this "as is" (I'm sure there there are plenty of css or non-table ways of achieving the same layout),
I've found myself recreating a bunch of controls (and re-wrapping them in BaseControl's) to do that on a project I'm playing around with.
To be honest, I don't know what the solution could even look like (slots, refs? - the problem would be getting the ID I guess, maybe we could supply our own ID to a control, ommit the label and then we can implement the label + ID ourselves) - it seems like it might be complicated for such a small gain - or if it is something that there would be much demand for.
Maybe the solution is to rebuild the controls as I have been doing or look for CSS way around the issue - I'm not  attached to the tables, but I thought I would share my experience as I think it makes for a good use case / food for thought.

I just created a CodeSandbox example:
https://codesandbox.io/s/g2-form-group-example-mgcgz
Feel free to poke at it :). Lemme know if this workflow feels about right for you.
Always open to new ideas of how we can make this stuff feel more intuitive

@ItsJonQ this looks awesome! I had a play and it looks like this use case is well and truly covered..!
Something that threw me off though was the naming of <FormGroup> - maybe I don't fully understand the scope of what this this does just yet, and maybe I'm just used to <form> tags, but I felt like I should put a bunch of stuff in there like:
<FormGroup> 	<HStack> 		<ControlLabel>First name</ControlLabel> 		<TextInput /> 	</HStack> 	<HStack> 		<ControlLabel>Last name</ControlLabel> 		<TextInput /> 	</HStack> </FormGroup>
But I'm quickly realising it should just contain 1 label + element pair, and then that automagically links them all together - I'm no good with naming though, but I'll throw one out there - ControlGroup - as a control used to consist of the label + input pair - but even that makes me think slightly of a group of controls...
This is looking really good, I'm excited to get using this in my projects :)

I'm glad I could help! ❤
Yes, naming is hard 😂 . I went in a couple of circles for FormGroup.
Ultimately, I decided to use it because that's what Bootstrap uses. Due to it's popularity (and influence), I hoped that it would feel more intuitive for people.
ControlGroup is already being used 🙈 .
That's a fun one! It automagically combines control types together.
You can think of it like a <ButtonGroup /> (where buttons collapse into each other and round their corners), but it works for basically any control
https://g2-components.xyz/iframe.html?id=components-controlgroup--default&viewMode=story

Thanks for the thorough explanations, it's appreciated!


refactor: simplify the stats page and its components

The goal is to simplify / make the components more readable. @aeschi @Jaszkowic let me know what you think :)
(I also added a missing translation for "Andere" in the donut chart and fixed a visual bug when you would hover the legend in the "Gießverhalten" chart)

@raphael-arce thanks for your effort :) Looks good! But for me, the preview link is not working - it does not render the charts. Do you know whats up? The gdk_stats request returns with valid data.

@Jaszkowic hmm i don't know whats wrong. Locally it works. Will look into it 👍

@Jaszkowic found the issue and fixed it 👍 the resize function was called before the stats-card-container element was added to the dom, then no width would be set on page load.


[FAB-15824] Scripting friendly CLI query methods

This commit introduces 5 new peer CLI commands
to make CLI more suitable for scripting.
Please see relevant Jira ticket for details and motivation.
These commands exit with status 0 if condition is satisfied, 99 o/w.
This makes them easy to use in scripting without error prone text parsing.
peer channel checkexists -c
peer channel checkjoined -c
peer channel checkanchors -c  -g
peer chaincode checkinstalled -n  -v
peer chaincode checkinstantiated -C  -n  [-v ]
Also installed yq to tools Docker image for processing yaml files.
This is required basically to process configtx.yaml file.
Signed-off-by: Hakan Eryargi<EMAIL_ADDRESS>

Type of change

Bug fix
New feature
Improvement (improvement to code, performance, etc)
Test update
Documentation update

Description

Additional details

Related issues

Hello @raftAtGit thanks for submitting this PR!
A few notes.  First, I think this should probably be broken up until multiple PRs, or at least multiple commits.  From the contribution guide

Minimize the lines of code per PR. Why? Maintainers have day jobs, too. If you send a 1,000 or 2,000 LOC change, how long do you think it takes to review all of that code? Keep your changes to < 200-300 LOC, if possible. If you have a larger change, decompose it into multiple independent changes. If you are adding a bunch of new functions to fulfill the requirements of a new capability, add them separately with their tests, and then write the code that uses them to deliver the capability.

Secondly, for the chaincode related commands, these are only compatible with the legacy lifecycle (which will hopefully be removed soon).  I'm not strictly opposed to adding new commands for the legacy lifecycle, but if we do, then it's probably worth maintaining parity in the new lifecycle.

Hi @jyellick thanks for the comments!
I can split this into multiple commits or PR's, but as this is the implementation of a single Jira ticket I found it natural to wrap up in a single commit.
For chaincode lifecycle, possibly we will soon switch to Fabric 2.0, that time I can implement these for new lifecycle methods too. We will also need them for our repo
Initially I targeted 1.4 branch for these changes, but as I was advised to target master branch I adapted the changes for master branch.
After this PL is hopefully accepted and merged into master, I'm planning to back port them to 1.4 branch, as simply a cherry-pick is not possible because of folder structure and others changes.
That's also one reason I would prefer keeping this as a single commit since it will be much convenient to back-port and create a PR for 1.4 branch.

@jyellick @yacovm any intentions to merge this PR before 2.0 release? it has been a long time..

I have a few issues with this:

I don't feel we should be adding more things to a CLI we eventually want to move away from
I believe that you can implement the same functions by writing a shell script which wraps existing functions (at least for most of the new stuff you added)
While the status/return code style you've implemented makes sense, it's inconsistent with the other functions

Hi @mastersingh24 thanks for the comments!

I Strongly believe any smart management software running on top of Fabric will eventually need this kind of functionality. Including Cello
Well, the whole idea of this commit is to avoid that kind of shell scripts: they are ugly, error prone and fragile. This is such a strong motivation that, I never intended to wrote those scripts but instead learned basic Go skills and implemented these CLI methods.
The CLI methods I have implemented both return status code and also prints human readable information. Status codes are intended for machine to machine, while printouts are intended for human machine interaction.

I've leveraged variants of @raftAtGit 's Helm charts for a few months now and the checkX functions have been invaluable. it is definitely not ideal to extend a feature that is intended to be removed, but with a hazy timeline for removal and the effort level for migration to the new workflow makes me believe this is a worthwhile endeavor for many users.

While the status/return code style you've implemented makes sense, it's inconsistent with the other functions

@mastersingh24 are there specific changes necessary for consistency? Is there any documentation on CLI conformance for HLF (e.g., stdout/stderr expectations and return codes) to help @raftAtGit  know exactly what needs to change?

I've leveraged variants of @raftAtGit 's Helm charts for a few months now and the checkX functions have been invaluable. it is definitely not ideal to extend a feature that is intended to be removed, but with a hazy timeline for removal and the effort level for migration to the new workflow makes me believe this is a worthwhile endeavor for many users.

While the status/return code style you've implemented makes sense, it's inconsistent with the other functions

@mastersingh24 are there specific changes necessary for consistency? Is there any documentation on CLI conformance for HLF (e.g., stdout/stderr expectations and return codes) to help @raftAtGit know exactly what needs to change?

I actually like the model that's implemented in these proposed commands ... it's really the older commands that can be improved.
In the end, this looks like someone adding a few commands ... but we end up being the ones stuck with maintaining all of this plus the existing things.  And we cannot keep taking on debt.
I also do not believe that using the CLI is the proper way to do things either ... but that's a different story.
Where I / we really want to go is to provide break up the current functionality into the CLI into discrete Go packages which others can then use to build any tool they desire.  Of course we'd have  base CLI as well but it would be a composition of these packages as well.

When this was a CR pending in Gerrit, one of the questions I had was why the fabric-cli project isn't the right place to do this work? The fabric-cli project was proposed as a top level project focused on redesigning and improving the CLI experience for fabric users and that seems to be the aim of these changes as well.
If you could apply your skill and passion there, I expect it would have a larger impact with fewer constraints from the existing implementation. Have you considered that path? Have you reached out to those that initiated that effort to see how you could help?
@mastersingh24, myself, and others would very much like to get out of the business of maintaining a CLI for fabric. I don't believe what we have offers a good experience and adding to it, in my opinion, sends a mixed message.

@sykesm I agree fabric-cli project looks like a good match for this functionality. But as mentioned in that repo:

it is NOT the "official" Fabric CLI and there is not yet any commitment that it is going to be.

And honestly I don't have time to refactor these changes for another project with an unclear future. We will go production in a few months and you can imagine I'm quite busy.
Speaking of going to production, to my knowledge, globally we will be the first Fabric in Kubernetes in production and we are making use of our Helm charts and this extended CLI methods based on our home built Docker images.
Anyway, after some experimenting with Fabric 2.0-beta release, I've noticed legacy chaincode life cycle is not possible with v2_0 capability and v1_4_3 capability is not stable.
Not sure how these will evolve in time.
From that perspective, even myself don't see much value in this commit is merged into master branch. I believe best option is to merge it to 1.4 branch. Our users will be happy as they can use official Fabric tools Docker image.
Regarding concerns about stuck with maintenance above, you must be also happy as you can completely drop these methods with 2.0 release. I dont see much to maintain here but I understand the concern.
But hey, initially at Gerrit this patch targeted 1.4. branch 6 months ago. You asked me to move it to master branch and we ended up in this situation. Everyone's life would be much easy if the patch merged into 1.4. branch that time. ;)

@sykesm I agree fabric-cli project looks like a good match for this functionality. But as mentioned in that repo:

it is NOT the "official" Fabric CLI and there is not yet any commitment that it is going to be.

And honestly I don't have time to refactor these changes for another project with an unclear future. We will go production in a few months and you can imagine I'm quite busy.

Fair enough.

Speaking of going to production, to my knowledge, globally we will be the first Fabric in Kubernetes in production

Cool. IBM Blockchain Platform v2 has been hosting Fabric on Kubernetes since last June so there may be others.

I believe best option is to merge it to 1.4 branch. Our users will be happy as they can use official Fabric tools Docker image.
Regarding concerns about stuck with maintenance above, you must be also happy as you can completely drop these methods with 2.0 release. I dont see much to maintain here but I understand the concern.

We actually can't drop the commands or mechanisms. Existing channels that have not enabled the 2.0 capabilities are still using the legacy lifecycle. Our hope is to remove support for the legacy lifecycle in a future release but it'll be a little while.

But hey, initially at Gerrit this patch targeted 1.4. branch 6 months ago. You asked me to move it to master branch and we ended up in this situation.

Yes, because we do development in master and pull things back as necessary. This is a fairly conventional model and seems appropriate for any "new features" that are added to the project.
While we won't be merging these changes, we do appreciate your contribution and the discussion. Thank you.


Information for age-gate bypass

I have found a website that successfully generates download links for age-gated content on youtube.
https://9xbuddy.com/process?url=http://www.youtube.com/watch?v=SV04P6YBuEY#download-image-play

I hope you're trolling. That website uses its own closed server (not open source) and we cannot glean anything useful from it

Quoting release log:
"Youtube age-gate bypass is broken for non-embeddable videos unless logged-in cookies are given. You can provide cookies using either the --cookies or --cookies-from-browser options. There is currently no known way to circumvent the age-gate without authentication details. If you know any way to (or know any app that can) bypass the age-gate (without auth), let us know."
The website uses probably ytdl or yt-dlp for their backend with supplying their own cookies file. So this won't give us anything.

We have already figured it out and the age-gate bypass will be available in next release


Typography Guidelines

Need a Typography Guidelines page that advises designers where and when to use different typography styles. Topics to consider include:

Links
Heading style usage.
Use of bold and italicized text
Common data representations like attribute:value pairs

@LHinson @catrobson per our conversation yesterday about typography, I have opened this new issue to add to the pf-next backlog. Please feel free to add any additional topics that you think should be covered here.

This page should live in the Styles section on the website and we should be sure to address these issues when creating that page. @stacymcauliffe @rachael-phillips FYI


Successfully Create new newsletter-container for the website through which user and owner will connect each other

Issues Identification
Closes: #524
Description
Summary
This pull request introduces a new newsletter-container form on the website, allowing users and the site owner to connect via email subscription.
Details

Implemented a responsive newsletter subscription form.
Added orange-themed styling to match the website design.
Included functionality to display a success message upon form submission.
Ensured compatibility with the existing project styles and layout.

Types of Changes
Please check the boxes that apply

[ ] Bugfix (non-breaking change that fixes an issue)
[x] New feature (non-breaking change that adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Documentation update (Documentation content changed)
[ ] Other (please describe):

Checklist
Please check the boxes that apply

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[x] My changes do not break the current system and pass all existing test cases
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass locally with my changes

Screenshots
New Newsletter form for website

Additional Information
This feature allows users to subscribe to newsletters through a responsive form. The design aligns with the site's color theme and includes a confirmation message to enhance user experience.

you created issue saying you wanted to improve the newsletter why did you add a new newsletter section to the home page when there is already one in the blogs page

@aditya-bhaumik Okay I will correct this soon

@rahulbamnuya have you made the changes


Recommendation on running Karma?

Hey guys, just a quick question. Curious on running Karma: is @bazel/karma still the recommendation? Or will there be a rules_karma at some point?

Great. I'll close this one as answered then. A browser toolchain will come at some point when there is some funding for the project. rules_karma could be a future project as well if there is client who requires it and is willing to fund it.


Add an action to leave the lobby

Currently, players that joined a lobby can't get out unless they complete the game.

This is implemented on backend side. We just need a call from the UI when the user uses the browser back button, and maybe an actual UI button to leave the lobby.


[Bug] Activity Icons not showing in DM list, icons are vertical in the member list

Addon Name and Version
Activity Icons v1.2.7
Discord Version
Stable, newest BetterDiscord, no other plugins
Describe the bug
Activity icons don't show up in the DM list.
In the server member list they do show up correctly, but if there's more than one, they're vertical. Seems to be fixable by e.g. adding display: flex; to .PI-indicatorContainer using custom CSS.
To Reproduce
Steps to reproduce the behavior.
Screenshots

Additional context
No other plugins or themes are enabled, BetterDiscord was installed today.

Oh, I'm dumb. It's not even this plugin. Seems like another plugin failed to disable correctly and was still “working” in the background.
Sorry for the confusion, closing the issue.


Augur DB: adding additional blade and monitoring tools

To be able to help with collection of data and data access, an additional blade is going to be integrated into the system. With that, we are going to be created monitoring tools to be able to understand the collection better. Others can add context to this as well

The tl;dr is this approach will :

Make more compute available to both Augur and Postgresql individually
Eliminate Augur and Postgresql from competing for the same resources
Isolating Postgresql from the server Augur runs on will reduce competition between Explorer users selecting data and Augur inserting data
Somewhat incidentally, though not insignificantly, we will store repositories on a local drive instead of an NFS mount, which will accelerate the pace of commit counting.

@jasonbrooks : I should also mention that we are closing in on an alpha release of a new veresion of Augur that incorporates Josh B's generous feedback. As of right now, the CPU utilization on that new version is a fraction of the old version. Instead of pinning serveral CPU's, we are rarely exceeding 10% utilization on any one process.

As soon as we hit alpha, I’ll create a parallel instance of your data on my server. The punch list we are working through include:

Scale validation of our celery/Redis job queuing (in process and looking good)
A function to check for moved repositories (Until 2 weeks or so ago, GitHub simply redirected all the API calls to the new location. Now it doesn’t. This is a fairly simple, but necessary function. We may simply skip these repos on the alpha path, but it will be a quick fix in the next release)
2-5 additional cycles of collection at scale, which is really how we identify GitHub API changes, “weird” data anomalies [like the Github user NaN]

The speed increase is a byproduct of refactoring data collection, implementing celery/Redis instead of our job scheduler, and the use of SQLAlchemy’s “upsert” function when values like “opened”/“closed” are changed.

An update on this, we haven't deployed the second blade yet because we're having some issues with the blade chassis that will require someone at the data center to put their hands on it. We've got a ticket in for that.

@jasonbrooks : how is this process going? We are ready to get this going.

Hey Sean, we had some hardware issues that were slowing us down, but we provisioned another blade for use by augur. I'll msg you on slack about it.

Tracking deployment of Augur elsewhere- blade has been deployed, we have access to it.


Should error on conflicting control plane names

The test examples/checker_tests/bad/issue1803_same_table_name.p4 is failing because Petr4 allows a conflict in control plane names. I'd be OK with this if it causes a failure in the interpreter rather than the checker for now, since that's where we do control plane names right now.

Currently this will manifest in a really non-descriptive way though... should I add better support? Also I don't think I was keeping track of naming for anything other than extern objects, so this might not raise for tables.

Marking unsupported until we do control plane names in the typechecker.


Ping optimization and addition of Py-TgCalls ping

Please wait.. I'm about to push some updates
That has some big changes.. after that can you send this PR again?

Also line 40 in ping.py , it should be Yukki.ping instead of Flamingo.ping

Also line 40 in ping.py , it should be Yukki.ping instead of Flamingo.ping

Ah, yes. You're right. I just copied this from my branch. I'm closing this. After update will be sent again.


ldap: missing default values make configuration difficult

You have to set a password for the ldap access..  in anonymous access, there is no need for a read-only connection to have a password.  This is the mode we run our ldap service as.
The chart errors out at:
[root@mouse-r13 netbox]# helm upgrade -n netbox netbox bootc/netbox -f ldap.yaml
Error: UPGRADE FAILED: template: netbox/templates/secret.yaml:25:64: executing "netbox/templates/secret.yaml" at <b64enc>: invalid value; expected string

I did get it to work with anonymous access, and that's not documented either in the docker page..

What did you need to do to enable anonymous access? Set the field to the empty string?

I should add this is mostly a duplicate of #41 aside from the anonymous access question.

This is what worked; but yes, both binddn and bindpw have to be defined, and empty - aka ''
remoteAuth:
  enabled: true
    #backend: netbox.authentication.RemoteUserBackend
  backend: netbox.authentication.LDAPBackend
  autoCreateUser: true
    # header: HTTP_REMOTE_USER
  defaultGroups: []
  defaultPermissions: {}
  ldap:
    serverUri: 'ldaps://ldapcrt.nersc.gov'
    startTls: false
    ignoreCertErrors: true
    bindDn: ''
    bindPassword: ''
    userDnTemplate: null
    userSearchBaseDn: 'ou=people,ou=nim-ldap,ou=Host,o=ldapsvc,dc=nersc,dc=gov'
    userSearchAttr: 'uid'
    groupSearchBaseDn: 'ou=PosixGroup,ou=nim-ldap,ou=Host,o=ldapsvc,dc=nersc,dc=gov'
    groupSearchClass: 'posixGroup'
    groupType: 'PosixGroupType'
    requireGroupDn: 'cn=staff,ou=PosixGroup,ou=nim-ldap,ou=Host,o=ldapsvc,dc=nersc,dc=gov'
    findGroupPerms: true
    mirrorGroups: true
    mirrorGroupsExcept: null
    cacheTimeout: 3600
    isAdminDn: 'cn=staff,ou=PosixGroup,ou=nim-ldap,ou=Host,o=ldapsvc,dc=nersc,dc=gov'
    isSuperUserDn: 'cn=otg,ou=PosixGroup,ou=nim-ldap,ou=Host,o=ldapsvc,dc=nersc,dc=gov'
    attrFirstName: 'givenName'
    attrLastName: 'sn'
    attrMail: 'mail'

Thanks, I'll get a documentation tweak into the README that says that.

I've just released version 4.0.1 of this chart which resolves this issue.


Group by time in the GROUP BY clause RTS-1689

Allowing grouping by time in the GROUP BY clause.
RFC: https://github.com/basho/rfc/pull/50
riak_ql: https://github.com/basho/riak_ql/pull/164
riak_kv: https://github.com/basho/riak_kv/pull/1600
riak_test: https://github.com/basho/riak_test/pull/1266

Getting some crashes
CREATE TABLE GeoCheckin (id SINT64 NOT NULL,
region VARCHAR NOT NULL,
state VARCHAR NOT NULL,
time TIMESTAMP NOT NULL,
weather VARCHAR NOT NULL,
temperature DOUBLE,
PRIMARY KEY ((id, QUANTUM(time, 15, 'm')),
id, time))
WITH (active = true,
allow_mult = false,
dvv_enabled = false,
dw = one,
last_write_wins = true,
n_val = 3,
notfound_ok = true,
postcommit = '',
pr = 0,
pw = 0,
r = one,
rw = one,
w = quorum)
riak-shell(18)>select count(*) from GeoCheckin where id = 123 and time > 1234 and time < 9987 group by time(time, 34);
UNEXPECTED ERROR - if you have logging on please send your logfile to Basho: Error processing incoming message: error:function_clause:[{riak_kv_qry_compiler, compile_group_by, [riak_ql_table_GeoCheckin_320523031941664944417524937300681317050, [{time_fn, {identifier, << time >>}, {integer,34}}], [], {riak_select_v3, {riak_sel_clause_v1, group_by, [0], [sint64], [<< COUNT(*) >>], [#Fun<riak_kv_qry_compiler.4.52106669>], [#Fun<riak_kv_qry_compiler.9.52106669>]}, << GeoCheckin >>, [{and_, {'<', << time >>, {integer, 9987}}, {and_, {'=', << id >>, {integer, 123}}, {'>', << time >>, {integer, 1234}}}}], [],[], riak_ql_table_GeoCheckin_320523031941664944417524937300681317050, none,false,sql, undefined, undefined, [{time_fn, {identifier, << time >>}, {integer,34}}], [],undefined}], [{file, src/riak_kv_qry_compiler.erl }, {line,121}]}, {riak_kv_qry_compiler, compile,2, [{file, src/riak_kv_qry_compiler.erl }, {line,75}]}, {riak_kv_qry, do_select,2, [{file, src/riak_kv_qry.erl }, {line,242}]}, {riak_kv_ts_svc, sub_tsqueryreq,4, [{file, src/riak_kv_ts_svc.erl }, {line,475}]}, {riak_api_pb_server, process_message,4, [{file, src/riak_api_pb_server.erl }, {line,388}]}, {riak_api_pb_server, connected,2, [{file, src/riak_api_pb_server.erl }, {line,226}]}, {riak_api_pb_server, decode_buffer,2, [{file, src/riak_api_pb_server.erl }, {line,364}]}, {gen_fsm, handle_msg,7, [{file, gen_fsm.erl }, {line,505}]}]
Connected...
riak-shell(19)>```

Getting some crashes

Works on my machine ;)
Do you have the riak_kv/at-group-by-time branch checked out?

Looks like we still have some test/dialyzer failures...

@javajolt it relies on the at-group-by-time branch of riak_ql

got it. sorry for missing that.

+1

+1

rebased this baby, too.  will retry once QL has merged

+1

+1


Add architecture diagrams to README

Add architecture diagrams from the Miro board to the README as PNGs/JPGs for a clear overview of our software stack.

Closing this since we will have everything on the wiki. Will reopen or create a new issue with updates if we choose to clean up the toplevel readme here at some point


Core Developer: Object Recognition

Feature:
  As a core developer
  I want to tell nunjucks to recognize if a variable is an object and if it has anything in it
  So that we can do fun things like assign unique classes to things in the approval flow

  Scenario: Variable Being and Object
    Given we need to do fun things like assign unique classes to elements
     When the designer needs to go in and style the approval flow
     Then we need to tell nunjucks to recognize if a variable is an object
       And if it has anything in it

Scenario: Update Approval Rendering
    Given we need to update the approval rendering
     When a DL has multiple DDs
     Then nunjucks needs to recognize that
       And add the appropriate classes

[ ] tell nunjucks to recognize if a variable is an object and if it has anything in it
[ ] update approval rending page to use different classes

@poofichu and josh will rewrite with more specifics
http://localhost/content/api/f82bca2a-ce61-4c01-bb87-e10abbbb2c89/12/approve

@scottnath posting this here so we don't lose it.  This is the technical mumbo jumbo:

[ ] tell nunjucks to recognize if a variable is an object and if it has anything in it
[ ] update approval rending page to use different classes

@scottnath to write a new story: Solve in 3 different chunks:

single piece of content (image, block of text)
multiple entries as single object
repeated piece of content

make sure that the classes are different

This story has been written: https://github.com/punchcard-cms/punchcard/issues/383


Add is_null method for column access

Fix #188
Requires: https://github.com/omnisci/omniscidb-internal/pull/5104 (was https://github.com/omnisci/omniscidb-internal/pull/5074)
Edit: test passes on both cpu and gpu versions of omniscidb

Hi Pearu, I've change the serialization method to use the hex representation of the float rather than to_string(float).

Replacing this PR with #239


Error "can't send uour data to server. Try again later."

I am receiving the error message: Error "Can't send data to server. Try again later." right after syncing my Gihtub account with Sourcerer. I can not use due to the error mentioned.

Hi @brendonguedes. Could you please try to sync github account again?

Vi @yaronskaya. I will revoke the sync and do the process again.

Hi @yaronskaya
I did the process again and the error persisted.

@brendonguedes could you please try once again?

I tried again and it worked. You haven't uploaded my data and repositories yet but I received an email from confircak de creation di my profile. Thank you @yaronskaya

error ceased after retries


Camera doesn't appear in JEI menu.

Issue in title. It does appear when looking at crafting recipes using the spyglass but not on the right-hand menu. Photographic paper appears as expected. Playing on Minecraft 1.21 with mod version 1.0.4.

I'll try to understand how JEI works to see if it would be possible to fix the compatibility 👍


Models updated to R2023b and declared Ts_* constants

This PR mirrors #63 but w/o the update of the project files.
Only models have been updated, singularly.

@sgiraz
Please, test the PR on the AMCBLDC.

Draft and on hold until we'll figure out what's wrong w/ R2023b-based codegen.

I'll have to update this PR to include the following new stuff:

Enable Code Generation Report to inspect the Code Replacement Library outcomes.
Enable Sin/Cos approximations to link against CMSIS.
Switch the Park transforms to the use of D-alignment.

cc @Nicogene @sgiraz @mfussi66 @marcoaccame

The 3 points above have been addressed.
Awaiting tests on the lego setup before merging.
cc @sgiraz @Nicogene @mfussi66

Fantastic.
Thanks!


 IF YOU DO NOT FOLLOW THE FORMAT OR MAKE A GENERIC TOKEN REQUEST YOUR ISSUE WILL BE DELETED WITHOUT COMMENT
YOUR JUSTLIST MUST FOLLOW THE JSON SPECIFICATION
https://github.com/justswaporg/justlists/example.justlists.ts
Checklist

[x] I understand that this is not the place to request a token listing.
[x] I have tested that my JustList is compatible by pasting the URL into the add a list UI at justswap.org.
[x] I understand that filing an issue or adding liquidity does not guarantee addition to the justlists website.

Please provide the following information for your token.
JustList URL must be HTTPS.
JustList URL:
JustList Name:
Link to the official homepage of the JustList manager:

Good life

Good trx

Sorry, your issue will be closed as you did not submit your information in the correct format.


keep examples metadata when pulling

such as document metadata and sentence id

Adding requests from #62.
When "pulling", optionally filter the example sentences by collocation and/or gramrel.
Be able to pull examples from more than one corpus.

So I am supposed to use "refs" in GET to ske to include additional metadata. To make this usable by the users, I have come up with a possible implementation in ea58cf5f8b18220462715e17ed3c5e1b63d64730. I am stuck as I don't know how to set/get these global variables (like ske_login). I can see they are in the database, but don't know how to introduce a new one. Or if that is actually the right way to go. When someone has five minutes, please take a look

I'm not sure I follow what you mean: the user needs to set them in the configuration (Sketch Engine connection etc.), you shouldn't need to take any care about that.

Ok. So then, which settings can add this to the API call? I was told:

it should be enough to add s.id to refs parametr. Various (structure.attribute) metadata are separated with comma: e.g. &refs=s.id,doc.title,p.heading

I see these settings inside lexonomy: Sketch Engine URL, Sketch Engine API URL, Corpus name, Concordance query, Additional search elements. Or do I have to set this somewhere else?

Yes - you need to change the API call to get the example from Lexonomy. That is hardcoded except for the API URL prefix. See the handler for ":dictID/skeget/xampl/" in lexonomy.js
If you will be changing anything there it would be good to rewrite it straight to Python. In this case it is extremely easy as it has no further dependences, it is basically just a wrapper to satisfy CORS.


⚠ Bofrost.fr has degraded performance

In e7b65b9, Bofrost.fr (https://www.bofrost.fr) experienced degraded performance:

HTTP code: 200
Response time: 1996 ms

Resolved: Bofrost.fr performance has improved in eaa0b27.


gupnp: revert #128538

Reverts NixOS/nixpkgs#128448 since it causes issues building the linuxKernel (5.12.13; in https://github.com/NixOS/nixpkgs/pull/128538 ) and author commented that the merge request wasn't ready. ( https://github.com/NixOS/nixpkgs/pull/128448#issuecomment-869854683 )

I think linuxKernel is broken (at least the 5.12 series) though not sure about how to use the review tool to check. :S


Phase regression?

Look at https://github.com/brettliem/phaseprep and https://github.com/idevicente/Phase-based_denoising_pipeline

Steps:

Remove non-steady-state volumes from phase data (identified from magnitude processing).
Compute optimal order of Legendre polynomials.
Convert phase from arbitrary units to radians.
Combine magnitude and phase into complex-valued data.
Split complex-valued data into real and imaginary components.
Apply motion correction transform from magnitude processing to real and imaginary files.
Combine motion-corrected real and imaginary files into complex-valued data.
Split motion-corrected complex-valued file into magnitude and phase components.
Temporally unwrap the motion-corrected phase data.
Detrend the unwrapped phase data using the Legendre polynomial order determined previously.
Apply brain mask from magnitude processing to phase data.
ODR phase regression.

Compute the power spectrum map of the phase data
Find the time point index of the maximum frequency peak starting from the 93th time point.
Compute the value that happens the most in the previous map to find the time point index of the respiration peak.
Multiply this index by 1.1 to consider the subpeaks around the maximum peak.
Convert it to frequencies (Hz) by multiplying it with the frequency value of the first time point.
Run the ODR regression.

Run standard GLM on phase-regressed magnitude data.

I'm not sure why the GLM is done separately from the phase regression. Maybe because the phase regression requires ODR?


Chaingreen fork support.

Is there a way to get chaingreen fork support any time soon?

Sorry, not interested in this.   Machinaris supports Chia and Flax.


Possibility to change Telescope's picker theme

I'd like to change :Telescope aerial to be a dropdown without a preview.
Normally, with Telescope I would do builtin.find_files(themes.get_dropdown({ previewer = false })), but here with only Vim command I cannot find a way to apply theme setting to the picker.
Or, I can do it with settings
require('telescope').setup{
  pickers = {
    find_files = {
      theme = "dropdown",
      previewer = false
    }
  }
}

Can you please show me how to do that?
Thanks.

Try this:
require('telescope').extensions.aerial.aerial(require('telescope.themes').get_dropdown({previewer = false}))

That works perfectly, thanks!
I think it will make sense to add it to the documentation.


Errors thrown if file is not found, but cached in Redis

You will still see the error for some time until it's "too old". This shouldn't be much of a problem since the error is catched and a 404 is returned.

Now there will be only one 404 shown, the hash is deleted from redis and the next request should be fine again.


[Suggestion] Merge guide/dev into website/developers

One section for all coding related matters.

Do not merge yet.  In addition to the comments the case for making this change needs to be made.
The reason for the old docs structure is that some of the dev guide content is specific to a given version.  We lose that clarity with this PR.  I expect @bostko is suggesting that precision is not worth the user-facing complexity, but @bostko it would be helpful to describe how this is simpler and note main places confusion could arise if we don't have the dev guide aligned for released versions.

@ahgittin Can you take a look at this please, and see if you're happy with the changes @bostko has made


Documentation Support

Thanks for this amazing library for Apple Silicon. I would like to know if I can start contributing code examples for each function available in the library so that it will be very useful for newcomers.
@awni,  I would like to get confirmation from you before starting to contribute.
regards,
Muhammad Waseem

I'm not entirely sure what you mean, but feel free to send a PR or something that I can take a look at!


Load features, fix colormaps, update README

Closes #10 , closes #5

Codecov Report
Patch coverage: 23.72% and project coverage change: -5.84 :warning:

Comparison is base (31b6373) 48.34% compared to head (e6be44f) 42.51%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
Additional details and impacted files
@@            Coverage Diff             @@
##             main      #11      +/-   ##
==========================================
- Coverage   48.34%   42.51%   -5.84%
==========================================
  Files           4        4
  Lines         211      247      +36
==========================================
+ Hits          102      105       +3
- Misses        109      142      +33

Impacted Files
Coverage Δ

...rc/napari_ome_zarr_roi_loader/roi_loader_widget.py
52.80% <21.42%> (-12.25%)
:arrow_down:

src/napari_ome_zarr_roi_loader/utils.py
28.44% <29.41%> (+0.01%)
:arrow_up:

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Wire up travis

We should wire up travis on pulls to test them

@deads2k , do you mean CI?

@deads2k , do you mean CI?

Yes, but you can start very basic: does it build.

I was thinking about Travis in particular: https://travis-ci.org.  There ought to be help available there for setting it up.  Remember to avoid grant it to much authority with your GitHub credentials.
Starting with build, then adding gofmt, and unit tests is probably the best plan.

The build was updated at: https://travis-ci.org/kubernetes-incubator/kube-mesos-framework
Is there anyway to broadcast to all collaborator in this repo?

Is there anyway to broadcast to all collaborator in this repo?

Not that I know, but awesome!  You think we're ready to start forcing green test for merge and protect the master branch?

Not that I know, but awesome! You think we're ready to start forcing green test for merge and protect the master branch?

I turned on branch protection, but as an admin, you'll have the power to merge despite the check.  The button shows up red.

I turned on branch protection, but as an admin, you'll have the power to merge despite the check. The button shows up red.

Got that, I'll also try to follow the process to use branch when CI/code is stable.

Close this issue for now, as the CI is running for days. Will enable e2e test in #32 .


fix(FX-4043): Alert Management page pills styling after palette upgrade

The type of this PR is: Bugfix

This PR solves FX-4043
Description
After the upgrade of palette to v3.1 the pill design in the alert management page broke, this pr addresses that.

⚠ ⚠ This PR doesn't address the other layout issues. I will follow up with design to create tickets and sync for the rest of the layout issues ⚠ ⚠

Web

Before
After

Mobile

Before
After

LGTM 👍


Feature: implement tweet new membership using kotlin

This function triggers on team.membership.create event, and post a tweet that a new user joined a team.
Implements Kotlin version of appwrite/appwrite#1918
Proof of Work

THANK YOU! All changes merged 🥳
Please reach out to eldadfux on our Discord server if you would like to claim your Appwrite swags! As a way of saying thank you, we would also love to invite you to join the Appwrite organization on GitHub. Please share your GitHub username with us on Discord.
You can accept the invite by visiting https://github.com/orgs/appwrite/invitation. By joining our team, you will officially be an Appwrite maintainer on GitHub.
You can change your membership visibility settings, so your new Appwrite team membership badge will show up on your personal GitHub profile.
Please feel free to look for more PRs you might be interested in helping with on our long list of Hacktoberfest friendly issues and help make Appwrite better :)


[Question]: Testing on different resolution

Your question
Hi amazing people,
I want to check if there is a good way that you can suggest for me to test the same test cases but multiple browsers and resolutions.
I am using the Page Object Model that is suggested here: https://playwright.dev/python/docs/pom
along with that I utilise pytest-playwright library to write my tests.
Currently, what I understood is that I can only override the browser context for each of the Test Case file, for example:
import pytest
from playwright.sync_api import Page
from page_objects import Homepage

# conftest.py
@pytest.fixture(scope="session")
  def browser_context_args(browser_context_args):
  return {
      **browser_context_args,
      "viewport": {
          "width": 1920,
          "height": 1080,
      }
  }

class TestHomepage1:
    @pytest.fixture(autouse=True)
    def setup(self, page: Page):
        self.page = page
        self.homepage = Homepage(page)
        self.homepage.navigate()

    def test_valid_homepage(self):
        visible = self.homepage.validate_visibility()
        assert visible

But in case I would like to run the "TestHomepage1" on different browser/devices, is there a way for me to describe the configuration on different test run?
What I thought of was:

Create different test cases with different configuration (I would like to avoid this as the test cases would be repetitive and hard to maintain)
To create a config file to specify the pytest-playwright run (I can't seem to find any docs if I am using pytest... was thinking of a file like playwright.config.ts - https://playwright.dev/python/docs/test-configuration/)
I need help from you guys T_T let me know what you guys think!

*first post here, I am a beginner in Python too, so please be gentle to me xD

Thanks for the feedback! I'm merging it into #69


Merge Swift 3 into master

This merges the code for Swift 3 and Xcode 8 into master.


Update Firebase Migration document.

Update the firebase document in Onedrive with the latest instructions and video.

No longer relative


add missing network selector on main and request screens

Fixes #312

Awesome work! Just one responsive breakpoint looks off:

@jstarry updated, thx

Looks great!! 👍


Be less agressive on numba version requirement

numba >=0.49  conflicts with datashader 0.11'a (numba < 0.49). Datashader is required by umap[plot]

gah. even I am filing things against the wrong repo. Moved upstream


https websites using BrowserMob proxy with Selenium does not work

I was trying to use the code in the section "Using  with Selenium" posted on https://github.com/lightbody/browsermob-proxy to load any https website (https://www.yahoo.com) on my Mac. I see an error message like this "
Oops.
Something went wrong.
Firefox can't load this page for some reason.
"
On the console I get an error message as seen below:
INFO: javax.net.ssl.SSLHandshakeException: Received fatal alert: unrecognized_name when requesting https://www.yahoo.com/
Aug 03, 2014 10:55:23 PM net.lightbody.bmp.proxy.util.Log info
INFO: javax.net.ssl.SSLHandshakeException: Received fatal alert: unrecognized_name when requesting https://www.yahoo.com/favicon.ico
Aug 03, 2014 10:55:24 PM net.lightbody.bmp.proxy.util.Log info
INFO: javax.net.ssl.SSLHandshakeException: Received fatal alert: unrecognized_name when requesting https://www.yahoo.com/favicon.ico

same issue here with browsermob via maven:
       <dependency>
            <groupId>net.lightbody.bmp</groupId>
            <artifactId>browsermob-proxy</artifactId>
            <version>2.0.0</version>
        </dependency>

Hey guys,
Had this issue for a really long time, untill I moved the browsermob proxy library first in the libs list, for some reason it works like that.

@metasonic can u please explain where u copy browsermob proxy library to which libs list?

@sachin6757
Please see the attached image.
I'm using intelij right now, but it's similar in eclipse as well, you have the option to order your dependencies, the trick is to have browsermob proxy first, or in front of the selenium one.

Poke me if you need more info

@sachin6757 Could you please explain more on this. This same solution is working for me but I am not understanding the reason


Cannot rewrite empty field nodes

Currently, if a field is null we can't rewrite/insert into it (because we don't have an associated range for a field that wasn't found).
Workaround
Rewrite the entire parent node that contained the null field.
Example
engine marzano(0.1)
language python

pattern test_func($name, $parameters, $return_type, $body) {
    function_definition($name, $parameters, $return_type, $body) as $function where {
        $name <: r"test_.*",
    }
}

pattern test_class($name, $superclasses, $body) {
    class_definition($name, $superclasses, $body) as $cls where {
        $superclasses <: contains `TestCase`,
    }
}

test_func($return_type) as $function where {
    $function <: within test_class(),
    $return_type => `None`
}

This keeps coming up and the solution of rewriting the parent isn't very elegant. We should try to solve by inspecting the grammar and finding the "empty" binding.


Lat-Lon Finite Differences

Hi, this package looks really neat!
I was wondering if you had a reference for how you are calculating the finite differences with spherical coordinates? From the looks of it, you’re simply multiplying the Y-axis by a scalar factor of degrees to meters and the X-axis by the same plus  and a cosine of the Y-coords. I’m not familiar with this but this seems really, really useful in general with finite differences for lat-lon.
Do you have a reference or something I could look at because I’m not familiar with this but I would really like to use it.
Thanks!

Hi, thanks for your interests.  This is just a simple centered finite difference for lat-lon grids.  I guess you can find the differential operators in spherical coordinates in a textbook like dynamic meteorology or geophysical fluid dynamics.  I had a clip for your convenience:

For a scalar, its meridional gradient (second line) does not need the cosine weighting;
For a vector, its meridional divergence (third line) does require cosine weighting.

Thank you very much! I have a quick question: why is the wikipedia article consistently have a sin instead of a cos? Is this because of the typical bounds? Or am I missing something more fundamental and/or subtle?

Close this now and feel free to re-open it in any case.


fix: #9 adapt initialiser parameter to OpenSSL::PKey implementation

Fixes #9
Instead of one parameters it allows a series of parameters (including none). The parameters are now conform with the actual implementation, see e.g.: https://ruby-doc.org/stdlib-2.6.1/libdoc/openssl/rdoc/OpenSSL/PKey/RSA.html
This mostly caused issues when none was given - part of the jwt gem initialisation process at it seems - since at least one parameter was expected.
However, it also adds an additional check to avoid issues when a different number of parameters are given: otherwise der_to_pem could raise an error - hiding the true error from the PKey initialisers
Also, it should be backwards compatible for older jwt gem versions.

@rylarson @danleyden @atreat please review


Scan webpack modules for duplicates

we should warn if any duplicate modules are found

this is actually very challenging to detect, so we won't bother trying to perform this detection


diffoscope: 194 -> 197

Motivation for this change
ChangeLogs:

https://diffoscope.org/news/diffoscope-195-released/
https://diffoscope.org/news/diffoscope-196-released/
https://diffoscope.org/news/diffoscope-197-released/

Things done

Built on platform(s)

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

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

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

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

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

Darwin ARM is expected to fail?

It's a dependency failure.

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

2 packages built:

diffoscope
diffoscopeMinimal


feat: feedback sound when reset triggered

https://github.com/SlimeVR/SlimeVR-Server/issues/422
Borrow some idea from Philip6294

[x] add gui setting
[x] configure i18n
[x] enable the play sound in server

First, great someone is actually fully implementing this because I always wanted this feature and I didn't know how to modify the GUI.
One thing I would add tho is the option to have the sound play when the tap is detected and not when the reset is executed (so before the reset delay).
My version played the sound when the tap was detected.

Could also be nice to have this for the reset shortcuts! Through the keybinds and controller bindings

First, great someone is actually fully implementing this because I always wanted this feature and I didn't know how to modify the GUI. One thing I would add tho is the option to have the sound play when the tap is detected and not when the reset is executed (so before the reset delay). My version played the sound when the tap was detected.

I have taken a quick look at your version, and now should work as expected.
Do you guys know how can I trigger tap with owoTracker? seem the tap based is not working for all reset now

For the controller binding, do I need to do anything inside the codebase? ( seem we need to do sth in feeder-app )

@Eirenliel

The sound should play when actions are triggered no matter the source - tap, keybind, controller, or GUI button. It should be played before the action and and after.

I think playing the sound before the action is only needed when the source is a tap or maybe GUI Button. Because AFAIK those are the only cases where there's a delay between reset trigger and actual reset.

True, @Philip6294.

@Philip6294 @Eirenliel, I would like to clarify do we need to have GUI button feedback sound?
Since GUI button will already start the countdown, which is a visual feedback.
For tapping, it is better with a sound feedback

I would only do sound Feedback for Tapping Resets.
Other Reset could maybe have Feedback when the reset actually happens, but GUI probably does not need that because it already shows a countdown as feedback.

I think feedback when reset happens should be from any source. It's UX consistency.

Jup, for UX consistency it's definetly better when it happens on every reset

Thanks @Philip6294 @Eirenliel
I think these is the changes needed:

[ ] Make feedback sound for all reset action regardless of the source
[ ] remove the keybind
[ ] New config for feedback sound

For the feedback config, do we need to have the sound toggle for each action type( GUI, Tab and keybind)

Final Decision with @Eirenliel:

[ ] implement the feedback sound for tap first, when the tap reset is triggered, play a sound
[ ] put this setting in interface

will create another PR for on reset sound

Tap sound toggle should be below tap settings in gesture settings imo

@marcozzxx810 Please your PR so the gui play the sound. (or any sound for that matter). Add a RPCMessage to the protocol to so. The sound should not be handled by the server imo

Hi, just saw this because I was requested for review in solarxr. In my opinion, it is violating separation of concerns for the server to control UI such as sounds.
@loucass003 I believe it makes more sense for the server to notify the GUI of concepts like "reset complete" or "reset triggered" rather than dictate UX like "go play a sound". The GUI should be in charge of UX not the server.
Do you agree? What are your thoughts.

Yes i do agree it would be better. Also that means that this PR that was merged recently is probably not necessary anymore. if there is no concept of "Sound" at all in the server. https://github.com/SlimeVR/SolarXR-Protocol/pull/97/files

Hi, just saw this because I was requested for review in solarxr. In my opinion, it is violating separation of concerns for the server to control UI such as sounds.
@loucass003 I believe it makes more sense for the server to notify the GUI of concepts like "reset complete" or "reset triggered" rather than dictate UX like "go play a sound". The GUI should be in charge of UX not the server.
Do you agree? What are your thoughts.

Make sense to me, coz we don't want sound event couple with server. I guess the following changes is needed:

revert the TabDection
add a ResetResponse to the RPC message in the protocol
add an RPCResetHandler, ResetHandler, ResetListener
emit reset rpc message when triggered or completed

This PR started so simple and change so much... but I agree, we can go for good structure!

Hi, just saw this because I was requested for review in solarxr. In my opinion, it is violating separation of concerns for the server to control UI such as sounds.
@loucass003 I believe it makes more sense for the server to notify the GUI of concepts like "reset complete" or "reset triggered" rather than dictate UX like "go play a sound". The GUI should be in charge of UX not the server.
Do you agree? What are your thoughts.

Make sense to me, coz we don't want sound event couple with server. I guess the following changes is needed:

revert the TabDection
add a ResetResponse to the RPC message in the protocol
add an RPCResetHandler, ResetHandler, ResetListener
emit reset rpc message when triggered or completed

@loucass003 , @TheButlah , can I get some advice for this to-do?

I lack the context to really help, I just chimed in because the current approach seemed like an antipattern.
@loucass003 said he would provide some advice once he gets home, :nya_gun: him if he doesn't.

need:

https://github.com/SlimeVR/SolarXR-Protocol/pull/101
https://github.com/SlimeVR/SlimeVR-Server/pull/611 ( this need to merge first as protocol pr has changed)

Resets only happen on GUI buttons... I can't get it to trigger on taps nor keybinds. Also it only triggers before the reset when it does, not before and after...

I noticed there is some weird behavior but I find out when I launch GUI first then server, then toggle on and off the feedback setting in the setting. The key bind will work.
I am not too sure about the implementation here:  https://github.com/SlimeVR/SlimeVR-Server/pull/576/files#diff-2da1b5d9816c92ddc68fdcb4f223336f0adcf2816a006f090ff21c82b9f7c45aR36
So there are two issue:

ResetResponse is not received when server start first then client
the INIT GUI config doesn't works? how do I update this file https://github.com/SlimeVR/SlimeVR-Server/blob/main/gui/src/hooks/config.ts#L66

Resolved the https://github.com/SlimeVR/SlimeVR-Server/issues/621
Not the ws.current. Some other code can mutate the ws.current and the old websocket instance will not be closed by cleanup. The connection will remain open and cause bugs
Therefore we should use another variable wsCurrent to call close()

Resets only happen on GUI buttons... I can't get it to trigger on taps nor keybinds. Also it only triggers before the reset when it does, not before and after...

I don't think we need the sound after yet.

did this issue blow up out of proportion? what's going on?

did this issue blow up out of proportion? what's going on?

The first issue is related to https://github.com/SlimeVR/SlimeVR-Server/issues/621 , then the cleanup function is not properly setup resulting bug in receiving the rpc message
The second one is that the GUI init config is stored in %appdata%, just we need to override the config. I overthink

Resets only happen on GUI buttons... I can't get it to trigger on taps nor keybinds. Also it only triggers before the reset when it does, not before and after...

I don't think we need the sound after yet, since this PR started with the initiative to play a sound when triggered.
With both started and ended, it will be quite noisy

Yes. This PR is for triggering on the start. We can add after later, since it requires modifying different parts of the code, and not as important. Though I would like to have an option in the future.

The only remaining issue left is linux cannot play the sound automatically by useEffect hook.

The feedback sound being on by default doesn't work. I have to toggle them off and on again (reproduced by deleting the key in localstorage). Also is there a less aggressive beep please. The pitch and popping of this one hurts me ;-; The sound itself works tho, with keybind, GUI and taps at least :3

@Louka3000, thank you for the review. I have successfully reproduced the issue by removing all keys.
Now, if the local storage is completely empty, the feedbacksound setting should be true and able to play sound
For the sound file, @Eirenliel will provide some meow sound to replace the beep ( I hate too )

@Louka3000 fixed, thank you for the help

@Louka3000 updated!

@0forks  https://github.com/SlimeVR/SlimeVR-Server/issues/621
Reverting the fix will resulting the sound features will break, Also, reverting will make the problem worst. As the old implementation will not disconnect properly coz the old way used a mutable state to store the connection. The mutable state will overwrite when it initializes so when calling was. close with the user will not close the connection.
As I know reconnecting only happens when development. maybe you can find an issue a PR to properly fix it instead of reverting the feature that works.
The previous approach lead to unexpected behavior coz ref means to be mutable but local variable now will not overwriting easily. Maybe you can take a look : https://stackoverflow.com/questions/60152922/proper-way-of-using-react-hooks-websockets#comment120898768_60161181

Will look into it, thanks for context.