Attempted Reply/Send Failed from alias

Hi guys, I'm receiving the same email as anonaddy/anonaddy/issues/310 from my self-hosted instance.

Attempted Reply/Send Failed
An attempt to send or reply from your alias [...]

I just upgraded to the last docker image with Rspamd, I send emails from gmail to anonaddy in order to reply to an email received earlier. As far as I know, gmail has a proper dmarc record.
/etc/rspamd/local.d/milter_headers.conf is present in the container and looks correct.
rspamadm configdump -m result is:
Modules enabled: force_actions, forged_recipients, phishing, milter_headers, regexp, mime_types, once_received, history_redis, settings, arc, maillist, fuzzy_check, dkim_signing, dkim, whitelist, spf, rbl, dmarc, mid, multimap, greylist, hfilter, bayes_expiry, emails
Modules disabled (explicitly): metadata_exporter, neural, ratelimit, rspamd_update, spamtrap, aws_s3, dcc, asn, external_relay, bimi, replies, p0f, trie, http_headers, mx_check, chartable
Modules disabled (unconfigured): antivirus, fuzzy_check, elastic, url_redirector, reputation, clickhouse, spamassassin, metric_exporter, clustering, ip_score, dynamic_conf, maps_stats, fuzzy_collect, external_services
Modules disabled (no Redis):
Modules disabled (experimental):
Modules disabled (failed):

is there anything I can provide to help?

While reading gmail.com's DMARC carefully I found out the following:
dig TXT _dmarc.gmail.com +noall +answer

; <<>> DiG 9.10.6 <<>> TXT _dmarc.gmail.com +noall +answer
;; global options: +cmd
_dmarc.gmail.com.	111	IN	TXT	"v=DMARC1; p=none; sp=quarantine<EMAIL_ADDRESS>
Do you see p=none ?
Now read again the message from Anonaddy:

If this attempt was made by yourself, then you need to make sure your recipient's domain (gmail.com) has the correct DNS records in place; SPF, DKIM and DMARC.
If this attempt was not made by you, then someone else may be attempting to send a message from your alias. Make sure you have a suitable DMARC policy in place (with p=quarantine or p=reject) along with SPF and DKIM records to protect your recipient's email address from being spoofed.

See, p=none is not p=quarantine or p=reject. Is there a "strict" configuration to set somewhere?

It can be p=none, I just recommend quarantine or reject.
What does the notification email you receive say your authentication results are, or does it not contain them?

It can be p=none, I just recommend quarantine or reject.

We're not in control of Gmail's DMARC :) Or others... However, how can I test if it is that or not?

What does the notification email you receive say your authentication results are, or does it not contain them?

Could it be an IPv6 issue like "kinda mentioned" in https://github.com/anonaddy/anonaddy/issues/310 ?

Alright, there is a big problem with something inside this container. My eyes are turned to Rspamd but I couldn't test it.
After enabling IPv6 for Docker, suddenly we can send emails through Anonaddy.
What does it mean?
Well, it means that something in the container is using IPv6 only where it shouldn't.

Is there an IPv6 hardcoded somewhere?
Is there a bad implementation of DNS queries somewhere? Ex: By getting the first IP of a resolver (not standard) instead of a round robin (standard).

This is a important issue because yes, we should use IPv6 today but, we should not have IPv6 only.
I will post this message in anonaddy/anonaddy's project as I am not sure that issue comes from Rspamd.
For those who'd need a quick get around like me until this issue is fixed, here is how I've activated IPv6 for Docker.
Update /etc/docker/daemon.json with the following lines (Yes we need to NAT IPv6, no we don't need to provide a gateway):
{
  "ipv6": true,
  "fixed-cidr-v6": "fd01::/64",
  "ip6tables": true
}

Restart docker:
systemctl restart docker

For those using Traefik, you'll need to create a network for Traefik with IPv6 enabled:
docker network create --ipv6 --subnet=fd01:1::/64 traefik

Question is, how should people do with mail services providers such as GMail, Outlook...? They can't modify an SPF record on a zone they don't own.

@Zegorax

which domain do you send an email to (when you send an email it has to be the SPF of the receiver, not yours) ?
do you confirm having IPv6 enabled and working in your container?
do you confirm that your container can send a request to you DNS server using IPv6?

@spyesx I need to check again about IPv6, something seems to be not working right on my system.
Would you like to share an obfuscated SPF, DMARC and TXT records you have for your domain ?

My SPF or DMARC won't be useful since you're not sending an email to my domain :)
Open a shell in your container then get a random IPv6, let's say Gmail
$ dig +short AAAA gmail.com
2a00:1450:4002:411::2005

From here you can ping this IPv6:
ping -6 2a00:1450:4002:411::2005
PING 2a00:1450:4002:411::2005(2a00:1450:4002:411::2005) 56 data bytes
64 bytes from 2a00:1450:4002:411::2005: icmp_seq=1 ttl=114 time=19.9 ms
64 bytes from 2a00:1450:4002:411::2005: icmp_seq=2 ttl=114 time=19.9 ms

If you can't ping, your container is not IPv6 ready.
Therefore, when Rspamd (as I assume still now) will send a query to a DNS server to get the SPF record but it won't get any answer because it uses IPv6 only. This is the bug. If your container is not IPv6 ready... you won't go further.

Okay now I get it. So it's more on Rspamd's side and it has an issue trying to do IPv6-only. My containers are definitely not ready for IPv6 since I do not use it yet on the host system.
I firstly assumed that Rspamd needed to have an IPv6 address binded for it to work, but that it would not actively use it, which is not the case then here.
I will need to search deeper on how to work around this problem.

@spyesx I searched this repo and came across https://github.com/anonaddy/docker/blob/master/examples/rspamd/anonaddy.env By default, RSPAMD_ENABLE is not set. I checked in the container and there is no process running related to rspamd as well.
Therefore, I think the problem does not come from rspamd with/without IPv6.
Do you have RSPAMD_ENABLE set to "true"?

First of all add this line to your .env file. It resolved multiple problems for me (replace with your domain names):
SANCTUM_STATEFUL_DOMAINS=localhost,localhost:8112,<IP_ADDRESS>,<IP_ADDRESS>:8112,::1,mail.domain.com,mil.domain.com:8112
I do have RSPAMD_ENABLE enabled and it works.
Have you generated the DKIM key and added it to your DNS record?

@GitTworn DKIM is enabled and active.
I've looked at SANCTUM_STATEFUL_DOMAINS, but to be honest, it should not change anything since from what I understood, this variable controls something that is more likely related to Laravel's authentication mechanism.
I tried it but as expected it did not change anything unfortunately.

These are my templates and my install works great.
I almost died getting to this point but I'm happy to share.
I might state the obvious but...:
First you need a domain name. For this example i'm using domain.com.
In the DNS settings of that domain add an A record for the mail subdomain to the IP of your server.
I also add a * (wild card) to the same server because I host more subdomains on the same server.
Now add an MX record to the mail subdomain with priority 10.
Also add a TXT record _dmarc to v=DMARC1;p=quarantine;pct=90;sp=quarantine;adkim=r;aspf=r
and a TXT for domain.com. to v=spf1 mx ~all
Adjust the file system paths as you like in the following;
I like using Nginx Reverse Proxy Manager because it has a nice UI.
In docker first create a docker network named: reverseproxy-nw for connecting the internal docker images so we dont have to expose ports to the outside world.
Then run:
Nginx Proxy Manager - compose file
services:
  nginx-proxy-manager:
    image: jlesage/nginx-proxy-manager
    container_name: nginx-proxy-manager
    ports:
      - "80:8080"
      - "443:4443"
      - "8181:8181" # open now, close later
    volumes:
      - "/root/docker/nginx-proxy-manager:/config:rw"
    environment:
      - "TZ=Europe/Belfast"
    restart: always
    networks:
      - nginx-proxy-manager-nw
      - reverseproxy-nw

networks:
  nginx-proxy-manager-nw:
  reverseproxy-nw:
    external: true

Then create a docker .env file in the correct location for anonaddy:
anonaddy.env file
TZ=Europe/Belfast
PUID=1000
PGID=1000

MEMORY_LIMIT=512M
UPLOAD_MAX_SIZE=50M
OPCACHE_MEM_SIZE=128
REAL_IP_FROM=<IP_ADDRESS>/32
REAL_IP_HEADER=X-Forwarded-For
LOG_IP_VAR=http_x_forwarded_for

APP_KEY=base64:QEgJ4hBcuQugQCtKIyHZo/B7HvIVqomXFpAtpKOfKKk=
APP_DEBUG=true
APP_URL=https://mail.domain.com

<EMAIL_ADDRESS>ANONADDY_ADMIN_USERNAME=something
ANONADDY_ENABLE_REGISTRATION=false
ANONADDY_DOMAIN=domain.com
ANONADDY_ALL_DOMAINS=domain.com
ANONADDY_HOSTNAME=mail.domain.com
ANONADDY_DNS_RESOLVER=<IP_ADDRESS>
ANONADDY_SECRET=alksjhU930ufaakljfkljashdflkjsahdfjkladhfjlkah245g
ANONADDY_LIMIT=200
ANONADDY_BANDWIDTH_LIMIT=10737418240
ANONADDY_NEW_ALIAS_LIMIT=1000
ANONADDY_ADDITIONAL_USERNAME_LIMIT=100
ANONADDY_WORDLIST_FILE=/var/www/anonaddy/config/wordlist.json

# IMPORTANT (need this)
SANCTUM_STATEFUL_DOMAINS=localhost,localhost:8112,<IP_ADDRESS>,<IP_ADDRESS>:8112,::1,mail.domain.com,mil.domain.com:8112

MAIL_FROM_NAME=name
<EMAIL_ADDRESS>
POSTFIX_DEBUG=false
POSTFIX_SMTPD_TLS=false
POSTFIX_SMTP_TLS=false
POSTFIX_SMTPD_TLS_CERT_FILE=/certs/certificate.pem
POSTFIX_SMTPD_TLS_KEY_FILE=/certs/privatekey.pem
# because my host doesn't allow me to open port 25, I use a  different smtp server to relay the email. You can use any server you can log in to.
POSTFIX_RELAYHOST=smtp.mail.server
POSTFIX_RELAYHOST_AUTH_ENABLE=true
POSTFIX_RELAYHOST_USERNAME=username-mail-server
POSTFIX_RELAYHOST_PASSWORD=password-to-log-in-to-mail-server

DKIM_ENABLE=true
DMARC_ENABLE=true

RSPAMD_ENABLE=true
RSPAMD_WEB_PASSWORD=you-can-choose

Anonaddy compose file
services:
  anonaddy_db:
    image: mariadb:10.8
    container_name: anonaddy_db
    command:
      - "mysqld"
      - "--character-set-server=utf8mb4"
      - "--collation-server=utf8mb4_unicode_ci"
    volumes:
      - "/root/docker/anonaddy/db:/var/lib/mysql"
    environment:
      - "MYSQL_ALLOW_EMPTY_PASSWORD=yes"
      - "MYSQL_DATABASE"
      - "MYSQL_USER"
      - "MYSQL_PASSWORD"
    restart: always
    networks:
      - reverseproxy-nw
  anonaddy_redis:
    image: redis:4.0-alpine
    container_name: anonaddy_redis
    restart: always
    networks:
      - reverseproxy-nw
  anonaddy:
    image: anonaddy/anonaddy:latest
    container_name: anonaddy
    depends_on:
      - anonaddy_db
      - anonaddy_redis
    ports:
      - target: 25
        published: 25
        protocol: tcp
      - target: 11334
        published: 11334
        protocol: tcp
      - target: 587
        published: 587
        protocol: tcp
    volumes:
      - "/root/docker/anonaddy/data:/data"
    env_file:
      - "./anonaddy.env"
    environment:
      - "DB_HOST=anonaddy_db"
      - "DB_DATABASE=${MYSQL_DATABASE}"
      - "DB_USERNAME=${MYSQL_USER}"
      - "DB_PASSWORD=${MYSQL_PASSWORD}"
      - "REDIS_HOST=anonaddy_redis"
    restart: always
    networks:
      - reverseproxy-nw

networks:
  reverseproxy-nw:
    external: true

Create User
Log into a terminal of the anonaddy docker image and type: anonaddy anonaddy:create-user "username"<EMAIL_ADDRESS>After that stay in the console and type: anonaddy gen-dkim
Some files will be generated containing a key.
DNS
Now edit your domain name DNS settings and add a TXT record for default._domainkey with value v=DKIM1; k=rsa; p=[KEY]
where [KEY] = the long string that is generated in the step above.
Now first open port 8181 on your firewall to allow access to the reverse proxy manager UI. We are going to close it later. Also open the anonaddy email ports you need: 25/tcp, 11334/tcp, 587/tcp.
I open 587 because my host does not allow me to send email, so I use another server.
Now log in to domain.com:8181 to log into Nginx Reverse Proxy Manager UI (google credentials). Change your password and create a reverse proxy host (revprox.domain.com) to point to the reverse proxy manager docker image: http://nginx-proxy-manager:8181. Make sure to generate a new ssl certificate.
You can now close port 8181 on the firewall and log back in to the reverse proxy manager UI via the domain name https://revprox.domain.com.
You can also remove the 8181 port in the docker compose file and restart the image to un-expose the port.
Add a reverse proxy host for mail.domain.com to internal http://anonaddy:8000. You don't have to expose the anonaddy app port because you can use its internal host name, And internally all ports are always exposed.
Now you can log into the anonaddy app via the domain name and user you created, https://mail.domain.com and start creating aliases.
Now you can send emails to you aliases and they will get forwarded.
reply
If you want to reply from an email address that you are forwarding to, lets say you are forwarding to<EMAIL_ADDRESS>you need to be able to edit the DNA settings of the domain john.com in order to allow the mail server (DNS MX record of john.com) to send/relay email using the mail server of domain.com (the mail server sending email for anonaddy). Because usually the mail server of the own domain john.com would be sending the email.
You do that by editing a TXT record for john.com by using the 'include' parameter.
The TXT record should look like this for the primary domain name, so john.com. with value v=spf1 a mx ptr a:domain.com a:mail.domain.com include:_spf.google.com include:domain.com include:mail.domain.com ~all
I'm replying from, and forwarding my aliases to, a google managed account using my own domain name.
This is what works for me...

Hi all,
I have just installed anonaddy and I am seeing the same problem. Is there a solution on the horizon. My docker network does not support IPv6 and I am anxious to recreate it, as it is used by a large traefik installation. Is there a way to get this working without IPv6 or can I modify an existing docker network to support IPv6 (and would that help)?

I have IPv6 disabled system wide. It was bugging with my Docker install. AnonAddy does not depend on IPv6.

I have IPv6 disabled system wide. It was bugging with my Docker install. AnonAddy does not depend on IPv6.

Hmm, ok my docker install has run everything else just fine up until now, what did you exactly change with your docker to get anondaddy to run proberly?

My exact steps are outlined above.

That very much looks like my setup. The only thing I haven´t done like that is the SPF setup of the target domain to include the anondaddy domain....

What part is not 'running properly' in your case?

When I try to reply to a anonaddy mail I get the "Attempted reply/send from alias has failed" error mail saying that my target domain must have a valid DMARC entry (which it has) and must permit the message to be sent (which I am just trying to find out wether the problem might be there).

The targets DMARC is v=DMARC1; p=quarantine<EMAIL_ADDRESS><EMAIL_ADDRESS>adkim=r; aspf=r; pct=100; rf=afrf; ri=86400; sp=none
What do I have to add to allow anonaddy mails to be sent?

For me this was fixed with the last section of my "guide";

You do that by editing a TXT record for john.com by using the 'include' parameter.
The TXT record should look like this for the primary domain name, so john.com. with value v=spf1 a mx ptr a:domain.com a:mail.domain.com include:_spf.google.com include:domain.com include:mail.domain.com ~all

Just remember that, because these are DNS settings, they might take a while to propagate.

I will wait some more, Maybe it will start working...

Ehm, I think there is a problem with DNS in my install. It seems it cannot read the TXT entry for a custom domain. I am using the stock docker image and DNS inside it works. I have set google dns as resolver and checked that google DNS sees the TXT entry. It does but anonaddy doesn´t....

Outgoing firewall? My hosting provider blocked port 25 for example. I'm using a relay SMTP server. It has nothing to do with DNS I know.

Seemed to be the DNS caching. That now worked...

😀 that helps!

@GitTworn Can you make an example with the following data ?
Main email address is<EMAIL_ADDRESS>Anonaddy custom domain is : hiddendomain.com
Could you share what records should be for both domains ? (Maindomain.com and hiddendomain.com)
Thanks a lot in advance. I still cannot get it to work.

Maybe I am on to something. When I try to add custom domains it first complains that it does not find an MX record. After some time when the DNS info is propagated properly it will start complaining that there is no SPF record (so it did find the MX records all right) and that never stops. This happend for two domains now although I copy and pasted the SPF info from the custom domains page. Maybe the whole problem is that it cannot parse SPF info correctly for some reason. That would also explain that the alias thing fails as it would not be able to parse the SPF info of the target domain and error out...

I have been struggling with this issue for a day and I think I finally got it working. This is my anonaddy.env file:
TZ=Etc/UTC
PUID=1000
PGID=1000

APP_NAME=AppAddy
APP_ENV=production
APP_KEY=secret
APP_DEBUG=false
APP_LOG_LEVEL=debug
# The URL of the AnonAddy instance, can be anything you like e.g. https://aa.example.com, or just https://example.com, if using a non-standard port you must include it e.g. https://example.test:8000. Do not include a trailing slash '/'
APP_URL=https://app.example.com

LOG_CHANNEL=stack

DB_CONNECTION=mysql

# The from name to be used for outgoing email notifications from AnonAddy
MAIL_FROM_NAME=Rehan
# The from address to be used for outgoing email notifications from AnonAddy
<EMAIL_ADDRESS>MAIL_DRIVER=smtp
MAIL_HOST=mail.example.com
MAIL_PORT=25
MAIL_ENCRYPTION=tls
MAIL_EHLO_DOMAIN=mail.example.com
MAIL_VERIFY_PEER=true

# The SMTP FROM address to be used if the alias address cannot be, e.g. for a custom domain that is not verified for sending
<EMAIL_ADDRESS># This allows you to receive emails as a catch-all at the apex domain e.g<EMAIL_ADDRESS>ANONADDY_ADMIN_USERNAME=johndoe
ANONADDY_ENABLE_REGISTRATION=false
ANONADDY_DOMAIN=example.com
ANONADDY_HOSTNAME=mail.example.com
ANONADDY_DNS_RESOLVER=<IP_ADDRESS>
ANONADDY_ALL_DOMAINS=example.com
# Used for verifying custom domains, can be anything e.g. 64U64QcpgWHAZPyr4nN58kDGvwj9TkKMGyuXcjMFA7CdhTDy2f
#ANONADDY_SECRET=long-random-string
# Number of emails that can be forwarded through the service per hour by any one user
ANONADDY_LIMIT=200
# Monthly bandwidth limit, default 100MB
ANONADDY_BANDWIDTH_LIMIT=104857600
# Limit on how many new aliases can be created per hour, default 100
ANONADDY_NEW_ALIAS_LIMIT=100
# Limit on the number of additional usernames that can be added, default 10
ANONADDY_ADDITIONAL_USERNAME_LIMIT=10
# Fingerprint of the private key that you generated on the server to be used to sign encrypted forwarded emails
#ANONADDY_SIGNING_KEY_FINGERPRINT=
# This is only needed if you will be adding any custom domains. If you do not need it then leave it blank. ANONADDY_DKIM_SIGNING_KEY=/etc/opendkim/keys/example.com/default.private
#ANONADDY_DKIM_SIGNING_KEY=
#ANONADDY_DKIM_SELECTOR=default

SANCTUM_STATEFUL_DOMAINS=app.example.com

# Postfix
POSTFIX_DEBUG=false
POSTFIX_SMTPD_TLS=true
POSTFIX_SMTPD_TLS_CERT_FILE=/certs/example.com.fullchain.pem
POSTFIX_SMTPD_TLS_KEY_FILE=/certs/example.com.key.pem
POSTFIX_SMTP_TLS=true

# Rspmod
RSPAMD_ENABLE=true
RSPAMD_WEB_PASSWORD=abc

I am not using the relay host and sending the emails directly from my IP. The current DNS setting I am using is:
SPF
example.com.		300	IN	TXT	"v=spf1 mx -all"

DKIM
default._domainkey.example.com. 300 IN	TXT	"v=DKIM1; k=rsa; p=PUBLIC_KEY"

DMARC
_dmarc.example.com.	300	IN	TXT	"v=DMARC1; p=reject; adkim=s; aspf=s"

This is my compose.yaml file:
---
version: '3.8'

secrets:
  mariadb_root:
    file: /docker-data/anonaddy/secrets/mariadb_root
  mariadb:
    file: /docker-data/anonaddy/secrets/mariadb
  app_key:
    file: /docker-data/anonaddy/secrets/app_key
  anonaddy_secret:
    file: /docker-data/anonaddy/secrets/anonaddy_secret
  postfix_relayhost_password:
    file: /docker-data/anonaddy/secrets/postfix_relayhost_password
  cloudflare_api_token:
    file: /docker-data/anonaddy/secrets/cloudflare_api_token
  rspamd_password:
    file: /docker-data/anonaddy/secrets/rspamd_password

networks:
  inner-net:
    driver: bridge
  backplain:
    external: true

services:
  db:
    image: mariadb:${DB_VERSION}
    container_name: 'anonaddy-db'
    command:
      - "mysqld"
      - "--character-set-server=utf8mb4"
      - "--collation-server=utf8mb4_unicode_ci"
    secrets:
      - mariadb_root
      - mariadb
    networks:
      - inner-net
    environment:
      MARIADB_ROOT_PASSWORD_FILE: /run/secrets/mariadb_root
      MARIADB_DATABASE: ${MARIADB_DATABASE}
      MARIADB_USER: ${MARIADB_USER}
      MARIADB_PASSWORD_FILE: /run/secrets/mariadb
    volumes:
      - type: bind
        source: /docker-data/anonaddy/mariadb
        target: /var/lib/mysql
        read_only: false
    healthcheck:
      test: ["CMD", "/usr/local/bin/healthcheck.sh", "--connect"]
      interval: 5s
      timeout: 5s
      retries: 10
      start_period: 10s
    restart: 'unless-stopped'

  redis:
    image: redis:alpine
    container_name: 'anonaddy-redis'
    networks:
      - inner-net
    environment:
      TZ: Etc/UTC
    volumes:
      - type: bind
        source: /docker-data/anonaddy/redis
        target: /data
        read_only: false
    healthcheck:
      test: ["CMD-SHELL", "redis-cli ping | grep PONG"]
      interval: 1s
      timeout: 3s
      retries: 10
      start_period: 2s
    restart: 'unless-stopped'

  cert-manager:
    image: rehanone/auto-cert-manager:${CERT_MANAGER_VERSION}
    container_name: 'anonaddy-cert-manager'
    secrets:
      - cloudflare_api_token
    environment:
      DOMAINS: example.com,*.example.com
      EMAIL: ${CERT_MANAGER_EMAIL}
      CERTBOT_PLUGIN: ${CERT_MANAGER_CERTBOT_PLUGIN}
      CLOUDFLARE_API_TOKEN_FILE: /run/secrets/cloudflare_api_token
      PROPAGATION_SECONDS: ${CERT_MANAGER_PROPAGATION_SECONDS}
      DEBUG: true
      STAGING: ${CERT_MANAGER_STAGING}
    volumes:
      - type: bind
        source: /docker-data/anonaddy/tls/letsencrypt
        target: /etc/letsencrypt
        read_only: false
      - type: bind
        source: /docker-data/anonaddy/tls/certs
        target: /certs
        read_only: false
      - type: bind
        source: /docker-data/anonaddy/tls/log
        target: /var/log/letsencrypt
        read_only: false
    restart: 'unless-stopped'

  app:
    image: anonaddy/anonaddy:${APP_VERSION}
    container_name: 'anonaddy-app'
    labels:
      - traefik.enable=true
      - traefik.http.routers.anonaddy-app.rule=Host(`app.example.com`)
      - traefik.http.routers.anonaddy-app.entrypoints=websecure
      - traefik.http.routers.anonaddy-app.tls=true
      - traefik.http.routers.anonaddy-app.tls.certresolver=le-resolver
      - traefik.http.routers.anonaddy-app.middlewares=security-headers@file
      - traefik.http.routers.anonaddy-app.service=anonaddy-app
      - traefik.http.services.anonaddy-app.loadbalancer.server.scheme=http
      - traefik.http.services.anonaddy-app.loadbalancer.server.port=8000
      - traefik.http.routers.anonaddy-rspamd.rule=Host(`rspamd-admin.example.com`)
      - traefik.http.routers.anonaddy-rspamd.entrypoints=websecure
      - traefik.http.routers.anonaddy-rspamd.tls=true
      - traefik.http.routers.anonaddy-rspamd.tls.certresolver=le-resolver
      - traefik.http.routers.anonaddy-rspamd.middlewares=security-headers@file
      - traefik.http.routers.anonaddy-rspamd.service=anonaddy-rspamd
      - traefik.http.services.anonaddy-rspamd.loadbalancer.server.scheme=http
      - traefik.http.services.anonaddy-rspamd.loadbalancer.server.port=11334
    secrets:
      - mariadb
      - app_key
      - anonaddy_secret
      - postfix_relayhost_password
      - rspamd_password
    networks:
      - inner-net
      - backplain
    environment:
      DB_HOST: db
      DB_DATABASE: ${MARIADB_DATABASE}
      DB_USERNAME: ${MARIADB_USER}
      DB_PASSWORD_FILE: /run/secrets/mariadb
      REDIS_HOST: redis
      APP_KEY_FILE: /run/secrets/app_key
      ANONADDY_SECRET_FILE: /run/secrets/anonaddy_secret
      POSTFIX_RELAYHOST_PASSWORD_FILE: /run/secrets/postfix_relayhost_password
      RSPAMD_WEB_PASSWORD_FILE: /run/secrets/rspamd_password
    volumes:
      - type: bind
        source: /docker-data/anonaddy/tls/certs
        target: /certs
        read_only: true
      - type: bind
        source: /docker-data/anonaddy/app-data
        target: /data
        read_only: false
    env_file:
      - ./anonaddy.env
    ports:
      - "25:25/tcp"
    depends_on:
      db:
        condition: service_healthy
      redis:
        condition: service_healthy
    restart: 'unless-stopped'

The .env file
APP_VERSION=latest

# DB Section
DB_VERSION=10.5
MARIADB_DATABASE=anonaddy
MARIADB_USER=anonaddy

CERT_MANAGER_VERSION=latest
CERT_MANAGER_PROPAGATION_SECONDS=220
CERT_MANAGER_STAGING=false
<EMAIL_ADDRESS>CERT_MANAGER_CERTBOT_PLUGIN=cloudflare

I did not make any other changes that are related to IPv6. I hope this will be helpful for others trying to setup using this docker image. I am using traefik in a separate container but I left the labels in there just as a example. You can safely remove it.

Hmmm now it has stopped complaining that the SPF is not there but that the CNAME domainkey record is not found (which of course is there). Something seems to go terribly wrong with DNS querying...

On my side it is working great. It definitely has to do with DNS. I was tinkering with it for days until it worked. The documentation is not great (verbose enough) on that point.

Hmmm now it has stopped complaining that the SPF is not there but that the CNAME domainkey record is not found (which of course is there). Something seems to go terribly wrong with DNS querying...

It could just be a case of DNS caching. Remember, it could take up to 24 hours for full propagation of DNS changes.

Hmmm now it has stopped complaining that the SPF is not there but that the CNAME domainkey record is not found (which of course is there). Something seems to go terribly wrong with DNS querying...

It could just be a case of DNS caching. Remember, it could take up to 24 hours for full propagation of DNS changes.

Yes indeed, but suddenly it recognizes the SPF Records but not the CNAME which I setup at the same time. Don´t know what the problem is there and it does not explain the alias send fail.

Something is broken the way anonaddy handles DNS queries. It will not find the CNAME entry for my custom domain althought it´s definitely set right. Is there some log file with detailed information? The Log File of the Docker Container does not tell me much.

 I get an "error":"dns_get_record(): DNS Query failed".

Has anyone a fix for that now ? I spend 4 hours yesterday trying to fix it but I cannot find what is going wrong

I wasn´t able to fix it and finally switched to simplelogin, which was a bit of a pain to setup but now works flawlessly.

Hello guys!
I spent a few hours today trying to dig the issue and I finally understood why it was not working.
Root cause
As defined in https://github.com/anonaddy/anonaddy/blob/ad77a6ccf90a974408370df9e574356ff2a04fef/app/Console/Commands/ReceiveEmail.php#L156 , AnonAddy checks whether the headers X-AnonAddy-Spam or X-AnonAddy-Dmarc-Allow are present or not.
Those headers are added ONLY if Rspamd is enabled and correctly configured to inject those headers, which is not the case here because the environment variable RSPAMD_ENABLE is set to false by default.
Second problem
Even after enabled Rspamd, the messages would still not get delivered. I then explored the Rspamd dashboard to understand why. After seeing the messages, they would not have the DMARC_POLICY_ALLOW tag attached to them. As per the default Rspamd config in this repo, the header X-AnonAddy-Dmarc-Allow will only get injected if DMARC_POLICY_ALLOW is added.
After setting the Rspamd logs to a more verbose option, I figured out that since I'm running my mailserver also in containers, they are (obviously) in a local network which Rspamd does not like by default.
Because, by default, Rspamd will skip DKIM, DMARC and SPF checks if a new message comes from a local network. This behavior is defined in /etc/rspamd/options.inc. I therefore removed the content of the local_addrs variable defined there.
I tried again, and eureka, it works! So, TL;DR:
Solution
Update your docker-compose as the following:
entrypoint: bash -c "sed -i 's/local_addrs.*$$/local_addrs=[]/' /etc/rspamd/options.inc && /init"

...
environment:
    - "RSPAMD_ENABLE=true"

I will create a PR in the following days to fix the issue.

@Zegorax , Thanks for investigating this issue and providing such a detailed analysis! Cannot wait to see the fix applied in a PR.

Pull request has been created in https://github.com/anonaddy/docker/pull/207. It will need an approval from the maintainers.

😞  I just upgraded to the last version of this image. We can't send or reply from any alias anymore.
It was working well for me since https://github.com/anonaddy/docker/issues/192#issuecomment-1304784209
The DMARC record did not change for ages but let's control it:
➜  ~ dig +short TXT _dmarc.DOMAIN.TLD
"v=DMARC1; p=quarantine; adkim=s"

The DMARC record looks correct to me.
Tracing the issue leads me here too: https://github.com/anonaddy/anonaddy/blob/master/app/Console/Commands/ReceiveEmail.php#L156
if ($verifiedRecipient?->can_reply_send) {
    // Check if the Dmarc allow or spam headers are present from Rspamd
    if (! $this->parser->getHeader('X-AnonAddy-Dmarc-Allow') || $this->parser->getHeader('X-AnonAddy-Spam')) {
        // Notify user and exit
        $verifiedRecipient->notify(new SpamReplySendAttempt($recipient, $this->senderFrom, $this->parser->getHeader('X-AnonAddy-Authentication-Results')));

        exit(0);
    }

So I simply trace the variables:
Log::info([
  'can_reply_send' => $verifiedRecipient?->can_reply_send,
  'X-AnonAddy-Dmarc-Allow' => $this->parser->getHeader('X-AnonAddy-Dmarc-Allow'),
  'X-AnonAddy-Spam' => $this->parser->getHeader('X-AnonAddy-Spam'),
  'In-Reply-To' => $this->parser->getHeader('In-Reply-To')
]);

I tried with the following configurations (removing and creating all containers each time):

RSPAMD_ENABLE=false

 [2023-07-06 08:18:12] production.INFO: array (
   'can_reply_send' => true,
   'X-AnonAddy-Dmarc-Allow' => false,
   'X-AnonAddy-Spam' => false,
   'In-Reply-To' => false,
 )

RSPAMD_ENABLE=true
RSPAMD_NO_LOCAL_ADDRS=true

 [2023-07-06 08:22:03] production.INFO: array (
   'can_reply_send' => true,
   'X-AnonAddy-Dmarc-Allow' => false,
   'X-AnonAddy-Spam' => false,
   'In-Reply-To' => false,
 )

RSPAMD_ENABLE=true
RSPAMD_NO_LOCAL_ADDRS=false

 [2023-07-06 08:24:14] production.INFO: array (
   'can_reply_send' => true,
   'X-AnonAddy-Dmarc-Allow' => false,
   'X-AnonAddy-Spam' => false,
   'In-Reply-To' => false,
 )

So now, Rspamd or not... we can't send emails anymore?
Captain? An idea? 😛

Alright... finally found out that the milter's configuration is missing. Even when RSPAMD_ENABLE=true.
I added it in a custom Postfix conf, following the doc to Override Postfix main configuration.
+milter_default_action = accept
+smtpd_milters = inet:<IP_ADDRESS>:11332
+non_smtpd_milters = $smtpd_milters
+milter_mail_macros =  i {mail_addr} {client_addr} {client_name} {auth_authen}

Now it works but a question remains. I didn't dive into the code enough to answer. If the configuration allows a RSPAMD_ENABLE=false, then how will Anonaddy get the headers it expects?

https://github.com/anonaddy/docker/pull/207 should fix this issue by setting RSPAMD_NO_LOCAL_ADDRS=true env var.

#207 should fix this issue by setting RSPAMD_NO_LOCAL_ADDRS=true env var.

Even when I set that env, it still doesn't work for me
Do I have to configure anything else?


juicer.sh SLURM script

Discovered on lines 407 and 452 code is:
if [ -v shortread ] || [ "$shortreadend" -eq 1 ]
but getting a
[: -v: unary operator expected error
I'm guessing this needs to be changed to:
if [ -v $shortread ] || [ "$shortreadend" -eq 1 ]
to call the $shortread variable.  Can you please check this?

Oh, this is bash version dependent issue.
Were checking if variable is defined, not empty.
If it does not work for you, try
[ -z ${shortread+x} ]
Instead.

Ok.  That fixed the error message.
Looking at the debug files for the alignment it is running bwa aln and not bwa mem, though I didn't change anything else in the juicer.sh script to tell it to do short read alignment.  Is this normal?
In case related to the version of bash I am running:
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

The check is working now, but is actually opposite to what you need -
try [ ! -z ${shortread+x} ] instead.
-v will return 1 if variable is unset, and 0 if it is set.
-v is only supported in version > 4.2, so I really recommend upgrading, or setting the value explicitly.
Ido

Great!  Yes, it's working now.  Thanks for all your help!
Kyle


bug: warpcast data not broadcast to hubs correctly

What is the bug?
I'm getting a 'not found' error when I try to load fName for this ID "15152".

The user loads on Warpcast,
https://warpcast.com/manbir
Using mainnet nemes hub
Using @farcaster/hub-nodejs
Loads PFP and Display name, but fails when I try to get fName

How can it be reproduced? (optional)
import { getSSLHubRpcClient, UserDataType } from '@farcaster/hub-nodejs';
import dotenv from 'dotenv';

dotenv.config();

// using mainnet nemes
const hubRpcEndpoint = process.env.HUB as string;

const client = getSSLHubRpcClient(hubRpcEndpoint);

client.$.waitForReady(Date.now() + 5000, async (e) => {
  if (e) {
    console.error(`Failed to connect to ${hubRpcEndpoint}:`, e);
    process.exit(1);
  } else {
    console.log(`Connected to ${hubRpcEndpoint}`);

    // This FID works.

    // const castsResult = await client.getUserData({
    //   fid: 3,
    //   userDataType: UserDataType.FNAME,
    // });

    // This FID returns a HubError: Not Found
    const castsResult = await client.getUserData({
      fid: 15152,
      userDataType: UserDataType.FNAME,
    });

    if (castsResult.isErr()) {
      console.log('Error');
      console.log('castsResult:', castsResult);
    }

    castsResult.map((usrData) => console.log(usrData));
    client.close();
  }
});

Additional context (optional)
console error

might be related to https://github.com/farcasterxyz/hub-monorepo/issues/1059

suspicion is that this is related to a bug in warpcast not publishing some messages correctly, @sds  and @deodad to investigate

Confirmed this is related to a Warpcast bug. We'll work on getting that message published and will close this ticket when that bug is resolved.

Any updates on this? Thought messages were republished last week but still seeing this issue

Actively working on it, but debugging has been slow due to other issues with older peers spamming messages due to a bug in 1.3.2. Working on getting everyone to upgrade so we can resolve this quickly.

@vernonjohnson we recently shipped a few fixes related to this issue and published any missing data

Confirming that the issue is fixed on my Postgres replicator.
@deodad Can you please link the exact PR fixes related to this issue to this ticket?

@manan19 great! the core issue here was that there were some situations where Warpcast would fail to publish the UserDataAdd message for a user, so the fixes were in the Warpcast application and not hub-monorepo

note: a contributor to the problem was the missing Eth events that we've seen in some hubs and there's some in-flight work to make that more resilient, but it hasn't landed yet

@deodad Does this mean we could still have this issue recur between now and "the missing Eth events" resiliency work landing?

there are two separate issues at play:

warpcast wasn't pushing events to hubs (fixed)
hubs sometimes miss eth events and don't pick up data from other hubs.

its likely that (1) caused 99% of the issues here, so we expect this to be a lot better now.
fixes are already pushed out for (2) in 1.4.1, we're testing to see how effective it is.


removed objc.setVerbose() call, which I don't think is needed, and is…

… in fact deprecated in recent versions of PyObjC, in favor of objc.options.verbose

Merci!


Feature/gender reciprocal settings

Critical Changes
Changes
Allow HEDA Relationship Reciprocal Settings to use hed__Gender__c when gender value is none
Issues Closed
Fixes #404

@lianeyee
Could you please review the release notes?
Thank you!

@xinnanlisf Does this capture the change? "When a Contact's gender is indicated in HEDA's Gender field, we now use gender-specific values (such as Aunt) to describe types of relationships between Contacts. Previously, we used gender-neutral values (such as Parent's Sibling) unless the value in the Contact's Salutation field was gender-specific.

@lianeyee
Sorry, not entirely sure this is capturing the change. Previously if the gender value was none, the relationship type would not use any values.
For instance:
Jane, female
John, male
If we create a relationship on John's contact detail page that Jane is John's aunt, then Jane is John's Aunt and John is Jane's Nephew.
However, if we then change Jane's gender to none, on John's contact detail page, it still shows that Jane is John's Aunt instead of Parent's Sibling.
After the fix, on John's contact detail page, it shows that Jane is John's Parent's Sibling
I hope this makes sense to you. Feel free to let me know if you need further explanation or maybe a quick demo on this.
Thanks!

Ah, I see. There were a lot of scenarios described in the Hub thread and Jace's investigation, so I wasn't clear what we changed. Thanks for explaining the details. I'll reword and edit the description above.

@lianeyee
Thanks, the release notes look awesome!:)

@davidjray
I just tested in my environment. I totally agree what you found. Only one thing, in addition to sibling's parents, we might need to add parent's sibling to the default setting as well so that it can work in such scenario:
Timmy Smith(Male contact)
Joan Smith(Female contact)
Create relationship on Timmy Smith's detail page that Joan is Timmy's aunt
Change Joan's gender to none
The relationship on Timmy Smith's detail page should show that Joan is Timmy's parent's sibling instead of sibling's child
Let me know what you think and I will go ahead and make the changes.
Thanks again.
Xinnan


Uncaught Twig\Error\SyntaxError: Unknown "template_from_string" function

{{ include(template_from_string(copyright)) }} or {% include template_from_string(copyright) %}, from Timber documentation, results in the following error:
Uncaught Twig\Error\SyntaxError: Unknown "template_from_string" function

not sure if this is because of the theme, I would expect that a code from Timber doc. would work.

Did you ever figure out why it wasn't working? Im getting the same error.


argo: Add unit test

/hold
Signed-off-by: Ce Gao<EMAIL_ADDRESS>

There are so many errors in unit test, I can not finish them in one PR.

All tests pass but there are some other issues.

/hold cancel
/assign @YujiOshima

@gaocegege Thanks!
/lgtm


Add merge operation

There is some use case where we need to upload the object in chunks, because it is too big to be uploaded at once. This use case is described at https://github.com/gigforks/minio/issues/68.
To summarise:

user upload the object in multiple parts, may not in consecutive order
in the end, user send command to merge the multiple parts previously uploaded into single object.

I honestly not sure whether this FR is make sense to for 0-db.

From the use case described, I see:

when merging, we do read then write

Actually, doing it in client point of view or internally by sending a MERGE command, except the network overhead, it will be the same impact and I don't think it will be really more efficient to do it internally.
And in addition, I think you're right, this should not be related/part of 0-db itself, but your upper layer.

it will be the same impact and I don't think it will be really more efficient to do it internally.

I don't think that is really true. Allowing to avoid to resend all the data over the network would make things much much faster. But still I don't think this is enough to introduce that level of complexity in 0db. The use case can be implemented in many other ways

This would obviously introduce complexity and relation between keys, and I would like to avoid that

This was my idea, to create a kind of relation between keys, so we could avoid read-write cycle.
But you're right, it would add complexity.
So, the only way that make sense is to do read-write internally, which i think will not add complexity, no?
While i don't think that it would add complexity, i think it would block the 0-db to serve the other requests for quite a long time, which is not good.

Closing this issue because it is only needed in edge case and yet not efficient


Use ==/!= to compare constant literals (str, bytes, int, float, tuple)

Avoid SyntaxWarnings on Python >= 3.8.
% python3.8
>>> "snowball" is "snowball"
<stdin>:1: SyntaxWarning: "is" with a literal. Did you mean "=="?

Hi @cclauss, thank you for your contribution!
Regards,


Nova index, show, delete tests by role

@wolfrednicolas Can you also add a resource test for Contact?

@drewroberts I think there's an issue related to this third party package "dniccum/phone-number": "^1.1"


feat: Add configuration option to disable the GUI

Gatus provides excellent monitoring and alerting capabilities, however there are instances where the GUI is not required where heavy usage of the aforementioned features are used.
It would be great to have an option to simply entirely disable the GUI to save resources if an endpoint queries a very heavy GUI by accident.

By disabling the GUI, do you mean disabling the web server for the UI? (e.g. https://status.twin.sh)

Exactly - but keeping the API in tact.

Hmm it shouldn't be much of a problem.
All you'd need to do is add a new configuration here: https://github.com/TwiN/gatus/blob/7daf2b5cac28201c33fc924a7533609f0eb6ee8e/config/ui/ui.go#L25-L31
something like Disabled, and then use that configuration here:
https://github.com/TwiN/gatus/blob/7daf2b5cac28201c33fc924a7533609f0eb6ee8e/controller/handler/spa.go#L11-L27
something like if ui.Disabled, then return 404 with an error message that says that the UI has been disabled.

That being said, it's not really useful, because this is a single page application, which means that the html pages rendered are practically empty. You can see this yourself by navigating to view-source:https://status.twin.sh/ on Chrome/Firefox, or by going on your Gatus instance's page and right clicking View page source.
of course, if you're talking about an application that can render JS, or an actual user, that's another story.
I guess the largest files that could be accidentally requested outside of the API would be the vendor & the app's file (e.g. https://status.twin.sh/js/chunk-vendors.js, https://status.twin.sh/js/app.js), but unless there's a lot of requests, the resource utilization incurred from retrieving these two files is pretty small.
If you're worried about users accessing the API for no reason, you could always configure auth. Something like this should do the trick, but you'll have to ensure that whatever application you have that calls the API can include basic auth in the request it sends as well.

Unfortunately, I'm going to decline this feature.
The resources consumed by running the web server when there's no traffic is negligible, as for resources consumed due to users using the UI, there are many ways to prevent people from accessing the UI (e.g. don't expose the application publicly, set a port that isn't forwarded/accessible, enable auth as suggested above, etc.).
Regardless, thank you for creating an issue!


Some improvements to see what the spam bug model is doing

@emceeaich instead of sending an email with the few bugs which are detected as spam with a high confidence, we're going to send an email with all the analyzed bugs and the respective confidence so we can see if there are bugs which are missed by the model (and then investigate why they are missed).

Coverage increased (+0.01%) to 24.995% when pulling 9839033b3d4081a0c3674951736b7d6791d1df05 on marco-c:spam into 510f3ab1a12b703e647c60878396e430dcc2e9f8 on mozilla:master.


Update VUEs.json to be in sync with new reVUE-data repo file

This is a temporary update, will use reVUE-data repo file directly in the following PR

Decide to close this one and go with reading from reVUE-data PR directly


UX - Webapp display - search is difficult

I really like your tool,
Therefore I am making suggestions to see it evolve.
Once the graph is displayed, like this :

It would be great to add these features :

underline the specified file as parameter

with command for example skott src/pages/PaymentPage/PaymentPage.component.tsx, I would like to see the item PaymentPage.component.tsx highlighted

allow browser text search (cmd + F)

OR create your own search and highlight searched item

By the way I would be pleased to help you on this.
Let me know if you find my suggestions useful,
You can contact me on<EMAIL_ADDRESS>

@bam-charlesbo
Thanks to you for providing some feedback!
You're completely right, I have been personally using the tool on the enterprise projects I'm working on and it's true that the visualisation is clearly not ideal for a real-world graph. Searching specific components is very tedious at the moment, so there is clearly room for improvement :)
To be honest, I targeted a minimalist UI for the first release including this new display mode (just got out recently).
It turns out that the "custom search" you suggested is something that I planned to add in the next versions of the app, so I'm very happy to see that we both consider that feature useful.
For the entry point highlight, nice one, I didn't even think about that, it's indeed a great idea!
I would be pleased if you could initiate some work on it!
Feel free to land some PRs and open discussions directly here on GitHub (I'm not really active elsewhere unfortunately), it will also enhance the visibility of the work in progress for everyone coming here and avoiding duplicate issues/feature requests

A new version of skott (v0.14.1) and skott-webapp just came out including the features mentioned in #25. I'm closing this one but feel free to open another issue to suggest other enhancements.


feat: copy map image to the clipboard

👀
Requires chrome >= 76 AFAI. We might simply hide it for other browsers or use some kind of feature detection.
Closes https://github.com/dungeon-revealer/dungeon-revealer/issues/414

Oooooh, that's awesome! Any idea whether it'll also work on latest Firefox (which is what I personally use)? And if not, what it might take to get that to work.
This will make online play through Discord so much nicer.
Just to clarify, this copies the masked (player-visible) map to the clipboard, right — not the full map?

Yes it copies the player map, as you cans ee hear we write the map and the map fog to a new canvas:
https://github.com/dungeon-revealer/dungeon-revealer/pull/415/files#diff-bb4e14c00e955a5b242220cffb038be4R949-R955
Regarding Firefox: https://caniuse.com/#feat=mdn-api_clipboard_write
it does not look that good for other browsers :/

ON other browsers we could fallback to opening a base64 image string in a new tab:

Oh, yeah, that sounds like a good idea! Though I'd worry it might not work for very large maps (I have one that's like 5MB for example)..

on other browsers, we could fallback to opening the base64 string of the image in a new tab

Oh, yeah, that sounds like a good idea! Though I'd worry it might not work for very large maps (I have one that's like 5MB for example)

Hm, we could shave some off by using jpeg instead of png when reading the image from the canvas. I just pushed the Firefox commit.
Could you try it out and provide some Feedback regarding larger maps?

I think it'd be better to feature-test this rather than check the browser. Especially since it's pretty easy to enable it in Firefox. I may not get around to actually testing this for a little while, but will keep a tab open for when I get a chance!

Could you try it out and provide some Feedback regarding larger maps?

I threw a 100MB image at it in both browsers on Linux. They both worked just fine. Chrome outputs a ~5MB png. The jpeg output in Firefox does cut the size down to ~2MB. Pasting from the clipboard is way nicer, I've got to say.

The 100 mb image will be "down-scaled" upon loading:
https://github.com/apclary/dungeon-revealer/blob/79d90a828c44964c77b94b744043c25f09134757/src/dm-area/dm-map.js#L813-L828
So it makes sense that the output is way smaller.

Pasting from the clipboard is way nicer, I've got to say.
I agree that pasting from the clipboard is definitely nicer, but we gotta work with what we have :D

I think it'd be better to feature-test this rather than check the browser.

Yes, you are right.


util: change *toul functions to *toull

Description:
long is only guaranteed to be at least 32 bits (and on Windows, is only 32 bits). Since these functions are taking 64 bit arguments, use the long long versions instead
Risk Level:
Low
Testing:
bazel build //source/... && bazel test //test/...
Docs Changes:
N/A
Release Notes:
N/A

This looks simple enough for me to just merge without further review, hopefully others agree.


[SPARK-50162][SS][TESTS] Add tests for loading snapshot with given version for transformWithState operator state and state data source reader

What changes were proposed in this pull request?
Add tests for loading snapshot with given version for transformWithState operator state and state data source reader
Why are the changes needed?
To add test coverage for snapshotStartBatchId integration of tws and state data source reader
Does this PR introduce any user-facing change?
No
How was this patch tested?
Test only change
Added unit tests
===== POSSIBLE THREAD LEAK IN SUITE o.a.s.sql.execution.datasources.v2.state.StateDataSourceTransformWithStateSuite, threads: ForkJoinPool.commonPool-worker-6 (daemon=true), ForkJoinPool.commonPool-worker-4 (daemon=true), Idle Worker Monitor for python3 (daemon=true), ForkJoinPool.commonPool-worker-7 (daemon=true), ForkJoinPool.commonPool-worker-5 (daemon=true), ForkJoinPool.commonPool-worker-3 (daemon=true), ForkJoinPool.commonPool-worker-2 (daemon=true), rpc-boss-3-1 (daemon=true), ForkJoinPool.commonPo...
[info] Run completed in 2 minutes, 5 seconds.
[info] Total number of tests run: 23
[info] Suites: completed 1, aborted 0
[info] Tests: succeeded 23, failed 0, canceled 0, ignored 0, pending 0
[info] All tests passed.

Was this patch authored or co-authored using generative AI tooling?
No

cc - @ericm-db @HeartSaVioR - PTAL, thx !

Looks like the build failure is valid.

Thanks! Merging to master.


example site cannot run npm start

Off of a fresh npm install with either node 6.2.1 or 7.4.0 I get the following error:
Module not found: Can't resolve '../pkg-lnk/ReactCursorPosition' in '/Users/d4/code/react-cursor-position/example/src/components'

Hi @bdefore,
Thanks for opening this issue. I'm sorry you are having trouble building the project. You state that you are attempting to run the example site "off of a fresh npm install". I think this might be the problem. The NPM package, which is what is installed on your computer when you run npm install,  does not contain the example site. The example site is in the source project on GitHub. See the example site instructions on on the project readme. Please let me know if this does or does not correct the problem.

@ethanselzer I am running the steps from those instructions exactly, cloning, moving to example directory, npm installing and trying to start. i'm not installing the react-cursor-position package via npm.

I'm sorry I missunderstood. Thanks for clarifying. I think I know what the problem is now. The symlink, named "pkg-lnk", which you called out in your original post, contains an absolute path, which is only valid on my computer. I will try to create a symlink containing a relative path, or I will eliminate it and reference the package from node_modules. I'll post here when this is done. Thanks for uncovering my mistake! I really appreciate it.

@bdefore I think the problem you identified is fixed with this commit. In my testing the example project built and ran without issue. Along with making the symlink, named pkg-lnk, a relative path, I also updated the example project instructions because they were incomplete. Please let me know if it does or does not work for you.  I apologize for the trouble and for misreading your initial post. Thanks again for bringing this issue to my attention! ~Ethan

@ethanselzer ah of course, i should have had a look at pkg-lnk that would have identified the cause. i can confirm your change fixes things - i'm able to yarn start and move about the demo site. thanks!


Include information about linkage change in changelog

I spent a large amount of time to figure out why my update from 0.3.x to 0.4.x caused breaking changes in my application's tests. The changelog is currently misleading, implying that no change is necessary for the update. This PR adresses #1204 and uses wording from that issue (credit to @seansellek for the wording).

I added the info + a blog post, thanks for contributing!


Update scalafmt-core to 3.7.15

About this PR
📦 Updates org.scalameta:scalafmt-core from 3.7.12 to 3.7.15
📜 GitHub Release Notes - Version Diff
Usage
✅ Please merge!
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

🔍 Files still referring to the old version number
The following files still refer to the old version number (3.7.12).
You might want to review and update them manually.
.git-blame-ignore-revs

⚙ Adjust future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.scalameta", artifactId = "scalafmt-core" } ]

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequests = { frequency = "30 days" },
  dependency = { groupId = "org.scalameta", artifactId = "scalafmt-core" }
}]

labels: library-update, early-semver-patch, semver-spec-patch, old-version-remains, commit-count:1

Superseded by #407.


First of all, thanks for your code.

Just one thing, In your guide: 'Getting start' and trainning part, it should be 'python train.py --config ./configs/training/EcgResNet34.json' not 'python train.py --configs/training/.json'.

Just one thing, In your guide: 'Getting start' and trainning part, it should be 'python train.py --config ./configs/training/.json' not 'python train.py --configs/training/.json'.

Thank you so much for letting me know! I've updated README.md with your changes!


[Feature] RowColSizer [sf#27]

Reported by ghidoghido on 2006-04-24 08:39 UTC
Please add a support for design roecolsizer.
thanks
Ghido

Updated by dschwertberger on 2017-02-15 22:11 UTC

status: open --> wont-fix
Group:  --> to discuss

Commented by dschwertberger on 2017-02-15 22:11 UTC
rowcolsizer is obsolete.
Support for FlexGridSizer is avaiable.
Support for GridBagSizer should be implemented some time.


@DeeplinkFragmentActivity and android:launchMode="singleTop"

I have FragmentActivity showing various fragments (depend on smartlink route).
This Activity marked by @DeeplinkFragmentActivity(id = R.id.content_frame, fragments = { ... }) and it also contains android:launchMode="singleTop" attribute in the manifest, for handle Intent.ACTION_SEARCH in onNewIntent(Intent) method.
In this way, when clicking on the smartlink for the first time the Activity starting and showing a fragment.
But if we collapse application (not close) and click on the smartlink again the Activity just back to foreground and not instantiate any fragment, because in this case onNewIntent(Intent) method will be called and our [Activity will not re-create] (http://developer.android.com/intl/ru/guide/topics/manifest/activity-element.html).

Launch Mode "singleTop"
If an instance of the activity already exists at the top of the target task, the system routes the intent to that instance through a call to its onNewIntent() method, rather than creating a new instance of the activity.

How can we handle this situation?
Maybe we can use Hoko.deeplinking().inject forced for instantiate right fragment in onNewIntent(Intent) method of our Activity?

That sounds about right. The only issue I see there is that you need to call setIntent(newIntent) on the onNewIntent(Intent) method because Hoko.deeplinking().inject(Activity) uses the getIntent() to get the serialized deeplinking data.
protected void onNewIntent(Intent newIntent) {
  // your search logic
  // ...
 setIntent(newIntent);
 if (Hoko.deeplinking.inject(this)) {
   // Hoko injected
 }
}

I will keep this issue opened as it might make sense to add a new Hoko.deeplinking().inject(Activity, Intent) method overloading to make sure this case is covered without the caveat of having to call setIntent(Intent) beforehand.


Splat

Added splatting to the \create_azure_sql_server.ps1 but also altered to not check for the secret as Set-AzSecret overwrites if exists

Looks great, thank you.


(cell branch) Make Cell __repr__() Consistent With Cell Constructors

Cell constructors do not have header as a keyword argument. repr() should reflect this. Examples of __repr__(header={}, ...) are currently wrong.

This is covered in the "simplifications" documentation.


New version: Bililive.BililiveRecorder version 2.11.1

Pull request has been created with komac v2.2.1 :rocket:
Microsoft Reviewers: Open in CodeFlow

Automatic Validation ended with:

2024-06-19T02:11:50.3252048Z ##[error]Manifest Validation Failed
2024-06-19T02:11:55.3800020Z ##[section]Finishing: Validate Manifest

(Automated response - build 886.)


Auto add attribution info from info.json

should be configurable

Well.. it seems like attribution comes from a manifest.json so I don't think this is really feasible.

Attribution can come from either the image's info.json (in 2.1+) or from a manifest (in 2.0+).
Note in the descriptions that clients MUST display attributions when present... so it would be great to keep this enhancement on the table, or understand the difficulties in implementation so we can fix it in the spec :)
Refs:

http://iiif.io/api/presentation/2.1/#attribution
http://iiif.io/api/image/2.1/#rights-and-licensing-properties


TCP and IP-frag do not work with this, yet:

false

https://github.com/project-chip/connectedhomeip/blob/f0f5de0d79ae1c51d7fddbf70900ebac0acd899a/src/lwip/standalone/lwipopts.h#L168-L173

This issue was generated by todo-issue based on a todo comment in f0f5de0d79ae1c51d7fddbf70900ebac0acd899a.

Seems to be an lwip related TODO, and the file hasn't been touched for ~2 years. Assuming not critical for 1.0.


Find unlabeled images

OS: Mac
PyQt version:

This feature would be really useful. But maybe for the usage we give to the tool, maybe would be better an option to show the unlabeled images in the top of the 'File List'. What do you think?
And also maybe a counter that tells you how many unlabeled images there are and the total of images in the 'File List'.

And this is a duplicate of #557


gcr.io/google_containers is the same as gcr.io/google-containers

I don't have a quick way to produce a new version of the image, so I'm just removing it for now, because showing ✅ gcr.io/google_containers is sending the wrong message. This endpoint will likely quit working in march/april 2025 (https://cloud.google.com/artifact-registry/docs/transition/prepare-gcr-shutdown)

You can confirm by visiting both:
https://gcr.io/google_containers
https://gcr.io/google-containers

/approve
/lgtm


Removed non-functional menu button

Fixes

Fixes #237  by @SisiVero

Description
On mobile screens, there is a menu button that is not functional, clicking on that button does nothing to the website and has no content. This pull request removes that button.
Tests

Open the CC's search website
Resize the browser to smaller screens or view on a mobile phone
Menu button should no longer be there.

Screenshots
Problem(before)

Solution(after)

Checklist

[x] My pull request has a descriptive title (not a vague title like Update index.md).
[x] My pull request targets the default branch of the repository (main or master).
[x] My commit messages follow best practices.
[x] My code follows the established code style of the repository.
[ ] I added or updated tests for the changes I made (if applicable).
[ ] I added or updated documentation (if applicable).
[x] I tried running the project locally and verified that there are no
visible errors.

Developer Certificate of Origin

For the purposes of this DCO, "license" is equivalent to "license or public domain dedication," and "open source license" is equivalent to "open content license or public domain dedication."

Developer Certificate of Origin
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.

Thank you @possumbilities  I appreciate it. Looking forward to more contributions.

@Queen-codes If you comment on the original Issue I can assign it to you!


Remove the use of common/logger package

In response to (#3 )

Directory ./common/logger was deleted and all files it contained (logger.go and logger_test.go)
All uses of the logger package were removed (were present in /shape/line.go and /shape/point.go)
Ran go mod tidy to clean up go.mod and go.sum
Reran all package tests

@buscandoaverroes
I merged it.
Thank you for your contribution.


Port clientside encryption to mono-dll

Ported client-side encryption work from long-diverged branch. Was an inheritance approach, is now part of the main package internals.
Ported over internal WindowStream from stg73base, which allows us to prematurely end streams.
Removed internal RollingBufferStream, as uploads no longer require seekable streams as input. Upload paths that handle non-seekable streams already have their own buffer strategy.

Ported over blobs. Coming up in this PR, porting queues, extra tests for blob and queue, introduction of ThrowForMissingDecryptionKey flag, and bug fix on queue plaintext message deserialization.

Unsure how Microsoft.Extensions.Azure got pulled in here. Will revert.

/azp run net storage - ci

/azp run net - storage - ci

/azp run net - storage - ci


DTP: Sort out the possible values for "access type" of DO in "Objects and access"

In the case of DUP there are 3 (?) possibilities on-screen access, APP access and download. So with reducing this field to only public or restricted a second field is needed to automate the mentioned possibilities. Both public and restricted are controlled.
E.g. all researchers can download after ethics approval, all others have public on-screen access.

@Gerd-ECRIN I'm adding this to the agenda for the next monday meeting


Crashando na 1.19.4

What is your question?
O view model esta crashando meu jogo, sou pirata e jogo na 1.19.4

I'm assuming that's 1.19.4 crashing the game (sorry! Google Translate wasn't too helpful)? I think I know why that's happening - would you like this to be fixed or have you moved onto a newer version (where the problem doesn't occur)?

Closing due to this issue being stale and requiring a bit too much effort for me to do unnecessarily


check cert and token for import config

Ref to: https://github.com/open-cluster-management/backlog/issues/16871
Signed-off-by: zhujian<EMAIL_ADDRESS>

/assign @skeeey


The flatbuffer encoding should be updated to accept dictionary-encoded categorical arrays

Technical specification: To be created

with the new fbs:

with the old fbs:

Disclaimers:

Load time is extremely slow because it's on rdev
Memory usage is extremely high for both because responses aren't compressed (#331)

Nevertheless, we can see that memory usage is 7x greater using the old implementation. Load time is negligibly slower, but the bottleneck seems to be reading the tileDB arrays in the rdev stack.

More network profiling stats:
Test setup - profiling stats up until the page finishes loading. Network throttling of 15 mb/s down and 1 mb/s up was added.
New version:
Transferred resources: 22mb (UMAP/T-sne take most of this)
Total resources: 80mb (uncompressed)
Time per request: ~1.5 seconds
Total load time: 24 seconds
Old version:
Transferred resources: 25mb
Total resources: 500mb
Time per request: ~3 seconds
Total load time: 30 seconds
Notes:

Loading the umap/t-sne plots take most of the time so the total time is less informative than the time per request (local mode is not parallelizing requests)
Compression is probably making the difference between the transferred resources for the categoricals less noticeable when including the embeddings.

Coloring by a categorical:
new: 100ms
old: 150ms


How will things change when GovTrack goes away in the fall?

Team,
You still mention govtrack.us as active in the docs here. I'm wondering if their leaving will impact anything, is all.
I'm working to bring this data into C# classes, so if you hear of anyone else doing this, I'd love to know! :) I want to use the data in a windows C#.NET app, is why.
Thanks for your great work!
"In 2016, after a 15-year campaign, we finally convinced the U.S. Congress to make legislative data available themselves directly. The ecosystem of non-governmental open data providers has also completely changed since 2005. As a result, we deprecated our raw bulk data and APIs in 2016 with a scheduled shut-off date of August 2017." source

GovTrack isn't going anywhere. We're discontinuing our raw data and API because they are now redundant with this project and the ProPublica API. But GovTrack itself will go on as usual, and I'll still be committing here because these are the scripts we run to get the data we display on the site.

Thanks for writing, Josh...
Oh! Well, that doesn't sound as 'doom & gloom' as it reads on the site, then!
[Unrelated/unsolicited taking advantage of this communique]: I'm trying to find a way to parse your work into C# classes, and have come close, but there always seems to be a gotcha. Does any other project or person come to mind that is parsing the output of your work in such a way? I feel like I've tried creating classes from XML & JSON a bunch of ways, but none get the job done. Many thanks for any leads!@ :)
Feel free to delete this question, as I am ignorant of any other way to ask, and it certainly isn't a bug by any stretch! :)

Josh,
Thanks for writing. I really appreciate it.
So where should I go to grab the data in JSON/XML format? Is there a way to
grab it post-parser? I ask because I am having nothing but problems getting
the scripts to work-even in a clean VM, as presented here... (ex:
congress here
https://github.com/unitedstates/congress) :(
I'm ultimately trying to just get the data into C# objects, then stored to
DB using EF (Entity Framework)... I've written web scrapers in the past
(Plucker), but I'm struggling to understand whether I even need to if I can
find post-parsed data from the top level sites.
Any guidance/suggestions appreciated. I'm running in circles at this point,
mentally exhausted after weeks of trying anything at random
unsuccessfully... :(
Thanks!
pat
:)
On Thu, Jun 1, 2017 at 8:16 AM, Joshua Tauberer<EMAIL_ADDRESS>wrote:

GovTrack isn't going anywhere. We're discontinuing our raw data and API
because they are now redundant with this project and the ProPublica API.
But GovTrack itself will go on as usual, and I'll still be committing here
because these are the scripts we run to get the data we display on the site.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/unitedstates/congress/issues/212#issuecomment-305476059,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AILut4YECkyD7SjXIIqHGbhcTwZ6d6H_ks5r_quTgaJpZM4NoxsF
.

Does any other project or person come to mind that is parsing the output of your work in such a way?

Well several of us (GovTrack, ProPublica) do. If you have specific questions, feel free to start a new issue!

So where should I go to grab the data in JSON/XML format? Is there a way to grab it post-parser?

Right now no one is offering that. You could go straight to the source data (GPO, House, Senate, etc.).
The best thing is to help us get these scripts into a better place where it works for you and everyone.


Support multiple heating circuits

Up to now, this integration only supports 1 heating circuit, however, Solarfocus supports up to 8 circuits. The pysolarfocus library and this integration should be extended to support multiple heating circuits.

Is  there any timeplan when all heating circuits will be implemented?

The extension of the library has been merged yesterday and I startet to extend the HA integration. Hope this will be done within a week, but obviously no commitment.

Cross fingers for You! Can i buy You a coffe or a beer? :D

@bszattila much appreciated your asking, however, I currently have neither. 🙈

A release candidate is available for testing

@LavermanJJ
Thank you for providing the additional heating circuits so quickly. These also work right away. The one problem is worth the COP. HA writes me an error in the formula. I've tried a few things but haven't found a solution yet.
Can you please take a look at it.

Thanks

Thanks. The issue is in the second last line at the end with '0.0' which is the default value. If you change it to 1.0 it should work.
In Addition you should check, if the sensors are the correct ones I.e., the entity ID is correct.
Ps: I'll adapt it in the release notes as well. Thanks for pointing this out


Only some routes should be SSR

How can I make it so only certain routes like root get SSR?
This is important for authenticated routes when we don't want to send authentication data back and forth with the express server.  Where that authentication status is necessary to properly render a page.  This would require sending the info in a cookie and hydrating the app properly.

Simple enough with @loadable/components. Don't need SSR setup as long as {ssr: false}
const MyPage = loadable(() => import('./MyPage'), { ssr: false })


Library Enhancement

[Affect method] declineChatJoinRequest and approveChatJoinRequest and ?(Maybei more)
[Suggestion] Parameter for User and Chat following convention：

type String: username (@ghost);
type Long: user ID / chat ID;
type User/Chat: the object.
We'd better provide 2 method for each API:  [type String + type User/Chat] / [type Long + type User/Chat], with type User/Chat, we parse necessary parameter in library.

[Step] Maybe we should slow update this:

Mark the origin API as deprecated, develop new API and suggest them.
Maintain all APIs in some versions.
Delete the deprecated API and release a big version.

For those methods I'm not sure is api supports username option since it's described as Integer.
If it's fine with usernames there's already Identifier class in library for such cases.

We'd better provide 2 method for each API: [type String + type User/Chat] / [type Long + type User/Chat], with type User/Chat, we parse necessary parameter in library.

I means that:

If the telegram API asked for username, we supply 2 method in our library: [type String + type User/Chat];
If the telegram API asked for id, we supply 2 method in our library: [type Long + type User/Chat];
If username and id are both acceptable, we supply 3 method in our library: [type String + type Long + type User/Chat];

To determine chat identifier there is already a generic method for interface Action and MediaAction.
For all other methods, I added overload methods with the ability to pass User (actually, there aren't that many of them).

Thanks for the following up, I think it's time to mark this question as done!


Refactor attach()/start() after podman changes

Update examples
Update/Clean up unittests
Add Mixins for container attach()/start()

Signed-off-by: Jhon Honce<EMAIL_ADDRESS>

LGTM!

@rh-atomic-bot r+


create account question

When I use test Node A to produce blocks(producer:eosio)，and use another test Node B to synchronize blocks (but don’t form blocks), at this point when default wallet is open at Node B, I declare:
cleos -u http://B_IP:8888/ --wallet-url http://B_IP:8899/ create account eosio alafa4 EOS8hVSgyC3hGb5sPoJDfkQmvFfyjMR6PYvTUzvBpMMyhr296rG49 EOS7zUeBp2hiBarG3zhpFzwH3gr91qbpvkjmX8wmiHMjXtAbKRXnQ
It successfully generates account alafa4.
And then enter the same command:
cleos -u http://B_IP:8888/ --wallet-url http://B_IP:8899/ create account eosio alafa4 EOS8hVSgyC3hGb5sPoJDfkQmvFfyjMR6PYvTUzvBpMMyhr296rG49 EOS7zUeBp2hiBarG3zhpFzwH3gr91qbpvkjmX8wmiHMjXtAbKRXnQ
It will cause the automatic closure of NODEOS at Node B.

It's impossible to use wallet_plugin on nodeos anymore now. You will need to use keosd. As this is problem with outdated software, I'm going to close this issue.
If you still have the problem and wish to discuss further, please post it in https://eosio.stackexchange.com. To keep things organized, Github issues are intended for bugs reporting and features tracking, and Stack Exchange is the right place for any technical support discussions. Thanks!


Mouse position issue

Versions

Python: 3.5.2
OS: Raspbian GNU/Linux 10 Buster
Kivy: 1.11.1
Kivy installation method: Manual via pip==19.2.3

Description
Hello everyone,
I am trying to adapt my Kivy app in a Raspberry Pi 4 with Raspbian. I had some issues but the community answers helped me a lot. So firstly, thanks to be here.
My issue is related to a mouse/cursor position problem. For a time, I tried to select a TextInput Widget to enter text but the focus was instantly lost.
I wanted to understand the behavious of the mouse and I used the mouse_pos method to understand where my mouse is when I click.
self.label = LabelColoured()
Window.bind(mouse_pos=lambda w, p: setattr(self.label, 'text', str(w) + "\n" + str(p)))
self.add_widget(self.label)

After that, I understood that the mouse is at two position at the same time.
The first mouse position, the good one, is when I click.

The second position is somewhere else but I don't know what that position is related to. I only know that when I move the cursor, that happend.

(I also tried on Windows 10 and I only have one mouse position)
I thinked that the problem were coming from the 4 desktops available in Raspbian, I then defined desktop to only 1 and also disabled the second screen available by HDMI.
I tried an app with only a TextInput and it was the same problem.
I really don't find a solution. Do you know where that problem can come from ? Is it from Kivy, Raspbian or something else ?
I hope you can help me.
Greetings
Code and Logs
Here is the code and it is really simple.
import os
os.environ['KIVY_WINDOW'] = "sdl2"

from kivy.config import Config

Config.set('graphics', 'resizable', 1)
Config.set('graphics', 'width', '1920')
Config.set('graphics', 'height', '1020')
Config.set('graphics', 'borderless', '0')
Config.set('graphics', 'multisamples', '0')
Config.set('graphics', 'fullscreen', '0')
Config.set('kivy', 'exit_on_escape', '0')

from kivy.app import App
from kivy.lang import Builder
from kivy.core.window import Window
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.screenmanager import ScreenManager, NoTransition, Screen

Builder.load_string("""
<InterfaceButton@Button>:
    size: (300, 50)
    size_hint: (None, None)
    background_disabled_normal: ''
    disabled_color: (0, 0, 0, .5)
    background_normal: ''
    background_color: (0.925, 0.964, 0.992, 1)
    color: (0, 0.411, 0.709, 1)

<LabelColoured@Label>:
    color: 0, 0.411, 0.709, 1

<DETextInput@TextInput>
    background_disabled_normal: ""
    background_normal: ""
    background_color: (0, 0.411, 0.709, 1)
    disabled_foreground_color: (1, 1, 1, .5)
    foreground_color: (1, 1, 1, 1)
    multiline: False
    write_tab: False
    halign: "center"

<LoginScreen>
    login_layout: login_layout
    username_input : username_input
    password_input : password_input
    copyright : copyright

    size: (1920, 1024)
    size_hint: (None, None)

    FloatLayout:
        size: root.size
        size_hint: root.size_hint

        canvas.before:
            Color:
                rgb: 1, 1, 1
            Rectangle:
                size: self.size
                pos: self.pos

    # Box for the login Form
    BoxLayout:
        error_box : error_box

        id: login_layout
        orientation: "vertical"
        size: (300, 400)
        size_hint: (None, None)
        spacing: 10
        pos_hint: {'center_x': .5, 'center_y': .5}

        # Logo Image on the top
        Image:
            source: './images/LogoFR500.jpg'
            size: (300, 200)
            size_hint: (None, None)

        # Username Label
        LabelColoured:
            text: '[b][color=0f4c9c]Username[/color][/b]'
            markup: True

        # Username Input
        DETextInput:
            id: username_input
            multiline: False
            size: (300, 30)
            size_hint: (None, None)
            write_tab: False
            halign: 'center'

        # Space Label
        Label:

        # Password Label
        LabelColoured:
            text: '[b][color=0f4c9c]Password[/color][/b]'
            markup: True

        # Password Input
        DETextInput:
            id: password_input
            password: True
            multiline: False
            size: (300, 30)
            size_hint: (None, None)
            write_tab: False
            halign: 'center'

        # Space Label
        Label:

        # Submit Button for the login form
        InterfaceButton:
            text: "Login"
            size: (300, 40)
            size_hint: (None, None)
            pos_hint: {'center_x': .5}

        # Space Label
        Label:

        Label:
            id: error_box
            text: ''
            markup: True

""")

class LabelColoured(Label):
    pass

class LoginScreen(Screen):
    def __init__(self, **kwargs):
        """
            This function initialise the Login Screen
        """
        super(LoginScreen, self).__init__(**kwargs)
        self.label = LabelColoured()
        Window.bind(mouse_pos=lambda w, p: setattr(self.label, 'text', str(w) + "\n" + str(p)))
        self.add_widget(self.label)

session_manager=ScreenManager(transition=NoTransition())
session_manager.add_widget(LoginScreen(name='login'))

class GitApp(App):
    def build(self):
        return session_manager

if __name__ == '__main__':
    GitApp().run()

And Logs looks normal :
[INFO   ] [Logger      ] Record log in /root/.kivy/logs/kivy_19-08-29_43.txt
[INFO   ] [Kivy        ] v1.11.1
[INFO   ] [Kivy        ] Installed at "/usr/local/lib/python3.5/site-packages/kivy/__init__.py"
[INFO   ] [Python      ] v3.5.2 (default, Aug 26 2019, 14:20:36)
[GCC 8.3.0]
[INFO   ] [Python      ] Interpreter at "/usr/local/bin/python3.5"
[INFO   ] [Factory     ] 184 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_gif (img_pil, img_ffpyplayer ignored)
[INFO   ] [Window      ] Provider: sdl2(['window_egl_rpi'] ignored)
[INFO   ] [GL          ] Using the "OpenGL ES 2" graphics system
[INFO   ] [GL          ] Backend used <sdl2>
[INFO   ] [GL          ] OpenGL version <b'2.1 Mesa 19.1.0-devel'>
[INFO   ] [GL          ] OpenGL vendor <b'Broadcom'>
[INFO   ] [GL          ] OpenGL renderer <b'V3D 4.2'>
[INFO   ] [GL          ] OpenGL parsed version: 2, 1
[INFO   ] [GL          ] Shading version <b'1.20'>
[INFO   ] [GL          ] Texture max size <8192>
[INFO   ] [GL          ] Texture max units <16>
[INFO   ] [Window      ] auto add sdl2 input provider
[INFO   ] [Window      ] virtual keyboard not allowed, single mode, not docked
[INFO   ] [Text        ] Provider: sdl2
xclip version 0.13
Copyright (C) 2001-2008 Kim Saunders et al.
Distributed under the terms of the GNU GPL
[INFO   ] [Clipboard   ] Provider: xclip
[INFO   ] [CutBuffer   ] cut buffer support enabled
[INFO   ] [GL          ] NPOT texture support is available
[INFO   ] [ProbeSysfs  ] device match: /dev/input/event5
[INFO   ] [HIDInput    ] Read event from </dev/input/event5>
[INFO   ] [ProbeSysfs  ] device match: /dev/input/event3
[INFO   ] [HIDInput    ] Read event from </dev/input/event3>
[INFO   ] [ProbeSysfs  ] device match: /dev/input/event1
[INFO   ] [HIDInput    ] Read event from </dev/input/event1>
[INFO   ] [ProbeSysfs  ] device match: /dev/input/event6
[INFO   ] [HIDInput    ] Read event from </dev/input/event6>
[INFO   ] [ProbeSysfs  ] device match: /dev/input/event4
[INFO   ] [HIDInput    ] Read event from </dev/input/event4>
[INFO   ] [ProbeSysfs  ] device match: /dev/input/event2
[INFO   ] [HIDInput    ] Read event from </dev/input/event2>
[INFO   ] [ProbeSysfs  ] device match: /dev/input/event0
[INFO   ] [HIDInput    ] Read event from </dev/input/event0>
[INFO   ] [Base        ] Start application main loop
[INFO   ] [HIDMotionEvent] using <Telink 2.4G Mouse Consumer Control>
[INFO   ] [HIDMotionEvent] using <mini keyboard Consumer Control>
[INFO   ] [HIDMotionEvent] using <mini keyboard Mouse>
[INFO   ] [HIDMotionEvent] using <Telink 2.4G Mouse System Control>
[INFO   ] [HIDMotionEvent] using <Telink 2.4G Mouse Mouse>
[INFO   ] [HIDMotionEvent] using <mini keyboard System Control>
[INFO   ] [HIDMotionEvent] using <mini keyboard>

Finally I found an answer here #3801
Thanks


Deep Linking

Description
Enable applications to launch at any page route.
Example deeplink: catalog://scene/14
Completion status

[ ] Android
[ ] iOS
[x] Lumin

For Android and iOS, we need to expose onAppStart event in the Scene component and pass uri param in there. On Lumin, there are more properties passed in the onAppStart event but they are not related/not intuitive and we can ignore them for now.
{
      uri,
      isInternetConnected,
      isWiFiConnected,
      isWiFiEnabled,
      isShareableApp
}

FYI @grzegorzdec @grozdanov @kpiascik @darek607 @SPaluchiewiczSofomo


Updated error message template lists

I have added links to character count and email addresses as part of the list of error message templates on the error summary component.

You can preview this change here:
Built with commit c4eac34eac973460ab9e7a3a6c7eccc8f8a6be60
https://deploy-preview-633--govuk-design-system-preview.netlify.com


Upgrade controller-runtime and enable pprof

Now that we're deploying the operator in clusters with bigger scales, we want to understand where our resources are being spent.
This PR upgrades controller-runtime to 1.15 so we can use the new pprof feature (https://github.com/kubernetes-sigs/controller-runtime/pull/1943)

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Remove folders unnecessary to the IMAP window

Do not display: Tasks, Notes, Outbox, Journal, Check, Info, Items, Contacts

This is kina hard to do. Because the folder can have different names depending on the mail account.
On my Gmail these folder will have other names than on my HPI-OWA. So hiding folders named "Tasks" or "Notes" wont work. Also it might be a problem e.g. if someone has a Folder "Tasks" in his Mail Account, where he moves his to-do Mails. This shouldnt be hidden only because the Folder name matches our hiding rule. I would suggest to auto-hide folder, which do not contain any email data. But i am not sure how to implement this and how to differentiate between a calender and a mail file.

Yes you're right. Maybe we can look at this together as a team once and decide how to implement this.
But I think it would be important to do, because it isn't a good user experience to expect something to work, because it is clearly displayed there, even though it does not work.

Because of how different Email Providers name their folders, this issue was replaced by the more broad issue #169.


.parameters() for nn classes

Hi! Has anybody thought about adding a .parameters() method to the nn things that returns all the parameters of the module in a list. That way I can just make a list of all parameters in a model by unpacking the list that gets returned of every .parameters() call. PyTorch does it that way.

use get_parameters


Add 'nng' package

I'm interested in package nng
Here is official site of package https://github.com/nanomsg/nng

This package is using Git: https://github.com/nanomsg/nng.git

Official GitHub repository:  https://github.com/nanomsg/nng

Used build system: CMake

I want to use nng, but I haven't found anything in hunter-packages.
Can anyone tell me how to create it?
Thanks to whoever can make this possible!!!!!!

Can anyone tell me how to create it?

See https://docs.hunter.sh/en/latest/creating-new/create/cmake.html


Add Debian 12 as main distribution

This is a big change to opam-repo-ci; before it goes live there, could you please post a headsup to discuss.ocaml.org that the main build matrix is moving forward to the new stable distro (and/or a brief post for infra.ocaml.org)?

Should we stop debian 10 builds at the same time? EOL was last year but LTS continues to 2024.

It's reasonable to keep Debian 10 going till LTS just because so many downstream packagers use it. However, it's time to trim the other distros. Please see https://github.com/ocurrent/ocaml-dockerfile/pull/176

I've posted to discuss about raising the minimum OCaml version as well; https://discuss.ocaml.org/t/raising-the-minimum-tested-version-of-ocaml-to-4-05-or-4-11-from-4-02/12464

Thanks for doing both those things.
I’ll review and update things when I get back to my computer.
On Fri, 23 Jun 2023 at 10:54 pm, Anil Madhavapeddy @.***>
wrote:

I've posted to discuss about raising the minimum OCaml version as well;
https://discuss.ocaml.org/t/raising-the-minimum-tested-version-of-ocaml-to-4-05-or-4-11-from-4-02/12464
—
Reply to this email directly, view it on GitHub
https://github.com/ocurrent/docker-base-images/pull/234#issuecomment-1604242670,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AABJXOLRQURHMD54Y2SYCGDXMWGXNANCNFSM6AAAAAAZDF43BE
.
You are receiving this because you commented.Message ID:
@.***>

Post here https://github.com/ocaml/infrastructure/pull/54 about Debian 12 and deprecating other distributions. @avsm
Based on the feedback on that discuss thread, I think we could move to 4.08 being the lowest supported version.  I'll prep a PR for it next week.

Included in https://github.com/ocurrent/docker-base-images/pull/237


DE-1668 Added Chunking to downloads in Sa.py

Not sure what to do for the jupyter notebook on this one for documentation. I created this pr as a placeholder because the code is done but I would like feedback on what to do on that front.

@gnilrets Good call on removing the length if statement and fixing ignore_index. I thought that we were leaving all commits? I was going to squash it but as part of the pip my understanding was that I needed to leave all commits as part of the record. Please advise.

@niallscc - Every round of review should be a single commit.  In this case, you push a commit, and then circle came back with a failure.  You then fixed the oops and requested a review (maybe in the other order, but I wouldn't have gotten to it that quick).  So now I've got two commits to review, one of which I really don't need to see and should just be squashed onto the commit you want me to review.
Now, after you've made changes requested in a review, submit that as a new commit.  If there end up being more "oops" commits, then squash those onto the new commit, but don't modify the one that has already undergone review.  That way I can easily focus on just the changes made since the last round of review.

Otherwise, this all looks good.  I'm going to merge this into the v0.2.6 branch.  Not sure what it's going to do to this review history.


FATAL ERROR: Ineffective mark-compact transform[stderr]: s near heap limit Allocation failed - JavaScript heap out of memory

Description
I am using @o1labs/client-sdk (https://www.npmjs.com/package/@o1labs/client-sdk) in my react-native project.
The metro bundler shows error below.