Video download problem - "Unauthorized Access","code":101

I have been using Blinkpy to download videos to my PC for almost a year. Last time that I was able to download the video files was about 4 weeks ago. Today when I was trying to download new video files since my last downloading, I found the sizes of the downloaded video files are all 1kB, obviously something was not right. When I open the video files they just have one line of ASCII text showing below:
{"message":"Unauthorized Access","code":101}
My user name and password should be correct because after the code:

blink.auth = auth
blink.start()
No error message is shown. If the password is not correct, the error message 'Login endpoint failed. Try again later.' will be shown.

Anybody know what is the csuse of this problem? Thank you.

After I got this problem, I can still access my account using Blink app with iphone.  I can access all the new videos on the cloud using my phone and access the live steams of my 3 cameras using my phone.
My code is pretty simple, just like this:
import blinkpy
from blinkpy.blinkpy import Blink
from blinkpy.auth import Auth
blink = Blink()
auth = Auth({"username"<EMAIL_ADDRESS>"password": "********"}, no_prompt=True)
blink.auth = auth
blink.start()
blink.download_videos(path='e:/blink', since='2021/01/01', debug=False)

After I got this problem, I can still access my account using Blink app with iphone.  I can access all the new videos on the cloud using my phone and access the live steams of my 3 cameras using my phone.
My code is pretty simple, just like this:
import blinkpy
from blinkpy.blinkpy import Blink
from blinkpy.auth import Auth
blink = Blink()
auth = Auth({"username"<EMAIL_ADDRESS>"password": "********"}, no_prompt=True)
blink.auth = auth
blink.start()
blink.download_videos(path='e:/blink', since='2021/01/01', debug=False)

I was doing this for quite some time. I noticed that if I run the script to download large amount of videos (a few hundreds),  it will run for a while downloading some files and then stopped with some error messages, and I will receive multiple emails with "verification PIN" at the same time. Usually I just ignore those emails, wait for some time (like 10 minutes) and retry by changing the date range (beside the 'since', I added a 'until' variable to the blink.download_videos() so I can assign a date window for downloading).  I never understand how to use the "verification PIN" correctly with your code.  I tried something like this before:
#my_blink_key = '111111'
#auth.send_auth_key(blink, my_blink_key)
#blink.setup_post_verify()
And it has no effect.

I was doing this for quite some time. I noticed that if I run the script to download large amount of videos (a few hundreds),  it will run for a while downloading some files and then stopped with some error messages, and I will receive multiple emails with "verification PIN" at the same time. Usually I just ignore those emails, wait for some time (like 10 minutes) and retry by changing the date range (beside the 'since', I added a 'until' variable to the blink.download_videos() so I can assign a date window for downloading).  I never understand how to use the "verification PIN" correctly with your code.  I tried something like this before:
#my_blink_key = '111111'
#auth.send_auth_key(blink, my_blink_key)
#blink.setup_post_verify()
And it has no effect.

Yes, when I said "no effect" I mean it does not change the fact the outcome of downloading.
Now I changed the 'no_prompt' to 'False', when I run
blink = Blink()
auth = Auth({"username"<EMAIL_ADDRESS>"password": "********"}, no_prompt=False)
blink.auth = auth
blink.start()
The program will pause and prompting "Enter code sent to xxxx@xxx.com:",  and then I just type in the six digital pin code I received in my email. And program will keep running and finished the downloading. And the downloaded files are all 1kB size with the same content "...Unauthorized Access..."

Yes, when I said "no effect" I mean it does not change the fact the outcome of downloading.
Now I changed the 'no_prompt' to 'False', when I run
blink = Blink()
auth = Auth({"username"<EMAIL_ADDRESS>"password": "********"}, no_prompt=False)
blink.auth = auth
blink.start()
The program will pause and prompting "Enter code sent to xxxx@xxx.com:",  and then I just type in the six digital pin code I received in my email. And program will keep running and finished the downloading. And the downloaded files are all 1kB size with the same content "...Unauthorized Access..."

Now I tried both "Starting blink without a prompt + blink.auth.send_auth_key()" and "Starting blink with prompt + manually input key", and got the same results. So the problem looks like it's not caused by 2FA but something else. I believe your comment about being throttled for my previous experience is correct, and that's not a major issue since I could always wait for a while and resume the downloading. However, this new issue is preventing me from downloading any video at all.
Would you please find the root cause and provide a solution? I really like your code and it's a very convenient solution for downloading Blink videos to PC. I really want to keep using it in the future. Thank you.

Now I tried both "Starting blink without a prompt + blink.auth.send_auth_key()" and "Starting blink with prompt + manually input key", and got the same results. So the problem looks like it's not caused by 2FA but something else. I believe your comment about being throttled for my previous experience is correct, and that's not a major issue since I could always wait for a while and resume the downloading. However, this new issue is preventing me from downloading any video at all.
Would you please find the root cause and provide a solution? I really like your code and it's a very convenient solution for downloading Blink videos to PC. I really want to keep using it in the future. Thank you.

I can confirm seeing the 401 response even after the 2FA code. The setup was working fine some days ago.
The app loads videos fine though.

I can confirm seeing the 401 response even after the 2FA code. The setup was working fine some days ago.
The app loads videos fine though.

I can confirm. App works fine but all video files download are simple text files (json really) containing:
{"message":"Unauthorized Access","code":101}
This started on the 28th around 4am Pacific time:
-rw-rw-r-- 1 user.group 110K Jan 27 06:25 driveway-2021-01-27t14-20-49-00-00.mp4
-rw-rw-r-- 1 user.group  330K Jan 27 12:56 driveway-2021-01-27t20-54-59-00-00.mp4
-rw-rw-r-- 1 user.group  229K Jan 28 03:55 driveway-2021-01-28t11-50-48-00-00.mp4
-rw-rw-r-- 1 user.group  161K Jan 28 03:55 driveway-2021-01-28t11-51-09-00-00.mp4
-rw-rw-r-- 1 user.group   44 Jan 28 15:30 driveway-2021-01-28t23-28-42-00-00.mp4
-rw-rw-r-- 1 user.group    44 Jan 28 17:55 driveway-2021-01-29t01-52-47-00-00.mp4
-rw-rw-r-- 1 user.group    44 Jan 29 08:01 driveway-2021-01-29t16-00-51-00-00.mp4
I stopped the process 24 hours ago, manually refreshed credentials to the cache file - and then restarted. Same.
I stopped the process last night (12+ hours) then restarted. Same.
Still image capture works fine and did for the entire time between the 28th and yesterday when videos stopped working.
Has anyone confirmed they have downloaded videos after the 28th?
5 XT cameras which have been working with the process running for months.

I can confirm. App works fine but all video files download are simple text files (json really) containing:
{"message":"Unauthorized Access","code":101}
This started on the 28th around 4am Pacific time:
-rw-rw-r-- 1 user.group 110K Jan 27 06:25 driveway-2021-01-27t14-20-49-00-00.mp4
-rw-rw-r-- 1 user.group  330K Jan 27 12:56 driveway-2021-01-27t20-54-59-00-00.mp4
-rw-rw-r-- 1 user.group  229K Jan 28 03:55 driveway-2021-01-28t11-50-48-00-00.mp4
-rw-rw-r-- 1 user.group  161K Jan 28 03:55 driveway-2021-01-28t11-51-09-00-00.mp4
-rw-rw-r-- 1 user.group   44 Jan 28 15:30 driveway-2021-01-28t23-28-42-00-00.mp4
-rw-rw-r-- 1 user.group    44 Jan 28 17:55 driveway-2021-01-29t01-52-47-00-00.mp4
-rw-rw-r-- 1 user.group    44 Jan 29 08:01 driveway-2021-01-29t16-00-51-00-00.mp4
I stopped the process 24 hours ago, manually refreshed credentials to the cache file - and then restarted. Same.
I stopped the process last night (12+ hours) then restarted. Same.
Still image capture works fine and did for the entire time between the 28th and yesterday when videos stopped working.
Has anyone confirmed they have downloaded videos after the 28th?
5 XT cameras which have been working with the process running for months.

I've been getting the "unauthorized access" results ever since the 27th.  The last actual video I managed to get was from the 26th.  I can still access from the app just fine, so I'm not blacklisted.
However, I can't download any videos at all.

I've been getting the "unauthorized access" results ever since the 27th.  The last actual video I managed to get was from the 26th.  I can still access from the app just fine, so I'm not blacklisted.
However, I can't download any videos at all.

I've been getting the "unauthorized access" results ever since the 27th. The last actual video I managed to get was from the 26th. I can still access from the app just fine, so I'm not blacklisted.
However, I can't download any videos at all.

I've been getting the "unauthorized access" results ever since the 27th. The last actual video I managed to get was from the 26th. I can still access from the app just fine, so I'm not blacklisted.
However, I can't download any videos at all.

I can confirm as well with not being able to download any videos.

I can confirm as well with not being able to download any videos.

Hi, I can also confirm this behavior starting on Jan 29th. At the same time 2FA stopped working. Verify requests do fail using the correct PIN. I think this is also related to https://github.com/fronzbot/blinkpy/issues/418. They probably have changed the 2FA API.

I can also confirm when running
blink.download_videos('/home/larry/blink', since='2021/02/01', camera='all', stop=10, debug=False)
the video files and names download in a .mp4 extension but it's only 44bytes and not playable.
If we can look into this that'd be phenomenal
No error messages seen
Blink XT and Blink outdoor cameras and sync module 2

An interesting additional bit of information. Prior to this the videos would be marked as viewed in the app - that no longer happens either. So it is more than just “download” on the Blink side...

If I use the curl raw way to get a token and then use that token to replace what blinkpy generates/saves by replacing it in the file I call  with :
auth = Auth(json_load("config.json"))
Then the download call works.
Otherwise I too get the same error now.

@macleajb can you give a little bit of a bigger code snippet on how you are managing the auth token?

@pferland :
Make the auth request:
curl 'https://rest-prod.immedia-semi.com/api/v4/account/login' -X POST  -H 'Content-Type: application/json' -d '{"unique_id": "19283746-0000-0000-0000-000000000000", "password":"Your_Password","email":"your@email"}'
This return in JSON format, the info including the token and region you need to adjust your URL requests with. Appears to also include if you need to verify the account:
"verification_required":true
From that I do the verify:
curl --request POST --url https://rest-{region}.immedia-semi.com/api/v4/account/{account id}/client/{client id}/pin/verify --header 'content-type: application/json' --header 'token-auth: {Token}' --data '{"pin":"{PIN sent to phone}"}'
You should get a positive response.
Then I just replace the "token": value in the json file I load for blink. You can also just confirm it is working with more requests:
curl --request GET --url 'https://rest-{region}.immedia-semi.com/api/v1/accounts/{account id}/media/changed?since=2021-02-02T09%3A58%3A14%2B0000&page=1' --header 'token-auth: {token}'
I notice that once I have that token, I no longer need to do the auth call, but, if I do, it may send me a PIN even though the response says "verification_required":false.

@macleajb
Weird, I get invalid pin when I try to verify it. Maybe I did it slightly wrong?

[pferland@piecave blinkpy]$ curl -H "Host: rest.prod.immedia-semi.com" -H "Content-Type: application/json" --data-binary '{ "password" : "", "client_specifier" : "Fedora 32", "email" : "" }' --compressed https://rest.prod.immedia-semi.com/api/v4/account/login -k
{"account":{"id":<USER_ID>,"verification_required":false,"new_account":false},"client":{"id":<CLIENT_ID>,"verification_required":true},"authtoken":{"authtoken":"","message":"auth"},"region":{"tier":"u026","description":"United States","code":"ap"},"lockout_time_remaining":0,"force_password_reset":false,"allow_pin_resend_seconds":60}
[pferland@piecave blinkpy]$ curl --request POST --url https://rest-u026.immedia-semi.com/api/v4/account/<USER_ID>/client/<CLIENT_ID>/pin/verify --header 'content-type: application/json' --header 'token-auth: ' --data '{"pin":"<EMAIL_PIN>"}'
{"valid":false,"require_new_pin":false,"code":1621,"message":"Invalid PIN"}
[pferland@piecave blinkpy]$

I have noticed though, that the PIN verification is not required and you can do other REST API calls as noted in my other issues ticket #418.

curl -H "Host: rest.u026.immedia-semi.com" -H "TOKEN_AUTH: " --compressed https://rest.u026.immedia-semi.com/networks -k
{"summary":{"<NETWORK_ID>":{"name":"","onboarded":true},"<NETWORK_ID>":{"name":" ","onboarded":true}},"networks":[{"id":<NETWORK_ID>,"created_at":"2020-11-25T15:06:35+00:00","updated_at":"2020-11-25T15:06:35+00:00"

I can list out the videos, but when doing an access to the video file itself, I get Unauthroized access.
[pferland@piecave blinkpy]$ curl --request GET --url 'https://rest-u026.immedia-semi.com/api/v2/accounts/<USER_ID>/media/clip/<FILE_NAME>.mp4' --header 'token-auth: <AUTH_TOKEN>' -k
{"message":"Unauthorized Access","code":101}
Same thing for the Tumbnails
[pferland@piecave blinkpy]$ curl --request GET --url 'https://rest-u026.immedia-semi.com/api/v2/accounts/<USER_ID>/media/thumb/<THUMB_NAME>' --header 'token-auth: <AUTH_TOKEN>' -k
{"message":"Unauthorized Access","code":101}

I also still get {"valid":false} responses. Tried to modify the header a bit, set explicit POST request type etc., all using plain curl, not Python. Still verification fails. Listing media files works even without verification, but not downloading.
Would be happy to help, but don't know how do you determine the correct API endpoints in case the have been changed.

@macleajb: Are you sure that the downloaded files are valid MP4 files?

@macleajb: Are you sure that the downloaded files are valid MP4 files?

Yes I can confirm the mp4's are proper. It appears if you don't get a successful pin verify you can still do some of the queries but the MP4 downloads will fail...

@macleajb Interesting, I wonder how you are getting the 2FA pin validated and I can't.

@pferland, that sure looks correct to me :(.

[pferland@piecave blinkpy]$ curl --request POST --url https://rest-u026.immedia-semi.com/api/v4/account/USER_ID/client/CLIENT_ID/pin/verify --header 'content-type: application/json' --header 'token-auth: AUTHTOKEN' --data '{"pin":"EMAIL_PIN"}'
{"valid":false,"require_new_pin":false,"code":1621,"message":"Invalid PIN"}

Hmm, but I use unique_id: when I login, not client_specifier. Not sure what difference that would make.

Can confirm a valid 2FA validation will allow the video file to be downloaded.

[pferland@piecave blinkpy]$ curl -H "Host: rest.prod.immedia-semi.com" -H "Content-Type: application/json" --data-binary '{ "password" : "PASSWD", "client_specifier" : "Fedora 32", "email" : "LOGIN" }' --compressed https://rest.prod.immedia-semi.com/api/v4/account/login -k
{"account":{"id":USER_ID,"verification_required":false,"new_account":false},"client":{"id":CLIENT_ID,"verification_required":true},"authtoken":{"authtoken":"AUTH_TOKEN","message":"auth"},"region":{"tier":"u026","description":"United States","code":"ap"},"lockout_time_remaining":0,"force_password_reset":false,"allow_pin_resend_seconds":60}
[pferland@piecave blinkpy]$ curl --request POST --url https://rest-u026.immedia-semi.com/api/v4/account/USER_ID/client/CLIENT_ID/pin/verify --header 'content-type: application/json' --header 'token-auth: AUTH_TOKEN' --data '{"pin":"EMAIL_PIN"}'
{"valid":true,"require_new_pin":false,"message":"Client has been successfully verified","code":1626}
[pferland@piecave blinkpy]$ curl --request GET --url 'https://rest-u026.immedia-semi.com/api/v2/accounts/USER_ID/media/clip/FILE_NAME.mp4' --header 'token-auth: AUTH_TOKEN' -k --output /home/pferland/test.mp4
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
100 7238k  100 7238k    0     0  17.1M      0 --:--:-- --:--:-- --:--:-- 17.1M

Enter code sent to : 971337
Did not receive valid response from server.

@pferland , not sure why it would ask for your code as the token you entered via the load() call would be valid and not need to do a login() call. Almost sounds like you dod not load the new token or it is not be presented properly.

@macleajb
My issue was I was saving my config and it was using an old config. Cleared out that config and re-ran, verify says it worked, but the videos are still not downloading properly, they are all 44 bytes.

Now I don't even get verification e-mails with a PIN anymore. App still works fine.

@rbrtrs I noticed that when the session info is saved, a new PIN will not be sent.
delete the blinkpy session file (if you have one, this happened when I had an old session file saved.)
re-run the script, and a new 2FA Pin should be sent.

@pferland: Thank you for the hint. But I am still using plain curl calls for testing, not blinkpy. Tested with two different accounts. Very strange.

@rbrtrs I do know they limit emails being sent out, maybe wait half hour to an hour or so and try it again?

@pferland: Yes, will try at a later point in time again.

Interesting, I was messing around with pythons requests module to see if that would make things work, but its really odd that I get a 404 response code for the Video List URL, but the command line curl will still work...
import json
from pprint import pprint
import requests
data = {"password": "<PASSWD>", "client_specifier": "Fedora 32", "email": "<LOGIN>"}
response = requests.post('https://rest.prod.immedia-semi.com/api/v4/account/login', json=data, verify=False)
if response.status_code is 200:
    data = json.loads(response.text)
    pprint(data)

    auth_token = str(data['authtoken']['authtoken'])
    user_id = str(data['account']['id'])
    client_id = str(data['client']['id'])
    verification_required = data['client']['verification_required']
    region_server = str(data['region']['tier'])
    #headers = {'User-Agent': 'curl/7.54', 'token-auth': auth_token}
    headers = {'token-auth': auth_token}
    pprint(auth_token)

    if verification_required is True:
        print("Enter 2FA Pin from Blink Email: ")
        pin_input = input()

        data = {"pin": pin_input}
        response2 = requests.post('https://rest.'+region_server+'.immedia-semi.com/api/v4/account/'+user_id+'/client/'+client_id+'/pin/verify', json=data, verify=False, headers=headers)
        data2 = json.loads(response2.text)
        pprint(data2)
        if data2['valid'] is True:
            pprint('https://rest.' + region_server + '.immedia-semi.com/api/v1/accounts/'+user_id+'/media/changed?since=2020-12-02')
            response3 = requests.post(
                'https://rest.' + region_server + '.immedia-semi.com/api/v1/accounts/'+user_id+'/media/changed?since=2020-12-02&page=1',
                json=data, verify=False, headers=headers)
            pprint(response3.status_code)

        else:
            sys.exit("Failed 2FA Pin Verification")

    else:
        sys.exit("Verification not required?")

else:
    sys.exit("Failed to Login")

output:

Enter 2FA Pin from Blink Email:
128417
{'code': 1626,
 'message': 'Client has been successfully verified',
 'require_new_pin': False,
 'valid': True}
'https://rest.u026.immedia-semi.com/api/v1/accounts/<USER_ID>/media/changed?since=2020-12-02'
404

Even weirder is that I get a 403 when trying to access the video file itself.
{'code': 1626,
 'message': 'Client has been successfully verified',
 'require_new_pin': False,
 'valid': True}
'https://rest.u026.immedia-semi.com/api/v2/accounts/<USER_ID>/media/clip/<FILE_NAME>.mp4'
403

I wonder if doing a direct curl call from python would make a difference, maybe it might have to be a bash script to get it to work too. Going to try a few things.

Got a working work around using bash and python together.
Will do a little clean up either tonight or tomorrow and post it here if you would like

This would be highly appreciated by me. Was not able to follow up yet because the missing PIN notification...

Are you still able to do things on the Blink Mobile app? If not, I hope they didn't suspend your account for abusing the API :(
If you can, that's really weird how you have not gotten a new PIN email.

I don't think they have suspended my account since in that case they would have suspended two independent accounts at the same time. The App is still working fine with both accounts.

okay, good to know. will work on cleaning the script up tomorrow and post it here.

In blinkpy/auth.py, replace:
return {"TOKEN_AUTH": self.token, "user-agent": DEFAULT_USER_AGENT}
with
return {"TOKEN_AUTH": self.token, "user-agent": DEFAULT_USER_AGENT, "content-type": "application/json"}
build and run.
PIN validation call succeeds. At least it does for me.
Existing problem is that validation fails if the content-type: application/json header is not passed in the call.
This is not a correct fix. I only submit it to suggest what appears to be the error. I did not investigate to see what harm forcing that content-type on for everything does and it may do just that (cause harm).
Cheers,
DrJES

Okay, the script is all cleaned up. It probably has a lot of things that can be done differently and more efficiently, but it was a quick and dirty script to get what we needed done.
Requirements: Python3 (json, argparse, sys) and /bin/bash.
download.sh script (main script to run):
#!/bin/bash
# Created By: Phillip Ferland
# Email<EMAIL_ADDRESS># Date: 2021-02-05
# Description: Work around for Blink REST API to download videos.
#              Seems like 2FA Pin validation is required to get a valid back now inorder to download the videos.
#              But it seems to only work with raw cURL for some reason.
#              Python modules (that I have tried; pycurl and requests) get a 404 or 403, even after 2FA PIN validation

USERNAME=$1
PASSWORD=$2
VIDEO_FROM_DATE=$3
SAVE_FOLDER=$4
SLEEP_BETWEEN_VIDEO=$5

if [ $# -lt 4 ]; then
  echo "Not enough arguments."
  echo ""
  echo "Usage:"
  echo "./download.sh <USERNAME> <PASSWD> <CHANGES_SINCE_DATE> <SAVE_FOLDER> <SLEEP_BETWEEN_VIDEO>"
  echo ""
  echo "Example:"
  echo './download.sh<EMAIL_ADDRESS>PA$$W)4D 2020-12-02 /mnt/blink_videos'
  echo ""
  echo "<SLEEP_BETWEEN_VIDEO> is optional, default is 60 seconds to be nice to the Blink REST API and we dont get kicked off it."
  exit
fi

if [ "${5}" == "" ]; then
  SLEEP_BETWEEN_VIDEO=60
else
  echo "SLEEP_BETWEEN_VIDEO set to: ${SLEEP_BETWEEN_VIDEO} seconds"
fi

LOGIN=$(curl --silent -H "Host: rest.prod.immedia-semi.com" -H "Content-Type: application/json" \
--data-binary '{ "password" : "'${PASSWORD}'", "client_specifier" : "Fedora 32", "email" : "'${USERNAME}'" }' \
--compressed https://rest.prod.immedia-semi.com/api/v4/account/login -k)

#echo "${LOGIN}"

# Parse for Auth Token
IN=$(echo "${LOGIN}" | jq -r '.authtoken' | grep "authtoken")
arrIN=(${IN//: / })
token=${arrIN[1]}
token=$(echo "$token" | sed 's/,//g' | sed 's/"//g')
#echo "${token}"
HEADER="token-auth: ${token}"

# Parse for User ID
IN=$(echo "${LOGIN}" | jq -r '.account' | grep "id")
arrIN=(${IN//: / })
USER_ID=${arrIN[1]}
USER_ID=$(echo "${USER_ID}" | sed 's/,//g')
#echo "${USER_ID}"

# Parse for Client ID
IN=$(echo "${LOGIN}" | jq -r '.client' | grep "id")
arrIN=(${IN//: / })
CLIENT_ID=${arrIN[1]}
CLIENT_ID=$(echo "${CLIENT_ID}" | sed 's/,//g')
#echo "${CLIENT_ID}"

#Parse for Validation required
IN=$(echo "${LOGIN}" | jq -r '.client' | grep "verification_required")
arrIN=(${IN//: / })
VER_REQ=${arrIN[1]}
VER_REQ=$(echo "${VER_REQ}" | sed 's/,//g')
#echo "${VER_REQ}"

#Parse for REST API Region Server
IN=$(echo "${LOGIN}" | jq -r '.region' | grep "tier")
arrIN=(${IN//: / })
REGION=${arrIN[1]}
REGION=$(echo "${REGION}" | sed 's/,//g' | sed 's/"//g')
#echo "${REGION}"

#exit
if [ "${VER_REQ}" == "true" ]; then
  echo "Need to verify Client."
  sleep 2
  read -r -p "Blink 2FA Pin: " PIN
  # 2FA Verification
  #echo "https://rest-${REGION}.immedia-semi.com/api/v4/account/${USER_ID}/client/${CLIENT_ID}/pin/verify"
  VERIF=$(curl --silent --request POST --url "https://rest-u026.immedia-semi.com/api/v4/account/${USER_ID}/client/${CLIENT_ID}/pin/verify" --header 'content-type: application/json' --header "token-auth: ${token}" --data '{"pin":"'${PIN}'"}')

  VALID=$(echo "${VERIF}" | jq -r '.valid')
#  echo ${VALID}
else
  echo "Verification not required."
  VALID="true"
fi

#echo $VALID

if [ "$VALID" = "true" ]; then
    echo "User 2FA Pin Validated."
    #List Videos
    LIST_VIDEOS=$(curl --silent --request GET --url "https://rest-${REGION}.immedia-semi.com/api/v1/accounts/${USER_ID}/media/changed?since=${VIDEO_FROM_DATE}&page=1" --header 'content-type: application/json' --header "token-auth: ${token}" -k)

    echo "Using Python to process the Video List (it was easier and quicker than using bash...)"
    python3 processes_list.py -i "${LIST_VIDEOS}"

    while IFS="" read -r p || [ -n "$p" ]
    do
      #printf '%s\n' "$p"
      arrIN=(${p//::/ })
      FILENAME=${arrIN[1]}
      SAVEFILE=${arrIN[0]}

      #echo $SAVEFILE
      #echo $FILENAME
      #Download Videos
      echo "/home/pferland/${SAVEFILE}"
      curl --request GET --url "https://rest-${REGION}.immedia-semi.com/api/v2/accounts/${USER_ID}/media/clip/${FILENAME}" --header "token-auth: ${token}" -k --output "${SAVE_FOLDER}/${SAVEFILE}"
      echo ""
      echo "||-------------------------------------------------------------------||"
      sleep ${SLEEP_BETWEEN_VIDEO}
    done < file_list.txt
    exit
else
    echo "User 2FA Pin Failed Validation."
    exit
fi

processes_list.py  (run by the bash script to parse the video files list)
import json
import argparse
import sys

def get_options(args=sys.argv[1:]):
    parser = argparse.ArgumentParser(description="Parses command.")
    parser.add_argument("-i", "--input", help="Your input string.")
    arg_options = parser.parse_args(args)
    return arg_options

options = get_options()

json_data = json.loads(options.input)

with open("file_list.txt", "w+") as FH:
    for media in json_data['media']:
        if media['deleted'] == "true":
            continue
        file_id = str(media['media']).split("/")[-1].split(".")[0]
        name = str(media['device_name']).replace(" - ", "-").replace(" ", "-")
        created = str(media['created_at']).replace("+", "-").replace(":", "-")
        save_filename = name+"-"+created+".mp4"
        #print(save_filename+"::"+file_id+"\n")
        FH.write(save_filename+"::"+file_id+"\n")
    FH.close()

Just realized that I did not check for existing videos if they were already downloaded. So this script will re-download videos that already are on the local filesystem.

Fixed the temp scripts so that they look for the existing video files and also does not attempt to download the deleted files.

@fronzbot just installed the 0.16.5rc0 and it looks like it is downloading the videos properly now.
Just needed to delete the old session file and have it re-created with a validated 2FA pin.

Thank you @pferland, @macleajb and @fronzbot!

Newbie here so please bear with me. I've been following the instructions above with a successful install of 0.16.5.rc0. The part i can't seem to resolve is 'Just needed to delete the old session file '...@pferland would you be able to give the path and filename for this session file. I can't seem to locate it?
much appreciated

@kwkid If you use blink.save(blink_conf) that saves a session config file after a login and 2FA validation. If you have one of these files saved before the 0.16.5rc0 update, you will need to delete it first. If you do not save the session data with blink.save(blink_conf) you do not have to do anything and can use 0.16.5rc0 without any pre-req steps.

@pferland....Ah makes total sense.....cheers


[5.6] Support custom S3 storage

laravel/framework#24591 Fix support custom URLs for S3 storage

Must merge with laravel/laravel#4686

I am closing this pull request because it lacks sufficient explanation, tests, or both. It is difficult for us to merge pull requests without these things because the change may introduce breaking changes to the framework.
Feel free to re-submit your change with a thorough explanation of the feature and tests - integration tests are preferred over unit tests. Please include it's benefit to end users; the reasons it does not break any existing features; how it makes building web applications easier, etc.
Thanks!

I'm kind get the @finagin point with that change... I have a similar use case and I gonna test it when I get some time. I think it could be made in a backward compatibility way.


fix forbid two TVF in one fragment since the limit of coordinator (#28114)

pick from master
PR #28114
commit 65fc2e043871c426f5efe60d44ed528e2b5aeff3
Proposed changes
Issue Number: close #xxx

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

run buildall

run buildall

run buildall

run clickbench

run clickbench


restart lsp workspace when virtualenv updated

What did you expect to happen?
When I enable (python +lsp +poetry),  use poetry to create a project with python virtualenv and open a python file of the project, Emacs should enable LSP mode and use current Python virtualenv.
What actually happened?
When I enable (python +lsp +poetry),  use poetry to create a project with python virtualenv and open a python file of the project, Emacs do enable LSP mode, but won't detect current virtualenv. I need invoke lsp-workspace-restart manually to make it right.
Describe your attempts to resolve the issue
When use (python +lsp +poetry), I found I have to invoke lsp-workspace-restart manually to make LSP detect current Python virtualenv. So I have the config below in my config.el:
(defun my-restart-python-lsp ()
  (when (bound-and-true-p lsp-mode)
    (call-interactively #'lsp-workspace-restart)))
(after! pyvenv
  (add-hook 'pyvenv-post-activate-hooks #'my-restart-python-lsp))

I'm not sure whether it's just Python or other languages also have this issue, maybe it's also related to the implementation of LSP language server?
Steps to reproduce

enable (python +lsp +poetry)
poetry new demo
poetry add xxxx
use Doom Emacs create a python file in demo project
try to import xxxx lib, and you won't get lsp completion or find-definition work, flycheck complains unresolve xxxx
invoke lsp-workspace-restart, then you can get xxxx completion works and flycheck error gone

System Information
https://pastebin.com/DNjNcsyG

Which language server are you using? E.g. pylsp has lsp-pylsp-plugins-jedi-use-pyenv-environment that sets the environment based on pyenv. There's no such feature for poetry as far as I know, but I think you can write a hook to handle that. I added that to the LSP wishlist, but I'm not sure if it'll get implemented.
I'm trying to sort out a pyright+pyenv setup at the moment, that might be related as well, see here.


Add controller method that shows how to serve the uploaded files again

Uploading the files is just one part of the story. Serving them in turn would be helpful to show as well.

Hey all, I am back with another set of students who'd like to server their uploaded files again ;).

I'm on PTO this week. Perhaps I can work on this next week.

No worries Greg, I just thought I bump the need for this improvement! Enjoy your PTO! :)

Looking at what's been implemented for this, the fix deployed didn't actually implement what I was thinking of in the first place. Th fix lists all files hosted but doesn't expose them again. The latter is what is  not necessarily trivial (setting the mime type correctly, content-disposition headers etc.). So it would be cool if the guide also served the files initially uploaded again.

Applying what I've learned about Java NIO mixed with some Spring utility classes I think this guide could use a nice refresher.

Shall I create a new ticket? I guess just returning a Spring Resource and letting the HttpMessageConverter do the trick should be sufficient. Maybe adding the Content-Disposition header with a file name?

Feel free to open a new ticket and itemize what needs to be tackled. I'll
probably submit one commit that resolves them all.
On Mon, Jun 27, 2016 at 11:36 AM, Oliver Gierke<EMAIL_ADDRESS>wrote:

Shall I create a new ticket? I guess just returning a Spring Resource and
letting the HttpMessageConverter do the trick should be sufficient. Maybe
adding the Content-Disposition header with a file name?
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/spring-guides/gs-uploading-files/issues/9#issuecomment-228800858,
or mute the thread
https://github.com/notifications/unsubscribe/AAS_AHgAXNuiAnSVLxh-hdCJKEtn30sKks5qP_wDgaJpZM4DJib5
.

--
Greg Turnquist | Senior Software Engineer | Pivotal
Mobile: +1<PHONE_NUMBER> | twitter/github/skype: gregturn |
<EMAIL_ADDRESS>Pivotal.io http://www.pivotal.io

@olivergierke Check out the update to this guide. I think you'll really enjoy it.


Getting this error E/AudioRecord-JNI: Error -38 during AudioRecord native read when start recording again in Android 10, can give  a suggestion?

@kailash09dabhi
hey sir, just a quick question, I need to call for audioRecorder.release() when stop Recording, cause I also didnt ??
Cause I get this error E/AudioRecord-JNI: Error -38 during AudioRecord native read when start the recording again.
Behaviour now:

Start record : no problem
Stop record: no problem
-Start again: no problem
-Stop again: no problem
Start again: E/AudioRecord-JNI: Error -38 during AudioRecord native read

This happened nearly every time in Android 10 device.
I know this may cause by mic is using by another app, but in my testing, my phone is not record anything else when having error.
May be because of the recorder is not release when stop recording?? I have no single clue.
Please give me some hint..

I tried to solve it like this:
Initialize the PullTransponse:
pullTransport = new PullTransport.Noise(mic(),
                   new PullTransport.OnAudioChunkPulledListener() {
                       @Override public void onAudioChunkPulled(AudioChunk audioChunk) {
                           animateVoice((float) (audioChunk.maxAmplitude() / 200.0));
                       }
                   },
                   new WriteAction.Default(),
                   new Recorder.OnSilenceListener() {
                       @Override public void onSilence(long silenceTime) {
                           Log.e("silenceTime", String.valueOf(silenceTime));
                           Toast.makeText(MainActivity.this, "silence of " + silenceTime + " detected",
                           Toast.LENGTH_SHORT).show();
                       }
                   }, 200
           );

if (audioRecorder == null) {
           return
        }else{
            try {
                audioRecorder.stopRecording();
                pullTransport.pullableSource().audioRecord().release(); //Here I tot it will release the audio,but still the same

            } catch (IOException e) {
                e.printStackTrace();
            }
        }

after look at this issues:
https://github.com/kailash09dabhi/OmRecorder/issues/23
But it still having the still having the same error

This problem only happen at Android 10, at least I test in our device below 10 is ok, only 10 have this E/AudioRecord-JNI: Error -38 during AudioRecord native read when it start recording again

Did you try adding android:requestLegacyExternalStorage="true" to the application tag in manifest file. It worked for me(this is a temporary solution though )

@md0092651 bro I already set android:requestLegacyExternalStorage="true" in AndroidManifest.xml but it still the same.. Still having the same error..


Incremental configurations

Might be confusing to see all the parameters that do not apply. Maybe config.schema.yaml per workflow

Same could apply to samples.tsv schema checker

Take out validated from config, and just store it in as a global. Does not need to be in config


setup code coverage report/tool

either istanbul or blanket

This can definitely wait until main pieces are finished. I love the idea of having unit tests and code coverage reporting. Keeping things modern :)


[Bug Report] Dialog margin changes on close

Element UI version
2.4.6
OS/Browsers version
Ubuntu / Chrome 68.0.3440.106
Vue version
2.5.17
Reproduction Link
https://jsfiddle.net/nounoursnoir/srke28uz/10/
Steps to reproduce
Nothing to do, I set an interval that opens/closes the dialog every 1 second.
The behaviour is difficult to perceive so you may go in the inspector and select the div with the class 'el-dialog' in order to see its margin value. It will be easy to spot if you are on Chrome since they provide a visual tool to see the borders/paddings/margins/sizes of the selected element.
What is Expected?
The margin of the 'el-dialog' should stay the same all the time, even if a scrollbar appears when closing the dialog.
What is actually happening?
Before the dialog closes, there is a small time in which the margin value changes.
The bug doesn't appear systematically so you may have to try a few times (for me it's about 1 out of 2 times).
I think this is due to the scrollbar appearing and disappearing. It takes some space and changes the margins of items that should be centered in the window. It is based on document.documentElement.clientWidth, which takes the scrollbar in consideration, while it should be based on window.innerWidth, which doesn't take the scrollbar in consideration.
You can observe this behaviour here: https://jsfiddle.net/nounoursnoir/ajf9cxkt/5/

Maybe you need set lock-scroll to false.

Well that would solve the problem but I don't want the body to be scrollable when a dialog is open

When the scroll bar appears, the width of the body element changes. We set Dialog margins to auto to horizontally center Dialog, so the margin changes. The same is true of bootstrap's modal. https://getbootstrap.com/docs/4.1/components/modal/

I understand how it works and I find it to be a bad behaviour. However I would understand that you say you don't want to work on an issue with such little impact.


Wellcome collection heuristic evaluation

We want users to be able to
be able to use the Wellcome collection site without added cognitive load or negative influence so the team will undertake a heuristic evaluation to ensure that the site meets general usability standards.
Team members will do an evaluation based on https://uxmag.com/articles/psychological-usability-heuristics
Alice and Dominique will do a more extensive evaluation based on Neilson Normans heuristics

Link to Notion doc with team notes during the evaluation: https://www.notion.so/wellcometrust/Site-audit-notes-599309ba293941058e2c64d539eba49d


Update README.md

Added the following to provide the open source community with more information:

This project uses third-party libraries, which are licensed under their own respective Open-Source licenses.

Signed-off-by: Jonas van den Bogaard<EMAIL_ADDRESS>

Can one of the admins verify this patch?


Use additional headers from SupabaseClient into GotrueClient.

What kind of change does this PR introduce?
Feature
What is the current behavior?
When we instantiate SupabaseClient it is possible to specify additional headers to use in any API request :
https://github.com/supabase/supabase-js/blob/c5310d69cada1cb72b8d698d8a27c8a9590898d3/src/SupabaseClient.ts#L44
These headers don't seem to be actually used at all.
Gotrue allows to specify the audience of the users during requests, by setting a header 'X-JWT-AUD' containing the audience, but we cannot use this feature yet because when SupabaseClient instantiates the GotrueClient, it doesn't forwards the custom headers to it.
What is the new behavior?
When SupabaseClient instantiates the GotrueClient, it forwards the custom additional headers to the GotrueClient. It is now possible to set the 'X-JWT-AUD' header in every request to Gotrue.

Nice work @tartard - this is great. We are about to do a Launch Week so won't be able to test/merge this until August, but this is definitely something we want to support

@tartard I was just looking at making a very similar change when I found this PR. Would you be able to expand it to also add the headers to instantiation of the PostgrestClient, SupabaseStorageClient and SupabaseQueryBuilder? These are the other three places headers are used but the settings.headers aren't actually passed in.
If you're not able to make that change let me know and I'll open another PR.

@dabarrell I anticipated this need but it wasn't in my use case, and less easy to implement so I didn't implement it.
When I was thinking about it I was wondering if every client should receive only their expected headers or not. For example, should Postgrest client also receive the X-JWT-AUD header which is intended only to Gotrue client ? I think that filtering would be nicer, but it would also be more development and maintenance work so maybe it is not worth.
Anyway, currently I don't have time to work on this, so if you have an idea of how to implement it, yes feel free to open another PR.

Thanks for the PR @tartard!
@dabarrell if you'd like to open another PR for the other components, that'd be cool - then we can close #166.

:tada: This PR is included in version 1.22.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Avoid sending window update messages if locally closed (#143)

Motivation:
Currently the library crashes if a window update is required and the connection is closed locally.
Modifications:
Check the connection state before sending a window update message.

@swift-server-bot test this please


[OF-1468] Multiplayer Test Runner.

Add a multiplayer test runner, a command line test framework designed for cross process testing, with the intent to be launchable as multiple parallel instances to test multiple users in the same space.
Project Layout

src Primary source file directory for internal code

InternalUnitTests GTest tests. Not just called "tests" because runnable tests also exist
RunnableTests The test cases that this framework supports and is designed to invoke. Only one example there for now

thirdparty Third party dependencies, just header only at the moment for simplicity. CLI11 and UUID_v4
include External headers. Intended to be included by managing processes to help in the management.

Build System
The project exists in a MultiplayerTestRunner directory in the solution. It is linked against the CSP DLL, and as such uses the USING_CSP_DLL define. This is set automatically in premake. The same old copy-dll-next-to-binary solution is used to make them available.
Googletest is linked from the solution wide Thirdparty directory. A preprocessor flag RUN_MULTIPLAYER_RUNNER_TESTS is set to branch to google test invocation or not. This flag is enabled by default on debug builds.
Description
The concept here is that the runner is a framework for writing lots of different test stubs (the stuff in RunnableTests), and launching it via a CLI. A timeout is provided, so the runner does not hang indefinitely, although that's only a soft guarantee as the content of the runnable tests is opaque.
Termination
The runner uses RAII types to try and ensure cleanup. However this will not be possible with process termination, and process termination is an inevitability when managing this in an automated environment.
The space field in the CLI is provided for this, allowing managers to create their own space, and thus take responsibility for cleanup in that way. This is also the mechanism by which multiple users in the same space will be supported.
In any case, leaving spaces around and users logged in isn't fatal, it's just messy.
Process Descriptors
This is the biggest swing, and a solution I'm not 100% sure is going to work, although I don't see why it wouldn't
The concept here is that the application prints to stdout a set of defined phrases, which can be observed from calling processes consuming the stdout stream. These can then be used to make sure test timings are good, and reduce or eliminate flakiness. The important one is the READY_FOR_ASSERTIONS one, which is printed after the runnable test returns.
Room for Improvement

The main thing on my mind is passing arguments to Runnable Tests. I'm not sure duplicated explicit tests will be tenable long term. Not that tricky a change to make if it becomes neccesary though.
On a smaller note because our result types are not movable, we capture promises by reference in this implementation, which is fine but not best practice. Moving these things into off-thread callbacks instead rules out potential lifetime and synchronisation issues.
Many of the tests require a credentials file, which is unfortunate because the application dosen't need one to run. It'd be nice if we had some sort of default credentials we could pull from somewhere rather than asking the dev to know to provide one.

[!CAUTION]
Please do not review thirdparty/CLI11.hpp, thirdparty/endianness.h or thirdparty/uuid_v4.h, these are header only libraries copied into the project.

Screenshots!

@MAG-OR It's sort of annoying how github is configured to automatically dismiss stale reviews, I think what you did with the approve earlier was the right thing, didn't need to dismiss the whole review. :(


Remove the lineinfile task to rc.local to run cuda_init.sh on boot

Since 897e52ffe1066a0cdab7e86aff001693c5363b64 ansible runs cuda_init.sh when the cuda_gpu_name0 device does not eixst. Can we remove the entry for cuda_init.sh in rc.local? ( I think we can )

As the ansible in rc.local takes a long time and slurm starts without waiting for rc.local then we'd still need to run cuda_init before ansible. Added as a systemd.service in https://github.com/CSC-IT-Center-for-Science/ansible-role-cuda/commit/f93fd8a67cd0e2093032411c0608b35a424c82e2 (not tagged as a release or added to fgci-ansible's requirements yet)


[mapping template]typo fix for create Eline add order template

Describe the bug
some "UNI" in property title in create eline add order template should be changed to "Eline"
To Reproduce

check in mapping page

Expected behavior
some "UNI" in property title in create eline add order template should be changed to "Eline"
Screenshots
Additional context
n/a

@zhiyaoPCCW
still 2 UNI found in title and name

after discussion, these 2 fields are for srcUni and destUni
tested with pass.


email: Make HTML versions of emails that don't have it.

Added html versions of emails missing one, having only txt files. Updated the test_templates.py file to test the new html files as well.
Fixes #4691

Automated message from Dropbox CLA bot
@RameshAditya, it looks like you've already signed the Dropbox CLA. Thanks!

Apologies for the delay, I've added the newline after the {% else %} line in the password_reset.html and I've changed the confirm_registration_mit.html file's paragraph format to an ordered list.

Thanks for your work on this @RameshAditya, and for your comments @rht! And also sorry for the long delay in getting this merged; we've been on the road (at PyCon) for the last two weeks.
I agree with cleaning up the header if needed; it should be easy to iterate on after https://github.com/zulip/zulip/issues/5114 is resolved.
I squashed your commits and put them at https://github.com/rishig/zulip/tree/review-4790; @timabbott, ready to merge. I didn't manually test (for newlines, etc), but given the large number of changes in the pipeline I imagine much of the text is about to be rewritten anyway.

@rishig I neglected to merge these when you posted that 1.5 weeks ago; do you think it makes sense to combine this with the #5114 at this point?

yeah, I'll rebase this and repost.

Rebased onto #5335. Closing.

This was just merged, thanks @RameshAditya for your work on this!!

I learnt a lot, doing this and I intend to try my hand on more bugs. The pleasure is mine. :)

@RameshAditya awesome!  And congrats on your first code contribution to Zulip :)


⚠ Secret Website 3 has degraded performance

In e5bfe24, Secret Website 3 ($SECRET_WEBSITE_3) experienced degraded performance:

HTTP code: 200
Response time: 3011 ms

Resolved: Secret Website 3 performance has improved in cd826f2.


no data available while have position

i have postion on Arbitrum

then try on API . seem response with no position

Hi @krissnawat
Thank you for bringing this to our attention. Can I confirm if your position is in the circle native USDC market?
Currently, the compound-kit's USDC market still points to the bridged usdc.e market. We plan to update it soom to support both markets simultaneously.

thank for update
It’s circle native

@krissnawat
The compound-kit has been updated. You can retrieve the latest supported markets from https://compound-kit-api.protocolink.com/v1/markets.

In the arbitrum market, the id usdc stands for native circle USDC.
In the arbitrum market, the id usdc.e stands for bridged USDC.

@krissnawat The compound-kit has been updated. You can retrieve the latest supported markets from https://compound-kit-api.protocolink.com/v1/markets.

In the arbitrum market, the id usdc stands for native circle USDC.
In the arbitrum market, the id usdc.e stands for bridged USDC.

thankyou for fast update


Fixing intermittent Storage integration test failures

What's the long-term plan for this? If we know API sometimes return invalid-argument, shouldn't we take catch it and return false?

We should probably file an issue with the API team; I feel like the service should throw the same error given the same inputs. I'm not actually sure what the correct behavior is, so I don't want to make a change to the client yet.

I have filed an internal bug. @neozwu could you take a look?


JUnit output formatter - unmatched skipped violations

Closes #568
Adding this (sample) output at the beginning of the file.
<?xml version="1.0" encoding="UTF-8"?>
<testsuites>
  <testsuite id="0" package="" name="Unmatched skipped violations" hostname="localhost" tests="0" failures="0" skipped="0" errors="4" time="0">
    <failure message="Skipped violation "TrainingCompass\Saas\Dashboards\Controls\Dashboard\LayoutControl" for "TrainingCompass\Saas\Branding\Personal\DashboardPresenter" was not matched." type="WARNING"/>
    <failure message="Skipped violation "TrainingCompass\Saas\Dashboards\Controls\Dashboard\LayoutControlFactory" for "TrainingCompass\Saas\Branding\Personal\DashboardPresenter" was not matched." type="WARNING"/>
    <failure message="Skipped violation "TrainingCompass\Saas\Dashboards\Controls\DashboardLayoutConfig\LayoutConfigControl" for "TrainingCompass\Saas\Branding\Personal\ProfilePresenter" was not matched." type="WARNING"/>
    <failure message="Skipped violation "TrainingCompass\Saas\Dashboards\Controls\DashboardLayoutConfig\LayoutConfigControlFactory" for "TrainingCompass\Saas\Branding\Personal\ProfilePresenter" was not matched." type="WARNING"/>
  </testsuite>

Looks good. Can you please add or adapt one of the existing test cases for the formatter as well?

@dbrumann will do. Just waiting for @Khartir to confirm this is the format he was looking for since he opened the issue and I don't use JUnit myself. Once he says the output solves the issue, I will add tests.

I don't know the specification that well myself, which is why I didn't submit a PR for this, but I think if the testsuite declares this as errors, it should contain error-nodes, not failure-nodes:
<?xml version="1.0" encoding="UTF-8"?>
<testsuites>
  <testsuite id="0" package="" name="Unmatched skipped violations" hostname="localhost" tests="0" failures="0" skipped="0" errors="4" time="0">
    <error message="Skipped violation "TrainingCompass\Saas\Dashboards\Controls\Dashboard\LayoutControl" for "TrainingCompass\Saas\Branding\Personal\DashboardPresenter" was not matched." type="WARNING"/>
    <error message="Skipped violation "TrainingCompass\Saas\Dashboards\Controls\Dashboard\LayoutControlFactory" for "TrainingCompass\Saas\Branding\Personal\DashboardPresenter" was not matched." type="WARNING"/>
    <error message="Skipped violation "TrainingCompass\Saas\Dashboards\Controls\DashboardLayoutConfig\LayoutConfigControl" for "TrainingCompass\Saas\Branding\Personal\ProfilePresenter" was not matched." type="WARNING"/>
    <error message="Skipped violation "TrainingCompass\Saas\Dashboards\Controls\DashboardLayoutConfig\LayoutConfigControlFactory" for "TrainingCompass\Saas\Branding\Personal\ProfilePresenter" was not matched." type="WARNING"/>
  </testsuite>

Apart from that, this is exactly what I had in mind, thank you.

I checked the official docs and you are right. You have it. Along with a test. :smile:


Allow generic parameters to propagate on returned type references.

Search Terms
Generic type parameters are lost upon return from a function.
Suggestion
In the case of the following:
class Test<Tx> { x: Tx; }
function Func<TClass>(type: TClass) { return type; }
var t = Func(Test);
var o = new t();

(https://goo.gl/YefQ6z)
I would have expected that the type of t is typeof Test<Tx>. Func() might be considered as a type of decorator of sorts, but it is a lot more complicated in my actual code, but this gets the idea across.
Use Cases
I'm creating a factory type system that is wrapped by a function (i.e. export Type = CreateFactory(base, class SomeType<T>(){...})).  It uses type inference to figure out types and adds other types to the return type before exporting a property. Similar to:
namespace A {
  interface IFactory {
    'new'?(...args:any[]): any;
    'init'?(...args:any[]): any;
  }
  function CreateFactory<TClass extends new () => any, TFactory extends IFactory>(getClass:()=>[TClass, TFactory])
    : TClass & { originalType: TClass } & TFactory {
    var type = getClass();
    type['originalType'] = type;
    return <any>type;
  }

  export var Test = CreateFactory(() => {
    class Test<Tx> { x: Tx; }
    var factory = {
      new: function <Tx>(): Test<Tx> { return null; },
      init: function <Tx>(o: Test<Tx>) { return o; }
    }
    return [Test, factory];
  });
}

var o = A.Test.new<number>();

(https://goo.gl/fMtCPQ)
This works OK, and there is no issue with non-generic types.  The problem is now with A.Test.originalType.  I have no way to access the generic type signature anymore.  Instead, I simply get typeof Test. I recommend the generic type signatures propagate properly. It may even help some people catch more bugs. This should allow me to do this:
    type TestType = typeof Test.originalType; // (currently this is only 'typeof Test' and the following fails)
    export interface ITest<Tx> extends InstanceType<TestType<Tx>> { }

Note: My actual code is a bit more complicated and allows inheritance chaining of the factories, which is why this pattern was the best suited for it.
Checklist
My suggestion meets these guidelines:
[x] This wouldn't be a breaking change in existing TypeScript / JavaScript code
[x] This wouldn't change the runtime behavior of existing JavaScript code
[x] This could be implemented without emitting different JS based on the types of the expressions
[x] This isn't a runtime feature (e.g. new expression-level syntax)

The syntax typeof XXX  only works when XXX is a value, not a type.  When you declare a class in TypeScript, it introduces both a value and a type with the same name.  The value refers to the class constructor object (visible at runtime), and the type refers to the type of an instance of the class (erased at runtime).  And despite having the same name, the type of the constructor is not the type of the instance.   In your case, you have the type Test<T>, which is structurally equivalent to {x: T}, and the value Test, whose type, typeof Test, is structurally equivalent to something like new <T>() => Test<T>.  Maybe you know this, but having two things with the same name can be confusing, so I'm trying to spell it out.
So typeof Test<T> doesn't work, since typeof Test<T> can only refer to some value named Test<T>, and values are not generic (there is no runtime object named Test<T>).   Are you asking for TypeScript to introduce generic values as in #17574?   I'm not sure why you think you need that, since typeof Test is essentially the generic thing you want.  You can do var o = new t<number>(); and it works, right?
What am I missing here?

That was a simple example.  The second code much better explains it.  In essence I'm looking for this:
interface ITestNumber extends t<number> { }
Which of course does not work.  As you said, if I can do new t<number> I don't understand why I cannot also create an interface from it, since obviously the type system understands newing it, so it much be there in the type system still.  In the second code I posted there is no access to the original class type.  this is a factory pattern, so not sure why you are focusing on using the 'new' operator.

JCalz, I hoped it was clear I know that by now.  Of course you can't that's the point.  ;)  I was only trying to give an idea of what I was thinking, that is all.

you can't pull the generic relationship between the constructor and the instance type out of the constructor type

Correct, that's my main point. ;)
You made a good point about being able to use a class to inherit from a generic type, in which I could create an interface type from the class type:
class T<A> extends t<A> { }
interface ITest<A> extends T<A> { }

I think it may be an acceptable workaround. 👍
Perhaps it is a request for higher order types, not sure either.  All I know is my idea is very simple to lay out.  If I had this:
class A<T> { }
Means 'A' references a constructor AND a generic class type. Then if I do this:
var B = A;
B  SHOULD act the SAME as A (type-wise).  The constructor AND the generic type should be copied over.  I don't see why this is hard to understand? ;)  It's straight forward; however, I'm not sure how straight forward it would be to implement.

If you're saying that var B = A (when A is a constructor function) should introduce a type named B, which is equivalent to the type named A, I think there will be objections.   It would definitely be a breaking change, because it would add a whole bunch of new possibly-conflicting types to existing code.
At this point I should bow out and wait to see what real TypeScript language designers/maintainers have to say, since I'm just an annoying interested bystander.

If you're saying that var B = A (when A is a constructor function) should introduce a type named B, which is equivalent to the type named A, I think there will be objections. It would definitely be a breaking change, because it would add a whole bunch of new possibly-conflicting types to existing code.

We've actually been considering binding var a = b like an alias (meaning like import a = b) in JS for a bit now, as it turns out people enjoy writing things like
const MyClass = module.exports = class Foo {}

and then referring to MyClass all over. We'd have to do a lot of compat testing and thinking before we decided to do it in TS, though. I think that discussion is mostly unrelated to the OP's request though - it looks like he wants a partially inferred type - something where we've done an inference pass up to a point, but then left some type parameters bare so they can be inferred in another call.

We currently have no way of letting generic parameters "escape" from an instantiation. the system assume that all parameters will be accounted for. i

Seems like not just generic type is lost but constructor too
export function Wrapper() {
    return class {
        title!: string;
  };
}

function bindProperty<Prop extends ReturnType<typeof Wrapper>>(Prop: Prop) {
  class SyncedProp extends Prop {} // <-- why the Prop is NOT a constructor type?
  // Type 'Prop' is not a constructor function type.ts(2507)
}


src/renderer/*  -> HMR/Refresh

I was expecting that as soon as i change something the view should update.
in the Iogs can see that snowpack is doing its thing as expected, but i have to manually reload (Ctrl+r) to see the changes.
Am i missing something essential or misinterpreted how it should behave?

@qwertasyx you're probably missing something. Snowpacks HMR in electron should work just like in the browser. You can open the localhost URL and debug it in the browser. The basic examples this project provides seem to be working.

Thanks for your quick response :). I tried with the svelte and the hello world example.
Somehow import.meta.hot is undefined.  As far as i understand snowpack (just getting started) this gets ommited when bundling for production. The NODE_ENV is set to 'development' so that should be ok.
Maybe you have an idea where i can look into a bit more to  figure that out.

after setting devOptions: {     hmr: true   } it works like expected.
In snowpack dev() its set implicit so i´m not sure where it gets lost along the way :D

Thanks for the clarification, it seems that the Snowpack's CLI and JavaScript API works a bit differently. Seems like an easy fix.

@qwertasyx could you provide an example of how the hmr becomes undefined? I checked the example and the hrm is present, unless I explicitly define hmr to false. I though there might be an issue with deep merging of the snowpack config if you'd change any other devOptions` field, but it doesn't seem to be the case.

@karolis-sh I just put a console.log before the import.meta.hot in the index.js. But i didn´t really figure out why it was undefined. I will take another look in the coming days, maybe i will find smt that helps.
I assume since no one else brought this up its probably related to my setup specifically somehow, so i tried the plane examples on a W10 machine and an ubuntu system, with the same result. I just cloned the repo and did 'npm i' in the according example. Did i forget something obvious? (node14.15.0)

Ah, I can reproduce with your described steps on a mac also. By installing from the root of the project with yarn, or in another separate project the import.meta.hot seems defined. Yeah, this is a weird one.


Add local unix socket support

Local unix socket support was added in HyperHDR in https://github.com/awawa-dev/HyperHDR/commit/1100093068196a53eff5f856f0eaaf8e43ca229f
Local unix sockets are automatically used when the hostname is set to "/tmp/hyperhdr-domain" which is hardcoded in HyperHDR. On my TV local sockets are around 20-30% faster.

Hey there,
thanks again for contribution!
We have mergend unicapture branch to main. Could you please update your PR to also merge it into main?
Thanks!

Anything missing on this PR?

Testing it currently

Yup, works fine. Please cleanly rebase against main and correct the linting, then we should be good to go. cheers

Thanks!


Rendering Problems

These errors appears on layout preview/design view, is there a way to fix this?
Couldn't resolve resource @style/Widget.MaterialProgressBar.ProgressBar.Small
"horizontal" in attribute "mpb_progressStyle" is not a valid integer

Reproduced.
Personally I don't know why, may be a regression in Android Studio that styles from dependent libraries cannot be loaded?

i used 1 instead horizontal
in my xml
<me.zhanghai.android.materialprogressbar.MaterialProgressBar
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:mpb_useIntrinsicPadding="false"
            app:mpb_progressStyle="1"
            android:id="@+id/loadMaterialPBar"
            android:visibility="invisible"
<EMAIL_ADDRESS>android:layout_marginBottom="1dp"
            android:minHeight="3dp" />

It seems to be working just fine with Android Studio 2.3.1. @DreaminginCodeZH can you confirm this?

Yes I see no error now -- it is blank, but that's another enchancement to do. Thanks @mihudevcom!


Cannot re-relate with mysql-k8s (8.0/stable)

Bug Description
Hi,
I am experiencing an issues on initial relation between mysql-k8s (revision 99, from 8.0/stable):
Issue 1: Initial bootstrap stuck IF relation requested immediately:
juju deploy mysql-k8s --trust
juju deploy wordpress-k8s
juju relate mysql-k8s wordpress-k8s

Actual results:
Unit               Workload  Agent  Address     Ports  Message
mysql-k8s/0*       active    idle   <IP_ADDRESS>         Primary
mysql-test-app/0*  waiting   idle   <IP_ADDRESS>

Error log is empty and I see properly populated databag by mysql-k8s:
  - relation-id: 3
    endpoint: database
    related-endpoint: database
    application-data:
      data: '{"database": "wordpress-k8s"}'
      database: wordpress-k8s
      endpoints: mysql-k8s-primary.test7.svc.cluster.local:3306
      password: Cwck7x8MuBpZPPWZh1fB6icW
      read-only-endpoints: mysql-k8s-replicas.test7.svc.cluster.local:3306
      username: relation-3
      version: 8.0.34-0ubuntu<IP_ADDRESS>

NOTE: the is no such issue1 IF relation between MySQL and Wordpress established after the full MySQL deployment:
juju deploy mysql-k8s --trust
juju wait-for application mysql-k8s
juju deploy wordpress-k8s
juju relate mysql-k8s wordpress-k8s

Any ideas what can be missing here?
Issue 2: It is not possible to remove relation if it stuck on issue1 described above:
juju remove-relation mysql-k8s wordpress-k8s

juju debug-log --tail
ubuntu@taurus-dev:~$ unit-mysql-k8s-0: 14:28:52 DEBUG unit.mysql-k8s/0.juju-log database:3: ops 2.6.0 up and running.
unit-mysql-k8s-0: 14:28:52 DEBUG unit.mysql-k8s/0.juju-log database:3: Emitting Juju event database_relation_departed.
unit-mysql-k8s-0: 14:28:52 DEBUG unit.mysql-k8s/0.juju-log database:3: Retrieved secret root-password for app
unit-mysql-k8s-0: 14:28:52 DEBUG unit.mysql-k8s/0.juju-log database:3: Retrieved secret server-config-password for app
unit-mysql-k8s-0: 14:28:52 DEBUG unit.mysql-k8s/0.juju-log database:3: Retrieved secret cluster-admin-password for app
unit-mysql-k8s-0: 14:28:52 DEBUG unit.mysql-k8s/0.juju-log database:3: Retrieved secret monitoring-password for app
unit-mysql-k8s-0: 14:28:52 DEBUG unit.mysql-k8s/0.juju-log database:3: Retrieved secret backups-password for app
unit-mysql-k8s-0: 14:28:53 INFO juju.worker.uniter.operation ran "database-relation-departed" hook (via hook dispatching script: dispatch)
unit-mysql-k8s-0: 14:28:53 DEBUG unit.mysql-k8s/0.juju-log database:3: ops 2.6.0 up and running.
unit-mysql-k8s-0: 14:28:53 DEBUG unit.mysql-k8s/0.juju-log database:3: Emitting Juju event database_relation_broken.
unit-mysql-k8s-0: 14:28:53 INFO unit.mysql-k8s/0.juju-log database:3: Kubernetes service mysql-k8s-primary deleted
unit-mysql-k8s-0: 14:28:53 INFO unit.mysql-k8s/0.juju-log database:3: Kubernetes service mysql-k8s-replicas deleted
unit-mysql-k8s-0: 14:28:53 DEBUG unit.mysql-k8s/0.juju-log database:3: Retrieved secret root-password for app
unit-mysql-k8s-0: 14:28:53 DEBUG unit.mysql-k8s/0.juju-log database:3: Retrieved secret server-config-password for app
unit-mysql-k8s-0: 14:28:53 DEBUG unit.mysql-k8s/0.juju-log database:3: Retrieved secret cluster-admin-password for app
unit-mysql-k8s-0: 14:28:53 DEBUG unit.mysql-k8s/0.juju-log database:3: Retrieved secret monitoring-password for app
unit-mysql-k8s-0: 14:28:53 DEBUG unit.mysql-k8s/0.juju-log database:3: Retrieved secret backups-password for app
unit-mysql-k8s-0: 14:28:53 INFO unit.mysql-k8s/0.juju-log database:3: Removed user(s) for relation 3
unit-mysql-k8s-0: 14:28:54 INFO juju.worker.uniter.operation ran "database-relation-broken" hook (via hook dispatching script: dispatch)

And relation stuck here in dying state:
> juju relate mysql-k8s wordpress-k8s
ERROR cannot add relation "wordpress-k8s:database mysql-k8s:database"
relation wordpress-k8s:database mysql-k8s:database is dying, but not yet removed (already exists):

Use 'juju status --relations' to view the current relations.

Maybe it worth to update data-platform-libs? Good ideas are welcome!
To Reproduce
Issue 1:
juju deploy mysql-k8s --trust
juju deploy wordpress-k8s
juju relate mysql-k8s wordpress-k8s
Issue 2:
juju remove-relation mysql-k8s wordpress-k8s
juju relate mysql-k8s wordpress-k8s
Environment
juju             3.1.6-f6a66aa  24582  3.1/edge            canonical✓  -
microk8s         v1.28.0        5802   1.28-strict/stable  canonical✓  -
ubuntu@taurus-dev:~$ juju status --relations
Model  Controller  Cloud/Region        Version  SLA          Timestamp
test8  k8s6        microk8s/localhost  3.1.6    unsupported  14:32:35+02:00

App            Version                  Status   Scale  Charm          Channel     Rev  Address         Exposed  Message
mysql-k8s      8.0.34-0ubuntu<IP_ADDRESS>  active       1  mysql-k8s      8.0/stable   99  <IP_ADDRESS>  no
wordpress-k8s  5.9.3                    waiting      1  wordpress-k8s  stable       42  <IP_ADDRESS>  no       installing agent

Unit              Workload     Agent  Address      Ports  Message
mysql-k8s/0*      active       idle   <IP_ADDRESS>         Primary
wordpress-k8s/0*  maintenance  idle   <IP_ADDRESS>         Starting apache-prometheus-exporter container

Integration provider             Requirer                         Interface          Type     Message
mysql-k8s:database               wordpress-k8s:database           mysql_client       regular
mysql-k8s:database-peers         mysql-k8s:database-peers         mysql_peers        peer
mysql-k8s:upgrade                mysql-k8s:upgrade                upgrade            peer
wordpress-k8s:wordpress-replica  wordpress-k8s:wordpress-replica  wordpress-replica  peer
ubuntu@taurus-dev:~$

Relevant log output
None

Additional context
No response

I haven't been able to reproduce this. I just ran:
juju deploy mysql-k8s --trust
juju deploy wordpress-k8s
juju relate mysql-k8s wordpress-k8s

And it worked fine for me. Could you include the output of microk8s kubectl get pods -n $name-of-your-model? I suspect the wordpress pod was still downloading the images since it was in "waiting" status.

With the latest wordpress-k8s revision 50, it stucks on installing charm software for:
juju deploy mysql-k8s --trust
juju deploy wordpress-k8s
juju relate mysql-k8s wordpress-k8s

juju status:
Model       Controller  Cloud/Region        Version  SLA          Timestamp
wordpress2  microk8s    microk8s/localhost  3.1.6    unsupported  02:01:06+02:00

App            Version                  Status   Scale  Charm          Channel     Rev  Address         Exposed  Message
mysql-k8s      8.0.34-0ubuntu<IP_ADDRESS>  active       1  mysql-k8s      8.0/stable   99  <IP_ADDRESS>  no
wordpress-k8s  5.9.3                    waiting      1  wordpress-k8s  stable       50  <IP_ADDRESS>  no       installing agent

Unit              Workload     Agent      Address     Ports  Message
mysql-k8s/0*      active       idle       <IP_ADDRESS>          Primary
wordpress-k8s/0*  maintenance  executing  <IP_ADDRESS>         installing charm software

The pods list (one is missing):
microk8s kubectl get pods -n wordpress2
NAME                             READY   STATUS    RESTARTS   AGE
modeloperator-7dbc85757c-qqt8g   1/1     Running   0          3m19s
mysql-k8s-0                      2/2     Running   0          3m10s
wordpress-k8s-0                  2/3     Running   0          3m

but from here all resources are locally available and issue in a helthcheck, IMHO:
Events:
  Type     Reason     Age                   From               Message
  ----     ------     ----                  ----               -------
  Normal   Scheduled  2m50s                 default-scheduler  Successfully assigned wordpress2/wordpress-k8s-0 to juju31
  Normal   Pulled     2m50s                 kubelet            Container image "jujusolutions/jujud-operator:3.1.6" already present on machine
  Normal   Created    2m50s                 kubelet            Created container charm-init
  Normal   Started    2m50s                 kubelet            Started container charm-init
  Normal   Pulled     2m50s                 kubelet            Container image "jujusolutions/charm-base:ubuntu-22.04" already present on machine
  Normal   Created    2m50s                 kubelet            Created container charm
  Normal   Started    2m49s                 kubelet            Started container charm
  Normal   Pulled     2m49s                 kubelet            Container image "registry.jujucharms.com/charm/600jll14kzaovquhnzyajwwvvcp8a6s1a2tgb/apache-prometheus-exporter-image@sha256:149dd4ba47f374919b630d4316b19f0822b7ef90eac6ca6f5f539f13f5579655" already present on machine
  Normal   Created    2m49s                 kubelet            Created container apache-prometheus-exporter
  Normal   Started    2m49s                 kubelet            Started container apache-prometheus-exporter
  Normal   Pulled     2m49s                 kubelet            Container image "registry.jujucharms.com/charm/600jll14kzaovquhnzyajwwvvcp8a6s1a2tgb/wordpress-image@sha256:71f96308ce89ddb3715feb5e1e66aa078c5cee75649f52df6621e53ff8320f0d" already present on machine
  Normal   Created    2m49s                 kubelet            Created container wordpress
  Normal   Started    2m49s                 kubelet            Started container wordpress
  Warning  Unhealthy  80s (x13 over 2m15s)  kubelet            Readiness probe failed: HTTP probe failed with statuscode: 502

The full output: https://pastebin.canonical.com/p/4RZ7dw9pbd/ (see the line 77).
How to trace from here?

@yanksyoon Can you have a look if this is still an issue, please?

Just tested it working, closing :)


add partial callback

I merged it, but something must have gone slightly wrong, because GitHub isn't marking this as merged.


TypeError: Assignment to constant variable at FanAccessory.getServices

After updating to<EMAIL_ADDRESS>homebridge crashed with the enclosed error.
Part of my config.json is this. Any idea? I didn't change anything to the previous version of the plugin.
{
                                 "name": "GreenFan",
                                 "type": "fan",
                                 "hideSwingMode":true,
                                 "hideV2Fan":true,
                                 "data": {
                                 "on":"26004800000128921411141114351510141113111511133614111435153514351535143613361436143613111510141114351510141114111411143514361436131115351435153415000d05",
                                 "off":"26004800000128921411141114351510141113111511133614111435153514351535143613361436143613111510141114351510141114111411143514361436131115351435153415000d05",
                                 "fanSpeed10": "26004800000127931212141212371312141112121511123614121237133613371337133613371336141212371312131212371312141113121435141113361436131213371237133615000d05",
                                 "fanSpeed20": "26004800000127931212141212371312141112121511123614121237133613371337133613371336141212371312131212371312141113121435141113361436131213371237133615000d05",
                                 "fanSpeed30": "26004800000127931212141212371312141112121511123614121237133613371337133613371336141212371312131212371312141113121435141113361436131213371237133615000d05",
                                 "fanSpeed40": "26004800000127931212141212371312141112121511123614121237133613371337133613371336141212371312131212371312141113121435141113361436131213371237133615000d05",
                                 "fanSpeed50": "26004800000127931212141212371312141112121511123614121237133613371337133613371336141212371312131212371312141113121435141113361436131213371237133615000d05",
                                 "fanSpeed60": "26004800000129911411131115351411131214111212133713111436143614351535143513371337123713371312141112371312141014121411121215351237131213361535153413000d05",
                                 "fanSpeed70": "26004800000129911411131115351411131214111212133713111436143614351535143513371337123713371312141112371312141014121411121215351237131213361535153413000d05",
                                 "fanSpeed80": "26004800000129911411131115351411131214111212133713111436143614351535143513371337123713371312141112371312141014121411121215351237131213361535153413000d05",
                                 "fanSpeed90": "26004800000129911411131115351411131214111212133713111436143614351535143513371337123713371312141112371312141014121411121215351237131213361535153413000d05",
                                 "fanSpeed100": "26004800000129911411131115351411131214111212133713111436143614351535143513371337123713371312141112371312141014121411121215351237131213361535153413000d05"
                                 }
                                 }]},

Feb 09 11:57:53 raspberrypi homebridge[7665]: [2018-2-9 11:57:53] [Broadlink RM] Initializing BroadlinkRM platform...
Feb 09 11:57:53 raspberrypi homebridge[7665]: [2018-2-9 11:57:53] [Broadlink RM] The "switch-multi" type requires the config value for "data" to be an array of hex codes.
Feb 09 11:57:53 raspberrypi homebridge[7665]: [2018-2-9 11:57:53] [Broadlink RM] The "switch-multi" type requires the config value for "data" to be an array of hex codes.
Feb 09 11:57:53 raspberrypi homebridge[7665]: [2018-2-9 11:57:53] [Broadlink RM] Initializing platform accessory 'Learn'...
Feb 09 11:57:53 raspberrypi homebridge[7665]: [2018-2-9 11:57:53] [Broadlink RM] Initializing platform accessory 'Scan Frequency'...
Feb 09 11:57:53 raspberrypi homebridge[7665]: [2018-2-9 11:57:53] [Broadlink RM] Initializing platform accessory 'Lautstärke hoch'...
Feb 09 11:57:53 raspberrypi homebridge[7665]: [2018-2-9 11:57:53] [Broadlink RM] Initializing platform accessory 'Lautstärke runter'...
Feb 09 11:57:53 raspberrypi homebridge[7665]: [2018-2-9 11:57:53] [Broadlink RM] Initializing platform accessory 'Sendungsinfo'...
Feb 09 11:57:53 raspberrypi homebridge[7665]: [2018-2-9 11:57:53] [Broadlink RM] Initializing platform accessory 'Zurück zum laufenden Programm'...
Feb 09 11:57:53 raspberrypi homebridge[7665]: [2018-2-9 11:57:53] [Broadlink RM] Initializing platform accessory 'Sendung aufzeichnen'...
Feb 09 11:57:53 raspberrypi homebridge[7665]: [2018-2-9 11:57:53] [Broadlink RM] Initializing platform accessory 'Lautstärke stumm'...
Feb 09 11:57:53 raspberrypi homebridge[7665]: [2018-2-9 11:57:53] [Broadlink RM] Initializing platform accessory 'Fersehguide'...
Feb 09 11:57:53 raspberrypi homebridge[7665]: [2018-2-9 11:57:53] [Broadlink RM] Initializing platform accessory '3D'...
Feb 09 11:57:53 raspberrypi homebridge[7665]: [2018-2-9 11:57:53] [Broadlink RM] Initializing platform accessory 'Display'...
Feb 09 11:57:53 raspberrypi homebridge[7665]: [2018-2-9 11:57:53] [Broadlink RM] Initializing platform accessory 'GreenFan'...
Feb 09 11:57:53 raspberrypi homebridge[7665]: /usr/local/lib/node_modules/homebridge-broadlink-rm/accessories/fan.js:46
Feb 09 11:57:53 raspberrypi homebridge[7665]: if (showV2Fan !== false) showV2Fan = true
Feb 09 11:57:53 raspberrypi homebridge[7665]: ^
Feb 09 11:57:53 raspberrypi homebridge[7665]: TypeError: Assignment to constant variable.
Feb 09 11:57:53 raspberrypi homebridge[7665]: at FanAccessory.getServices (/usr/local/lib/node_modules/homebridge-broadlink-rm/accessories/fan.js:46:40)
Feb 09 11:57:53 raspberrypi homebridge[7665]: at Server._createAccessory (/usr/local/lib/node_modules/homebridge/lib/server.js:388:36)
Feb 09 11:57:53 raspberrypi homebridge[7665]: at Server.<anonymous> (/usr/local/lib/node_modules/homebridge/lib/server.js:374:32)
Feb 09 11:57:53 raspberrypi homebridge[7665]: at /usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/util/once.js:16:19
Feb 09 11:57:53 raspberrypi homebridge[7665]: at BroadlinkRMPlatform.accessories (/usr/local/lib/node_modules/homebridge-broadlink-rm/node_modules/homebridge-platform-helper/platform.js:40:5)
Feb 09 11:57:53 raspberrypi homebridge[7665]: at Server._loadPlatformAccessories (/usr/local/lib/node_modules/homebridge/lib/server.js:364:20)
Feb 09 11:57:53 raspberrypi homebridge[7665]: at Server._loadPlatforms (/usr/local/lib/node_modules/homebridge/lib/server.js:308:16)
Feb 09 11:57:53 raspberrypi homebridge[7665]: at Server.run (/usr/local/lib/node_modules/homebridge/lib/server.js:85:36)
Feb 09 11:57:53 raspberrypi homebridge[7665]: at module.exports (/usr/local/lib/node_modules/homebridge/lib/cli.js:40:10)
Feb 09 11:57:53 raspberrypi homebridge[7665]: at Object.<anonymous> (/usr/local/lib/node_modules/homebridge/bin/homebridge:17:22)
Feb 09 11:57:53 raspberrypi homebridge[7665]: at Module._compile (module.js:643:30)
Feb 09 11:57:53 raspberrypi homebridge[7665]: at Object.Module._extensions..js (module.js:654:10)
Feb 09 11:57:53 raspberrypi homebridge[7665]: at Module.load (module.js:556:32)
Feb 09 11:57:53 raspberrypi homebridge[7665]: at tryModuleLoad (module.js:499:12)
Feb 09 11:57:53 raspberrypi homebridge[7665]: at Function.Module._load (module.js:491:3)
Feb 09 11:57:53 raspberrypi homebridge[7665]: at Function.Module.runMain (module.js:684:10)
Feb 09 11:57:53 raspberrypi homebridge[7665]: at startup (bootstrap_node.js:187:16)
Feb 09 11:57:53 raspberrypi homebridge[7665]: at bootstrap_node.js:608:3
Feb 09 11:57:53 raspberrypi systemd[1]: homebridge.service: main process exited, code=exited, status=1/FAILURE
Feb 09 11:57:53 raspberrypi systemd[1]: Unit homebridge.service entered failed state.
Feb 09 11:58:01 raspberrypi systemd[1]: Stopping Node.js HomeKit Server...
Feb 09 11:58:01 raspberrypi systemd[1]: Stopped Node.js HomeKit Server.

Sorry - fixed in 2.6.3

Thanks. And first, I appreciate your work and sharing it with us. This is not for granted. Thanks for investing your time. 👍🏻
When I reinstall I still get 2.6.2 and also with sudo npm install -g<EMAIL_ADDRESS>


Is it ok to open PR adding Spanish/es-ES locale?

I've it working in local, would love to contribute but not sure if welcome or any CONTRIBUTING.md guidelines I should follow.
Thhanks for this awesome project, can't wait for v1.x further development!

OK, you can try copy https://github.com/SolidZORO/leaa/tree/master/packages/leaa-dashboard/src/locales/en-US and translate, then give me the PR and leave the rest to me.

Hey sorry, I started a new job right after wanting to do this, and haven't been able to get much free time for other stuff, might reopen as PR later! Keep up the great project!


Failing to install on TS-431P

G'day Ivo!
Firstly, thanks for building this, it is exactly what I'm after...except I'm having some trouble. I built the package on wsl2/ubuntu with docker. Seems to work, as it spits out the files I'd expect:
-rwxrwxrwx 1 chris chris 12095490 Aug 13 20:20 Tailscale_1.0.3_arm_64.qpkg
-rwxrwxrwx 1 chris chris       71 Aug 13 20:20 Tailscale_1.0.3_arm_64.qpkg.md5
-rwxrwxrwx 1 chris chris 12557960 Aug 13 20:20 Tailscale_1.0.3_x86.qpkg
-rwxrwxrwx 1 chris chris       68 Aug 13 20:20 Tailscale_1.0.3_x86.qpkg.md5
-rwxrwxrwx 1 chris chris 13085648 Aug 13 20:20 Tailscale_1.0.3_x86_64.qpkg
-rwxrwxrwx 1 chris chris       71 Aug 13 20:20 Tailscale_1.0.3_x86_64.qpkg.md5

The challenge I'm having is that when I try to install it on my TS-431P (arm64, x86, or x64 package), I get the following error:
[App Center] Failed to install Tailscale1.0.3. The installation package is incompatible. Use the compatible package.

Looking at the Makefile, I suspect I should be seeing an arm32 package which is what I'm guessing my NAS wants, given the below.
# uname -a
Linux qnap 4.2.8 #2 SMP Wed Jul 29 05:53:49 CST 2020 armv7l unknown

Do I need to do something different to build this?
Cheers,
Chris

Okay, progress! I had to build the arm-x41 qpkg. Will submit a PR 👍

Hi Chris,
Thanks for testing it out and submitting a pull request! Greatly appreciate your contribution!
Best,
Ivo


python312Packages.plotnine: 0.14.1 -> 0.14.2

Things done
Changelog: https://github.com/has2k1/plotnine/releases/tag/v0.14.2

Built on platform(s)

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

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] 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
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
25.05 Release Notes (or backporting 24.11 and 25.05 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

[x] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review pr 358013

x86_64-linux

:white_check_mark: 10 packages built:

python311Packages.bsuite
python311Packages.bsuite.dist
python311Packages.plotnine
python311Packages.plotnine.dist
python311Packages.shimmy
python311Packages.shimmy.dist
python312Packages.bsuite
python312Packages.bsuite.dist
python312Packages.plotnine
python312Packages.plotnine.dist

aarch64-linux

:white_check_mark: 10 packages built:

python311Packages.bsuite
python311Packages.bsuite.dist
python311Packages.plotnine
python311Packages.plotnine.dist
python311Packages.shimmy
python311Packages.shimmy.dist
python312Packages.bsuite
python312Packages.bsuite.dist
python312Packages.plotnine
python312Packages.plotnine.dist

x86_64-darwin

:fast_forward: 4 packages marked as broken and skipped:

python311Packages.shimmy
python311Packages.shimmy.dist
python312Packages.shimmy
python312Packages.shimmy.dist

:white_check_mark: 8 packages built:

python311Packages.bsuite
python311Packages.bsuite.dist
python311Packages.plotnine
python311Packages.plotnine.dist
python312Packages.bsuite
python312Packages.bsuite.dist
python312Packages.plotnine
python312Packages.plotnine.dist

aarch64-darwin

:fast_forward: 4 packages marked as broken and skipped:

python311Packages.shimmy
python311Packages.shimmy.dist
python312Packages.shimmy
python312Packages.shimmy.dist

:white_check_mark: 8 packages built:

python311Packages.bsuite
python311Packages.bsuite.dist
python311Packages.plotnine
python311Packages.plotnine.dist
python312Packages.bsuite
python312Packages.bsuite.dist
python312Packages.plotnine
python312Packages.plotnine.dist


Version 1.4.9-2 tag missing

Version 1.4.9-2 is present on Maven Central, but there does not appear to be a corresponding Git tag at this time. Could this perhaps be added?

Pushed now. Forgot to git push --tags

@luben it appears the 1.4.9-4 tag is also missing :)

@Stephan202 , just pushed it - I frequently forget to git push --tags. Thanks for reminding me.

1.5.0-2 is also missing. 🙈

Pushed it now

@luben friendly ping for tag v1.5.0-3 :)


Unnecessary render of textBox for annotation tools

There is an unnecessary rendering of other annotations textBoxes
https://user-images.githubusercontent.com/7490180/165985609-59775653-2f07-4556-b25b-c3bce80f9619.mp4

@jbocce can you see if this is still an issue?

This is no longer an issue.


No background

Levels have no background. The best way to alleviate this would probably be to pick a random background, though I don't really know how to install a background!

We partially have backgrounds now, though the really pretty ones aren't in yet.
Todos:

generate random combination of parallax backgrounds that can be alpha-blended together and give them accelerating scroll speeds
pick random background color
Maybe add additive-blend parallax backgrounds as well?


Use matrix deployment strategy

Jira ticket URL

Just add the ticket number to the end:

https://dfedigital.atlassian.net/browse/TEVA-2487
Changes in this PR:
At the moment, we are not following the concept of DRY do not repeat yourself. There is quite a bit of code duplication between Production and Staging. Since we are also going to be adding QA to the mix, it is better we tidy things up.

Review app deployed to https://teaching-vacancies-review-pr-3328.london.cloudapps.digital


Request expired issue with walletconnect

Describe the bug
**Hi @tmm @glitch-txs
I am developing a dApp using Next.js and wagmi v2. When I connect dApp to Metamask mobile wallet through walletconnect, and then perform a write method, I don't sign immediately and wait for 5-10', the dApp will throw "Request expired. Please try again". I recognize that the error is from walletconnect (https://github.com/WalletConnect/walletconnect-monorepo/issues/4181). and maybe they have fixed the error in this PR. so I wonder if it is fixed in the latest wagmi version**
Link to Minimal Reproducible Example
https://codesandbox.io/p/github/caotrongtin99/wagmi-walletconnect-reproduce/main?workspaceId=f7c409ef-eb1e-44a2-a4ba-2239de2a5015
Steps To Reproduce

Open the codesandbox, click walletconnect, open Metamask mobile then scan the QR code to login
Switch chain to Sepolia network on Metamask mobile (because i suppose to interact with sepolia smart contract)
Click Write button and wait for a while (5-10')
We will see un error like that
An unknown RPC error occurred. Request Arguments: chain: undefined (id: 11155111) from: 0x5D5701FD2564AC01FB1273158B3CD4AFD0bB7339 to: 0x7069C635d6fCd1C3D0cd9b563CDC6373e06052ee value: 0 ETH data: 0x095ea7b30000000000000000000000000ad482cc99e68da90ce994a1619fdcca0966319c0000000000000000000000000000000000000000000000000000000000000000 Details: Request expired. Please try again. Version<EMAIL_ADDRESS>
Wagmi Version
2.5.7
Viem Version
2.8.9
TypeScript Version
No response
Check existing issues

[X] I checked there isn't already an issue for the bug I encountered.

Anything else?
No response

Should be fixed via https://github.com/wevm/wagmi/commit/1c1fee6ab8f01f7734ac6ce05093fa8e388beb3e.

hi @jxom , i just upgraded to the latest version, but the error is still there, u can check on my Codesandbox . Thanks

hi team, can I reopen the issue? @jxom

Not sure if this is really a Wagmi issue. Best to get in touch where the error is occuring (WalletConnect or MetaMask).


#2411

PR Checklist

Please check all that apply to this PR using "x":

[x] I have checked that this PR is not a duplicate of an existing PR (open, closed or merged)
[x] I have checked that this PR does not introduce a breaking change
[ ] This PR introduces breaking changes and I have provided a detailed explanation below

PR Type
What kind of change does this PR introduce?

[x] Bugfix
[ ] Feature
[ ] Code style update (formatting)
[ ] Refactoring (no functional changes)
[ ] Documentation changes
[ ] Other - Please describe:

Fixes
Issue Number: #2411
What is the current behavior?
Window icon doesn't show up on some linux desktop environments.
What is the new behavior?
Window icon shows up on xfce4
Other information

@tzarebczan can you check the windows prod build with this change?
It might need file://${__dirname}/ prefixed, not sure.

Thanks for the PR @abueide!

Hey @abueide , congrats on the first PR!! Can we show you some appreciation for your contribution?
I'll give this is a shot on Windows to make sure nothing broke.

@tzarebczan I was able to build this in my windows vm without any errors, and it even showed the lbry icon on the top left in windows as well.

@abueide Thanks for running through this. I tested on Windows/Linux/Mac and it looks good. Not sure why you were seeing the electron icon before...that should only happen in Dev mode.

@tzarebczan oh I was running in dev mode


Doesn't work pagination to the users list

Doesn't work pagination to the users list, shows always all user list, could you a fix ???
version 1.2 for laravel 4.2

The default users_per page are 15. You can change that with the configuration file as the doc says.

Okay, but when clicked on the 2 page or 3 page get 1 page

Content doesn't change

You using the 1.2-dev version or a tagged one?

I'm using the 1.2 for laravel 4.2///
2016-02-05 10:17 GMT+02:00 jacopo<EMAIL_ADDRESS>
You using the 1.2-dev version or a tagged one?
—
Reply to this email directly or view it on GitHub
https://github.com/intrip/laravel-authentication-acl/issues/111#issuecomment-180246067
.

is there any workaround to this?

hi @intrip thanks for your amazing ACL package for laravel. Pagination is really very simple in laravel by just using paginate function, kindly fix it asap

example? try with the paginate function didn't work.

I'm not supporting bugfixes for the Laravel 4.2 version  sorry.


Fix AtomicWriteBuffer: Derive Copy, Clone and Debug

Signed-off-by: Jiahao XU<EMAIL_ADDRESS>

Codecov Report

Merging #14 (c561a6a) into master (30019d9) will decrease coverage by 1.16%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##           master      #14      +/-   ##
==========================================
- Coverage   71.90%   70.73%   -1.17%
==========================================
  Files           1        1
  Lines         242      246       +4
==========================================
  Hits          174      174
- Misses         68       72       +4

Impacted Files
Coverage Δ

src/lib.rs
70.73% <0.00%> (-1.17%)
:arrow_down:

Continue to review full report at Codecov.

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

Thank you!


Logs example does not fill entire window

Bug report
Problem description
Running the logs example, the custom view displaying the output does not fill the entire terminal window - there is a one character margin all the way around - blue on the top and left, black on the right and bottom,
cargo run --example logs

The example code does specify that the view should be full screen:
    siv.add_layer(BufferView::new(200, rx).full_screen());

Expected behaviour: That the grey custom view fills the entire window.
All other examples I have tried fill my terminal window, as expected.
Environment

Operating system: CentOS 7
Backend used: ncurses

ncurses version? 5.9

Current locale.

LANG=en_GB.utf8
LC_CTYPE="en_GB.utf8"
LC_NUMERIC="en_GB.utf8"
LC_TIME="en_GB.utf8"
LC_COLLATE="en_GB.utf8"
LC_MONETARY="en_GB.utf8"
LC_MESSAGES="en_GB.utf8"
LC_PAPER="en_GB.utf8"
LC_NAME="en_GB.utf8"
LC_ADDRESS="en_GB.utf8"
LC_TELEPHONE="en_GB.utf8"
LC_MEASUREMENT="en_GB.utf8"
LC_IDENTIFICATION="en_GB.utf8"
LC_ALL=

Cursive version (from crates.io, from git, ...)  0.10.0

Hi, and thanks for the report!
This is as expected: by default, every view has this border. Even if the view asks for the entire available size (which is what .full_screen() does), it gets this padding.
If you want to insert a view without this border, you can use add_fullscreen_layer method.
This was the behaviour originally intended, to reproduce the look of other tools like nmtui or menuconfig (and it's also the easier to implement).
Another option I'm starting to consider is to remove add_fullscreen_layer and let views take the entire size if needed, without visible padding.

Aha!  Ok - I have just tried with add_fullscreen_layer and it now works as expected.  So my confusion was just that it had a different appearance to the other examples.  Perhaps worth adding a comment to the example code?  Something like...
    // And set the view to read from the other end of the channel.
    // Using `add_layer` gives a border around the view.
    // Use `add_fullscreen_layer` if you do not want a border.
    siv.add_layer(BufferView::new(200, rx).full_screen());

Many thanks for a great crate!


out of memory with simple query

influxdb <IP_ADDRESS> stable on 64bit ubuntu trusty, with data coming into collectd listener.
got about 1.4G of metrics in the db.
server has 2gb ram
run query:
SELECT value FROM "cpu_value" limit 5;

and process balloons to fill all ram in about 10 seconds, then crashes with an "fatal error: runtime: out of memory" error in the logs.
If I limit the query to a single or a group of hosts, it only balloons to around 50% ram and succeeds.

Should be fixed when #5196 gets merged in. CC @benbjohnson

Same happens no matter the order. I can order by asc or desc and still oom.
Probably worth noting, does this suggest that query ram usage is unbounded? Doesn't that make it always possible that someone issuing a bad query can crash the daemon, stopping new data from being collected?

@johnl yes, query RAM usage is currently unbounded. It's on our TODO list to add memory limits per query for some release after 0.10.0.

Just having the same issue with Influxdb 0.9.6. Just wondering, this issue will be fixed in 0.9.6 version? I'll upgrade to version 0.10 soon, but if not, this ticket should be closed.

@pasancario This won't be fixed in 0.9.6.  The current release is 0.12.2 which should not have this problem.

@jwilder can you confirm that this is fixed?; we're running 0.13.0-1 and on a simple select * cpu_value query (collectd metrics) influxdb blows up w/ following error:
> select * from cpu_value
fatal error: runtime: out of memory

runtime stack:
runtime.throw(0x8439a0, 0x16)
	/usr/local/go/src/runtime/panic.go:547 +0x90
runtime.sysMap(0xc9c3a00000, 0x100000, 0x7f5d0a242c00, 0x9f56f8)
...

@tehmaspc Can you log a new issue with more details?  Please include the full stack trace, version you are using, number series, number of shards, etc..

@jwilder - sure! https://github.com/influxdata/influxdb/issues/6728