text:
False positive when charset=utf-8\x0d\x0a in content-type header

Hello CRS team,
some actions in my mobile application are triggering this rule and block request. I didnt set in APP charset=utf-8\x0d\x0a,
so maybe its coming from android.
When I exclude this rule SecRuleRemoveById 922110 then its fine, but I want to exclude it for everything
and could not figure out any exception:
I tried this:
tx.allowed_request_content_type_charset=|utf-8| |utf-8\x0d\x0a| |iso-8859-1| |iso-8859-15| |windows-1252|'
and also this:
SecRule REQUEST_HEADERS:Content-Type "text/plain; charset=utf-8\x0d\x0a" \
    "phase:1,nolog,pass,id:6,t:none,ctl:ruleRemoveById=922110"

I checked 922110 rule and it cant match above with regex defined there.
Anyone can help me to understand this issue please ?
Many thanks
ModSecurity: Warning. Matched "Operator `Rx' with parameter `^(?:(?:\*|[^\"(),\/:;<=>?![\x5c\]{}]+)\/(?:\*|[^\"(),\/:;<=>?![\x5c\]{}]+))(?:\s*+;\s*+(?:(?:charset\s*+=\s*+(?:\"?(?:iso-8859-15?|windows-1252|utf-8)\b\"?))|(?:(?:c(?:h(?:a(?:r(?:s(?:e[^t\"(),\/:;<=> (714 characters omitted)' against variable `TX:1' (Value: `text/plain; charset=utf-8\x0d\x0a' ) [file "/usr/local/coreruleset-3.3.4/rules/REQUEST-922-MULTIPART-ATTACK.conf"] [line "51"] [id "922110"] [rev ""] [msg "Illegal MIME Multipart Header content-type: charset parameter"] [data "Matched Data: text/plain; charset=utf-8\x0d\x0a found within Content-Type multipart form"] [severity "2"] [ver "OWASP_CRS/3.3.4"] [maturity "0"] [accuracy "0"] [tag "application-multi"] [tag "language-multi"] [tag "platform-multi"] [tag "attack-protocol"] [tag "OWASP_CRS"] [tag "capec/272/220"] [tag "paranoia-level/1"] [hostname "10.151.0.2"] [uri "/something.json"] [unique_id "167059009818.061175"] [ref "o0,41o14,27v974,41t:lowercaset:lowercase"],

CRS version: 3.3.4
Paranoia level setting:1
ModSecurity version: 3.0.8
Web Server and version: nginx
Operating System and version: alpine

Sadly there is no easy way to have the same allowed_request_content_type_charset in the config and in the rule. The content you see is coming from this include file.
In the end, looks like you are receiving an extra \r\n there, right?
CC @theseion

When APP calls PATCH with some data inside then its fine, but when it POST empty data to endpoint {}, this rule gets triggered and I cant figure out why there are 2 extra characters \r\n
@fzipi thanks, for a moment i was not sure if problem is text/plain what was removed in 3.3.4 from default allowed content-type or those 2 extra characters

It definitely looks like an illegal request to me. \r\n is the separation token for headers, so if it show up in the value then there are either more than there should be or they have been badly encoded. Do you have the ability to inspect the HTTP traffic, e.g. with tcpdump or Wireshark?

+1 to what @theseion said. It would be interesting to compare one of your working PATCH requests to one of the broken POST requests in Wireshark or something similar.

@theseion working on it, hopefully will get data soon

Interesting! It looks like this could be a bug in ModSecurity. ModSecurity has a dedicated multipart parser that does some magic to detect / handle parts with null termination (https://github.com/SpiderLabs/ModSecurity/blob/v3/master/src/request_body_processor/multipart.cc). I wasn't able to spot the issue while looking at the code though. @airween, this might be something for you. null is definitely allowed as content of a part as per RFC.

Thank you @theseion. Happy to hear its not our application issue. Would you have some smarter idea how to temporarily exclude it without removing whole rule with SecRuleRemoveById 922110 ?

You could write a new rule that looks for utf-8\x0d\x0a in multipart requests and then dynamically disable the rule with ctl:ruleRemoveById=922110 (https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual-(v2.x)#ctl). It's not perfect but should create a huge hole.

@theseion sorry to bother you again, but when I write down this exception it does not work:
SecRule MULTIPART_PART_HEADERS "@rx ^content-type\s*:\s*text.*" \
        "phase:1,nolog,pass,id:6,ctl:ruleRemoveById=922110"

is this what you meant ? Similar condition is used by 922110 Rule, so I dont understand why it does not match in exception

@theseion thanks a lot for a hint. I've been all the time using phase 1, but in this case it has to be phase:2 as it is already part of the body. Now exception works well :)

Great to hear.

Sorry for the late answer, I could check this issue just now.
So as I see the first comment isn't the issue, that's the correct behavior, right?
@chladic's 4th comment contains two requests, but I couldn't reproduce the request which triggers rule 922210.
Note, that in the second request's first line is a very long line, could you check that, is it correct?
Also to @chladic: could you give us a curl request with we can reproduce the problematic request?

Hi @airween. This very long line was probably caused by copy/paste issue. Didn't notice, sorry.
What we got from Postman is such a curl:
curl --location --request PATCH 'http://localhost:3000/custom' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer ' \
--data-raw '{
    "data": {
        "type": "user",
        "attributes": {
            "frequency": ""
        }
    }
}'

or
curl --location --request PATCH 'http://localhost:3000/custom' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer ' \
--form 'frequency=""'

So whenever we put in frequency some string, it will pass. When there is empty string, rule 922210 get triggered.

Thanks @chladic. You said above that the request contained null, but I don't see that in the curl you posted.

Thanks for the clarification.

@chladic, thanks for the examples.
Unfortunately I still can't reproduce the behavior what you mentioned.
See my log lines:
2022/12/20 15:57:11 [info] 59340#59340: *1 ModSecurity: Warning. Matched "Operator `ValidateByteRange' with parameter `38,44-46,48-58,61,65-90,95,97-122' against variable `REQUEST_BODY' (Value: `{"data":{"type":"user","attributes":{"frequency":}}}' ) [file "/home/airween/src/coreruleset/rules/REQUEST-920-PROTOCOL-ENFORCEMENT.conf"] [line "1540"] [id "920273"] [rev ""] [msg "Invalid character in request (outside of very strict set)"] [data "REQUEST_BODY={"data":{"type":"user","attributes":{"frequency":}}""}"] [severity "2"] [ver "OWASP_CRS/3.3.4"] [maturity "0"] [accuracy "0"] [tag "application-multi"] [tag "language-multi"] [tag "platform-multi"] [tag "attack-protocol"] [tag "OWASP_CRS"] [tag "capec/1000/210/272"] [tag "paranoia-level/4"] [hostname "::1"] [uri "/dump.php"] [unique_id "167154823110.316146"] [ref "o0,1o1,1o6,1o8,1o9,1o14,1o16,1o21,1o23,1o34,1o36,1o37,1o47,1o49,1o50,1o51,1o52,1o53,1v154,54t:urlDecodeUni"], client: ::1, server: _, request: "PATCH /dump.php HTTP/1.1", host: "localhost:8080"

2022/12/20 15:57:33 [info] 59340#59340: *2 ModSecurity: Warning. Matched "Operator `ValidateByteRange' with parameter `38,44-46,48-58,61,65-90,95,97-122' against variable `REQUEST_BODY' (Value: `{"data":{"type":"user","attributes":{"frequency":""}}}' ) [file "/home/airween/src/coreruleset/rules/REQUEST-920-PROTOCOL-ENFORCEMENT.conf"] [line "1540"] [id "920273"] [rev ""] [msg "Invalid character in request (outside of very strict set)"] [data "REQUEST_BODY={"data":{"type":"user","attributes":{"frequency":""}}""}"] [severity "2"] [ver "OWASP_CRS/3.3.4"] [maturity "0"] [accuracy "0"] [tag "application-multi"] [tag "language-multi"] [tag "platform-multi"] [tag "attack-protocol"] [tag "OWASP_CRS"] [tag "capec/1000/210/272"] [tag "paranoia-level/4"] [hostname "::1"] [uri "/dump.php"] [unique_id "167154825358.051311"] [ref "o0,1o1,1o6,1o8,1o9,1o14,1o16,1o21,1o23,1o34,1o36,1o37,1o47,1o49,1o50,1o51,1o52,1o53,1o54,1o55,1v154,56t:urlDecodeUni"], client: ::1, server: _, request: "PATCH /dump.php HTTP/1.1", host: "localhost:8080"

As you can see, I tried with two requests:
curl --location --request PATCH 'http://localhost:8080/dump.php' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer ' \
--data-raw '{"data":{"type":"user","attributes":{"frequency":}}}'

and
curl --location --request PATCH 'http://localhost:8080/dump.php' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer ' \
--data-raw '{"data":{"type":"user","attributes":{"frequency":""}}}'

The only difference is between the two requests that in the second case I sent an empty string, while in first case I sent a "none" value.
The triggered rule is the same in both cases: 920273, and the cause is a well-known libmodsecurity3 bug.
Could you attach your relevant log lines after you sent those curl requests above?

@chladic is it justified to keep this issue open? Is there anything else we can help with?

@airween Ervin sorry for late reply, Im back on this issue. When doing curl Im also not able to reproduce this. When doing it from mobile application then Im triggering rule 922110. This curl is export from postman. But whenever it is executed from mobile Dio as http client is adding there some other stuff what curl never does.
----dio-boundary-1533285540
content-disposition: form-data; name="data[attributes][frequency]"
content-type: text/plain; charset=utf-8
content-transfer-encoding: binary

Hi @mikegoatly. Please open a separate issue for your question. It would also be very helpful if you could provide log output from ModSecurity. I don't immediately see why your request would be blocked, the log would tell us that.

Hi @theseion Sorry, very happy to raise a separate issue - the reason I mentioned it here is that the ModSecurity log output is exactly same as this issue:
ModSecurity: Warning. Matched "Operator `Rx' with parameter `^(?:(?:\*|[^\"(),\/: <=>?![\x5c\]{}]+)\/(?:\*|[^\"(),\/: <=>?![\x5c\]{}]+))(?:\s*+ \s*+(?:(?:charset\s*+=\s*+(?:\"?(?:iso-8859-15?|windows-1252|utf-8)\b\"?))|(?:(?:c(?:h(?:a(?:r(?:s(?:e[^t\"(),\/: <=> (714 characters omitted)' against variable `TX:1' (Value: `text/plain charset=utf-8\x0d\x0a' ) [file "/etc/nginx/owasp-modsecurity-crs/rules/REQUEST-922-MULTIPART-ATTACK.conf"] [line "51"] [id "922110"] [rev ""] [msg "Illegal MIME Multipart Header content-type: charset parameter"] [data "Matched Data: text/plain charset=utf-8\x0d\x0a found within Content-Type multipart form"] [severity "2"] [ver "OWASP_CRS/3.3.4"] [maturity "0"] [accuracy "0"] [tag "application-multi"] [tag "language-multi"] [tag "platform-multi"] [tag "attack-protocol"] [tag "OWASP_CRS"] [tag "capec/272/220"] [tag "paranoia-level/1"] [hostname "10.244.3.23"] [uri "/REDACTED"] [unique_id "167446597097.337049"] [ref "o0,41o14,27v2197,41t:lowercaset:lowercase"]

My observation is that my and the original request that @chladic posted both contain multi-part form data in the body, and the  false positive trigger seems to be something to do with the fact that a Content-Type is defined in one of the parts.
The warning seems to suggest that the parsing of that additional content type header is not excluding the trailing CR/LF from the string it's trying to match (e.g. text/plain charset=utf-8 becomes text/plain charset=utf-8\x0d\x0a) and is as such being rejected.
That is, unless I'm misunderstanding something in the gnarly regex, which is completely possible!

I see. Let's keep it here then. You might be right that crlf is being escaped for the logs, but those bytes shouldn't even be part of the header value.
We haven't been able to recreate the issue so far, so it looks like it has to be a specific request format. Given that you are able to capture the request that triggers the issue, could you try and capture the actual bytes in the request (with tcpdump for example) and then do the same for a request that is as similar as possible but doesn't trigger? That would at least tell us which byte sequence to use to trigger the this.

Ok, this request fails whenever I throw it against an API fronted by ModSecurity:
POST https://YOURURLGOESHERE/
Content-Type: multipart/form-data; boundary="----x"

------x
Content-Type: text/plain; charset=utf-8
Content-Disposition: form-data; name=title

Test
------x
Content-Disposition: form-data; name=file; filename="New Text Document.txt"; filename*=utf-8''New%20Text%20Document.txt

Some sample text

------x--

(It's in the .http file format, so you can send it from something like VS Code with the REST Client extension.)
I've tried the request with both CRLF and LF line endings, both fail.
Stripping the ; charset=utf-8 from the header in the form data makes it work:
POST https://YOURURLGOESHERE/
Content-Type: multipart/form-data; boundary="----x"

------x
Content-Type: text/plain; charset=utf-8
Content-Disposition: form-data; name=title

Test
------x
Content-Disposition: form-data; name=file; filename="New Text Document.txt"; filename*=utf-8''New%20Text%20Document.txt

Some sample text

------x--

I've attached the failing request so you can see the exact content that's being sent from my machine: request.zip
Does that help?

That's awesome! Thanks a lot @mikegoatly. Well try to reproduce the issue on our end.

That's awesome! Thanks a lot @mikegoatly. Well try to reproduce the issue on our end.

Let me check that it soon.

@mikegoatly, I tried to reproduce your issue, also with your suggested way (REST client for VSCode - thanks for the tip), but no luck.

Ok, this request fails whenever I throw it against an API fronted by ModSecurity:

now I made a small Python script which sends the raw format of your request, you can see that here. First, please check that, and let me know if there is something not well.
Then could you try it against your application? (I see you use HTTPS, but actually in my dev env I do not have any HTTPS, and it's more convenient to try the raw requests like this without HTTPS).
This is what I see when I run the script:
SEND REQUEST:
=============

POST /dump.php HTTP/1.1
Host: localhost
Accept: */*
User-Agent: PyTcpClient v0.1
Content-Type: multipart/form-data; boundary="----x"
Content-Length: 253

------x
Content-Type: text/plain; charset=utf-8
Content-Disposition: form-data; name=title

Test
------x
Content-Disposition: form-data; name=file; filename="New Text Document.txt"; filename*=utf-8''New%20Text%20Document.txt

Some sample text

------x--

====

RECEIVED RESPONSE:
==================

HTTP/1.1 400 Bad Request
Date: Wed, 25 Jan 2023 21:24:43 GMT
Server: Apache/2.4.54 (Debian)
Content-Length: 301
Connection: close
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">

<title>400 Bad Request</title>

Bad Request

Your browser sent a request that this server could not understand.

<address>Apache/2.4.54 (Debian) Server at localhost Port 80</address>

and this is what I see in my log:
[client 127.0.0.1:34804] [client 127.0.0.1] ModSecurity: Multipart parsing error: Multipart: Invalid Content-Disposition header (-11): form-data; name=file; filename="New Text Document.txt"; filename*=utf-8''New%20Text%20Document.txt. [hostname "localhost"] [uri "/dump.php"] [unique_id "Y9GeG__D42q-U0HlyXxqpAAAAAA"]
[client 127.0.0.1:34804] [client 127.0.0.1] ModSecurity: Access denied with code 400 (phase 2). Match of "eq 0" against "REQBODY_ERROR" required. [file "/etc/modsecurity/modsecurity.conf"] [line "75"] [id "200002"] [msg "Failed to parse request body."] [data "Multipart parsing error: Multipart: Invalid Content-Disposition header (-11): form-data; name=file; filename=\\x22New Text Document.txt\\x22; filename*=utf-8''New%20Text%20Document.txt."] [severity "CRITICAL"] [hostname "localhost"] [uri "/dump.php"] [unique_id "Y9GeG__D42q-U0HlyXxqpAAAAAA"]

or with Nginx+libmodsecurity3:
[client 127.0.0.1] ModSecurity: Access denied with code 400 (phase 2). Matched "Operator `Eq' with parameter `0' against variable `MULTIPART_STRICT_ERROR' (Value: `1' ) [file "/etc/nginx/modsecurity.conf"] [line "65"] [id "200003"] [rev ""] [msg "Multipart request body failed strict validation: \\x0aPE 0, \\x0aBQ 1, \\x0aBW 0, \\x0aDB 0, \\x0aDA 0, \\x0aHF 0, \\x0aLF 1, \\x0aSM 0, \\x0aIQ 0, \\x0aIP 0, \\x0aIH 0, \\x0aFL "]

So as you can see there is only one rule triggered in phase 2 with id 200002 (with both implementations):
Multipart parsing error: Multipart: Invalid Content-Disposition header (-11): form-data; name=file; filename="New Text Document.txt"; filename*=utf-8''New%20Text%20Document.txt.

and
Access denied with code 400 (phase 2). Match of "eq 0" against "REQBODY_ERROR" required.

I'm using CRS with Apache 2.9.7, and Nginx 1.18 and libmodsecurity3 3.0.8.
Could you check that script with your application, and align it to reproduce the issue?

Thanks @airween - I was unable to reproduce the problem using variations of your script, so I figured it must be something to do with the way that the request is being formed. I had a play with a different way of building the request using Python's requests module and I can now reproduce the problem from a Linux environment as well (I'm normally running my requests from a Windows environment, so I wanted to rule that out).
The script I ended up with is:
import requests

files = {'file': ("New Text Document.txt", "Test", "text/plain; charset=utf-8")}

response = requests.post("http://testapi/test", files=files)

print("REQUEST:")
print(response.request.body[:200])

print("")
print("RESPONSE:")
print("STATUS: %s %s" % (response.status_code, response.reason))
print("CONTENT:")
print(response.text)

Running this for me gives the output:
REQUEST:
b'--09c98bf95bed186d31baf8cd9284cd14\r\nContent-Disposition: form-data; name="file"; filename="New Text Document.txt"\r\nContent-Type: text/plain; charset=utf-8\r\n\r\nTest\r\n--09c98bf95bed186d31baf8cd9284cd14--'

RESPONSE:
STATUS: 403 Forbidden
CONTENT:

<title>403 Forbidden</title>

403 Forbidden

nginx

The logs show the exact errors and warnings that have been reported here.
And if I remove charset=utf-8 from the content type in the files variable, then the request goes through.
What happens in your environment if you make a request using that script?

@mikegoatly - thanks for script.
One of the reason why I didn't want to use Python's request module that it triggers the rule 913101:
ModSecurity: Warning. Matched phrase "python-requests" at REQUEST_HEADERS:User-Agent. [file "/home/airween/src/coreruleset/rules/REQUEST-913-SCANNER-DETECTION.conf"] [line "143"] [id "913101"] [msg "Found User-Agent associated with scripting/generic HTTP client"] [data "Matched Data: python-requests found within REQUEST_HEADERS:User-Agent: python-requests/2.25.1"] [severity "CRITICAL"] [ver "OWASP_CRS/3.3.4"] [tag "application-multi"] [tag "language-multi"] [tag "platform-multi"] [tag "attack-reputation-scripting"] [tag "OWASP_CRS"] [tag "capec/1000/118/224/541/310"] [tag "PCI/6.5.10"] [tag "paranoia-level/2"] [hostname "localhost"] [uri "/dump.php"] [unique_id "Y9KFbLAP0-kJr5b5OqfNjAAAAAE"]

The other one is that request formats the HTTP request as well, therefore I can't send any invalid request :).
So I changed the User-Agent header in request:
... files=files, headers={'User-Agent': 'PyTest Client v0.1'})

and run the script.
No rule was triggered. None of them.
REQUEST:
b'--7e824900b7127ebbb2dd7b2982b35061\r\nContent-Disposition: form-data; name="file"; filename="New Text Document.txt"\r\nContent-Type: text/plain; charset=utf-8\r\n\r\nTest\r\n--7e824900b7127ebbb2dd7b2982b35061--'

RESPONSE:
STATUS: 200 OK
CONTENT:
...

Note: in my dev env I have CRS v4.0/dev. Which version of CRS do you use?

OK, silly question time - I'm running ModSecurity as part of ingress-nginx. What's the best way to find that version number for you?

ingress-nginx should be a container image, right? If you can get hold of the image, or the definition, you should be able to find out.

Thanks @theseion  - @airween Looks like it's running:
CRS v3.3.4
ModSecurity v3.0.8
For what it's worth, I've just tried adding the same user agent header as you, and I still get the 403 response.

@mikegoatly - thanks.
I was able to reproduce the issue on Nginx + libmodsecurty3 3.0.8 and CRS 3.3.4.
2023/01/26 22:15:12 [info] 121615#121615: *1 ModSecurity: Warning. Matched "Operator `Rx' with parameter `^(?:(?:\*|[^\"(),\/:;<=>?![\x5c\]{}]+)\/(?:\*|[^\"(),\/:;<=>?![\x5c\]{}]+))(?:\s*+;\s*+(?:(?:charset\s*+=\s*+(?:\"?(?:iso-8859-15?|windows-1252|utf-8)\b\"?))|(?:(?:c(?:h(?:a(?:r(?:s(?:e[^t\"(),\/:;<=> (714 characters omitted)' against variable `TX:1' (Value: `text/plain; charset=utf-8\x0d\x0a' ) [file "/home/airween/src/coreruleset/rules/REQUEST-922-MULTIPART-ATTACK.conf"] [line "51"] [id "922110"] [rev ""] [msg "Illegal MIME Multipart Header content-type: charset parameter"] [data "Matched Data: text/plain; charset=utf-8\x0d\x0a found within Content-Type multipart form"] [severity "2"] [ver "OWASP_CRS/3.3.4"] [maturity "0"] [accuracy "0"] [tag "application-multi"] [tag "language-multi"] [tag "platform-multi"] [tag "attack-protocol"] [tag "OWASP_CRS"] [tag "capec/272/220"] [tag "paranoia-level/1"] [hostname "::1"] [uri "/dump.php"] [unique_id "167476771293.913423"] [ref "o0,41o14,27v356,41t:lowercaset:lowercase"], client: ::1, server: _, request: "POST /dump.php HTTP/1.1", host: "localhost:8080"

Let me investigate the reasons, why happens this (and why does not with Apache).

Thank you for your patience.
Looks like libmodsecurity3 handles buggy the multipart content types (too?), because it keeps the trailing white space chars, namely \r and \n in our case.
What can you do now?
I've found a workaround, this patch worked for me:
diff --git a/rules/REQUEST-922-MULTIPART-ATTACK.conf b/rules/REQUEST-922-MULTIPART-ATTACK.conf
index 1bf5a03..7c2fd36 100644
--- a/rules/REQUEST-922-MULTIPART-ATTACK.conf
+++ b/rules/REQUEST-922-MULTIPART-ATTACK.conf
@@ -53,7 +53,7 @@ SecRule MULTIPART_PART_HEADERS "@rx ^content-type\s*+:\s*+(.*)$" \
     phase:2,\
     block,\
     capture,\
-    t:none,t:lowercase,\
+    t:none,t:lowercase,t:removeWhiteSpace,\
     msg:'Illegal MIME Multipart Header content-type: charset parameter',\
     logdata:'Matched Data: %{TX.1} found within Content-Type multipart form',\
     tag:'application-multi',\
@@ -67,7 +67,7 @@ SecRule MULTIPART_PART_HEADERS "@rx ^content-type\s*+:\s*+(.*)$" \
     severity:'CRITICAL',\
     chain"
     SecRule TX:1 "!@rx ^(?:(?:\*|[^\"(),\/:;<=>?![\x5c\]{}]+)\/(?:\*|[^\"(),\/:;<=>?![\x5c\]{}]+))(?:\s*+;\s*+(?:(?:charset\s*+=\s*+(?:\"?(?:iso-8859-15?|windows-1252|utf-8)\b\"?))|(?:(?:c(?:h(?:a(?:r(?:s(?:e[^t\"(),\/:;<=>?![\x5c\]{}]|[^e\"(),/:;<=>?![\x5c\]{}])|[^s\"(),/:;<=>?![\x5c\]{}])|[^r\"(),/:;<=>?![\x5c\]{}])|[^a\"(),/:;<=>?![\x5c\]{}])|[^h\"(),/:;<=>?![\x5c\]{}])|[^c\"(),/:;<=>?![\x5c\]{}])[^\"(),/:;<=>?![\x5c\]{}]*(?:)\s*+=\s*+[^(),/:;<=>?![\x5c\]{}]+)|;?))*(?:\s*+,\s*+(?:(?:\*|[^\"(),\/:;<=>?![\x5c\]{}]+)\/(?:\*|[^\"(),\/:;<=>?![\x5c\]{}]+))(?:\s*+;\s*+(?:(?:charset\s*+=\s*+(?:\"?(?:iso-8859-15?|windows-1252|utf-8)\b\"?))|(?:(?:c(?:h(?:a(?:r(?:s(?:e[^t\"(),\/:;<=>?![\x5c\]{}]|[^e\"(),/:;<=>?![\x5c\]{}])|[^s\"(),/:;<=>?![\x5c\]{}])|[^r\"(),/:;<=>?![\x5c\]{}])|[^a\"(),/:;<=>?![\x5c\]{}])|[^h\"(),/:;<=>?![\x5c\]{}])|[^c\"(),/:;<=>?![\x5c\]{}])[^\"(),/:;<=>?![\x5c\]{}]*(?:)\s*+=\s*+[^(),/:;<=>?![\x5c\]{}]+)|;?))*)*$" \
-        "t:lowercase,\
+        "t:lowercase,t:removeWhiteSpace,\
         setvar:'tx.anomaly_score_pl1=+%{tx.critical_anomaly_score}'"

 # Content-Transfer-Encoding was deprecated by rfc7578 in 2015 and should not be used (see: https://www.rfc-editor.org/rfc/rfc7578#section-4.7)

so added the t:removeWhiteSpace transformation solved the problem, and rule 922110 didn't trigger.
(ping @fzipi as author of the rule: what do you think? Does it make sense to add this permanently?)
If you want to avoid the unwanted other REQUEST_BODY matches, you can add something similar:
SecRule REQUEST_HEADERS:Content-Type "@beginsWith multipart/form-data" \
    "id:1000001,\
    phase:1,\
    pass,\
    t:none,t:lowercase,\
    nolog,\
    ctl:ruleRemoveTargetByTag=OWASP_CRS;REQUEST_BODY"

I guess we could use removeWhiteSpace. It would make the regular expression simpler as well. I'll open an issue for that. Are you going to open an issue with ModSecurity? The line break characters should definitely not be part of the header value.

Thank you everyone for finding solution to this. Really appreciate

Are you going to open an issue with ModSecurity?

I try to find the bug and send a PR to fix it. If do not have time, I just open an issue.

authors: RedXanadu airween chladic fzipi mikegoatly theseion

repo: coreruleset/coreruleset


text:
Apache LOGLEVEL or ACCESSLOG does not seem to have an effect

Hello there,
I set my LOGLEVEL to error but I still see access logs in the container stdout. Did I misunderstood the purpose of LOGLEVEL? If so, is there a way to disable apache access logs?
Thanks!

To disable apache access logs, you can set ACCESSLOG=/dev/null I guess. See https://github.com/coreruleset/modsecurity-docker#apache-env-variables from the base container. The crs container is sending the errorlog to stderr

Good hint indeed, but weirdly enough I could not make that work. I'm checking this path a bit more

So far I was not able to stop accesslogs from showing up. Anyone managed to do so?

Ok, I think it was hiding in plain sight, but enough to be ignored. Short answer: you can't do it right now. This is because, while the base container will use the ACCESSLOG you provide, it also uses the directive TransferLog, and sends it unconditionally to stdout :/
I'm creating an issue in the base container to track this. Thanks for the report!

Thank you for your support!

Even after doing this:
      ACCESSLOG: "/dev/null"
      ERRORLOG: "/dev/null"
      METRICSLOG: "/dev/null"
      PERFLOG: "/dev/null combined"

I'm still getting access logs 😠 ! So I think this comes from the upstream httpd container. 😄

And here is the place: https://github.com/docker-library/httpd/blob/f3b7fd9c8ef59d1ad46c8b2a27df3e02d822834f/2.4/Dockerfile#L205-L212.
We will need to do a similar change.

I see the PR on the base container image is merged, so I guess it will soon make its way to the docker image?

It should... @fzipi?

We have a weekly build, so it should be there already 🤔.
Can you try it?

@igoooor Were you able to test this? Is it working now?

sorry for my late reply I was away.
Yes it seems to be working now with the latest docker build :)

source: gharchive/issue

authors: fzipi igoooor theseion

repo: coreruleset/modsecurity-crs-docker

license_type: permissive

license_source: github-api


text:
[Issue]: nvm-update.exe: NVM for Windows should be run from a terminal such as CMD or PowerShell

What happened?

I wanted to do this via CMD and PowerShell and also after revert setting Windows Terminal as default umm terminal.
What did you expect to happen?
I will be able to run nvm-update.exe
Version
1.1.11 or newer (Default)
Which version of Windows?
Windows 10 (Default)
Which locale?
Western European
Which shell are you running NVM4W in?
Command Prompt, PowerShell
User Permissions?
Administrative Privileges, Elevated
Is Developer Mode enabled?
No (Default)
Relevant log/console output
No response
Debug Output
Running NVM for Windows with administrator privileges.

Administrator: Command Prompt - nvm  debug
Windows Version: 10.0 (Build 19045)

NVM4W Version:      1.1.12
NVM4W Path:         C:\Users\adam\AppData\Roaming\nvm\nvm.exe
NVM4W Settings:     C:\Users\adam\AppData\Roaming\nvm\settings.txt
NVM_HOME:           C:\Users\adam\AppData\Roaming\nvm
NVM_SYMLINK:        C:\Program Files\nodejs
Node Installations: C:\Users\adam\AppData\Roaming\nvm

Total Node.js Versions: 4
Active Node.js Version: v20.9.0

IPv6 is enabled. This can slow downloads significantly.

No problems detected.

Find help at https://github.com/coreybutler/nvm-windows/wiki/Common-Issues

Anything else?
After running it via CMD with admin, I have this same MessageBox, bug after closing it, I have this message in CMD window:
NVM for Windows installation not found in C:\Users\adam\AppData\Roaming\nvm

But I have installed NVM...

And now, after nvm version I have latest 1.1.12...
Strange. Looks like some IF conditions should be fixed in this updater.

same issue here on my test machine, I was trying to use nvm over jenkins

I just noticed this issue today as well.

same for me today, could find any related in changelog...

Same error message for me in Git Bash on Windows 10, using nvm-windows 1.1.12.
After I downgraded to nvm-windows 1.1.11, then it worked fine.

Does anyone know a way around this in nvm-windows 1.1.12? I'd like to use an automated script to update/install nvm-windows and then run commands for installing, etc. via a bash script, run in git bash. Thanks!

Does anyone know a way around this in nvm-windows 1.1.12? I'd like to use an automated script to update/install nvm-windows and then run commands for installing, etc. via a bash script, run in git bash. Thanks!

download source code from https://github.com/coreybutler/nvm-windows/archive/refs/tags/1.1.12.zip, delete the check in the first few lines in main function in nvm.go in src folder, run build.bat, you'll get the setup file in dist folder

@aaron777collins the update process is really simple. You just need to overwrite the nvm.exe file in  NVM_HOME. You don't need to use the updater at all. It's just a convenience program anyway.
That said, shells using unix paths aren't supported. Git bash uses unix paths like /c/path/to/whatever which Windows can't understand. Operating in git bash is akin to running NVM4W on Linux... which isn't going to work. Still, you should be able to move files around for an update. You just can't run most nvm <command> operations in a unix-like environment.

FYI @coreybutler I seem to get this issue even when attempting to run nvm from nvm-noinstall.zip? On Windows Server 2022 (unattended install, packer hangs as a UI dialog is popped).
Easily reproduced in Windows Sandbox (Windows 11) from the Windows Powershell ISE using attached PS1 script as crafted from the manual installation advice.
Replacing the download link from latest to v1.1.11 and it works like a charm.

[!WARNING]
Only run this example in Windows Sandbox! It WILL rewrite your global system Path!

# Step 1: Remove existing Node.js installation
Get-Package -provider Programs -IncludeWindowsInstaller -Name "Node.js" | Uninstall-Package

# Step 2: Download latest portable nvm-noinstall.zip
Invoke-WebRequest -Uri "https://github.com/coreybutler/nvm-windows/releases/latest/download/nvm-noinstall.zip" -OutFile "$env:TEMP\nvm-noinstall.zip"

# Step 3: Move nvm-noinstall.zip to c:\nvm and extract files
New-Item -ItemType Directory -Force -Path "c:\nvm"
Expand-Archive -Path "$env:TEMP\nvm-noinstall.zip" -DestinationPath "c:\nvm" -Force

# Step 4: Create NVM_HOME environment variable
[System.Environment]::SetEnvironmentVariable("NVM_HOME", "c:\nvm", "Machine")

# Step 5: Create NVM_SYMLINK environment variable
[System.Environment]::SetEnvironmentVariable("NVM_SYMLINK", "c:\Program Files\nodejs", "Machine")

# Step 6: Ensure "c:\Program Files\nodejs" folder does not exist
Remove-Item -Path "c:\Program Files\nodejs" -Recurse -Force -ErrorAction Ignore
New-Item -Path "c:\Program Files\nodejs" -Type Directory -Force

# Step 7: Append NVM_HOME and NVM_SYMLINK to system PATH environment variable
$env:NVM_HOME = "c:\nvm"
$env:NVM_SYMLINK = "c:\Program Files\nodejs"
$nvmVars = @($env:NVM_HOME, $env:NVM_SYMLINK)

# Step 7.1 Reorganize active path, used as basis for updating system path
$env:Path = [System.Environment]::GetEnvironmentVariable("Path", "Machine")
$pathItems = $env:Path -split ";"
$pathItems = $pathItems | Where-Object { $_ -notin $nvmVars }
$pathItems += $nvmVars
$env:Path = $pathItems -join ";"

# Step 7.2 Set all future machine path
# NOTE: Rewriting Path will clobber REG_EXPAND_SZ to REG_SZ https://github.com/dotnet/runtime/issues/1442
[System.Environment]::SetEnvironmentVariable("Path", "$env:Path", "Machine")

Push-Location $env:NVM_HOME

$settings = @"
root: $env:NVM_HOME
path: $env:NVM_SYMLINK
arch: 64
proxy: none

"@

# NOTE: Go runtime doesn't like CRLF files
$settings = $settings -replace "`r`n", "`n"
$encoding = [System.Text.UTF8Encoding]::new($false)
[System.IO.File]::WriteAllBytes("$pwd\settings.txt", $encoding.GetBytes($settings))

# Step 8: Install major versions 14, 16, 18
nvm install 14
nvm install 16
nvm install 18

# Step 9: Set default Node 18
nvm use 18

v1.1.12 Fails

v1.1.11 Works

To be fair though, from just a plain Windows Powershell prompt in Windows Sandbox, the same script works 🤔 Must be something funky with the packer provisioner steps invocation of a Powershell session / something funky with the Windows Powershell ISE.
Here is the style of azure-arm builder packer step I used:
{
  "type": "powershell",
  "max_retries": 2,
  "inline": [
    "& c:\\tmp\\agent-image\\nvm.ps1"
  ],
  "elevated_user": "{{user `install_user`}}",
  "elevated_password": "{{user `install_password`}}"
}

FYI @coreybutler I seem to get this issue even when attempting to run nvm from nvm-noinstall.zip? On Windows Server 2022 (unattended install, packer hangs as a UI dialog is popped).
Easily reproduced in Windows Sandbox (Windows 11) from the Windows Powershell ISE using attached PS1 script as crafted from the manual installation advice.
Replacing the download link from latest to v1.1.11 and it works like a charm.
Warning
Only run this example in Windows Sandbox! It WILL rewrite your global system Path!
# Step 1: Remove existing Node.js installation
Get-Package -provider Programs -IncludeWindowsInstaller -Name "Node.js" | Uninstall-Package

# Step 2: Download latest portable nvm-noinstall.zip
Invoke-WebRequest -Uri "https://github.com/coreybutler/nvm-windows/releases/latest/download/nvm-noinstall.zip" -OutFile "$env:TEMP\nvm-noinstall.zip"

# Step 3: Move nvm-noinstall.zip to c:\nvm and extract files
New-Item -ItemType Directory -Force -Path "c:\nvm"
Expand-Archive -Path "$env:TEMP\nvm-noinstall.zip" -DestinationPath "c:\nvm" -Force

# Step 4: Create NVM_HOME environment variable
[System.Environment]::SetEnvironmentVariable("NVM_HOME", "c:\nvm", "Machine")

# Step 5: Create NVM_SYMLINK environment variable
[System.Environment]::SetEnvironmentVariable("NVM_SYMLINK", "c:\Program Files\nodejs", "Machine")

# Step 6: Ensure "c:\Program Files\nodejs" folder does not exist
Remove-Item -Path "c:\Program Files\nodejs" -Recurse -Force -ErrorAction Ignore
New-Item -Path "c:\Program Files\nodejs" -Type Directory -Force

# Step 7: Append NVM_HOME and NVM_SYMLINK to system PATH environment variable
$env:NVM_HOME = "c:\nvm"
$env:NVM_SYMLINK = "c:\Program Files\nodejs"
$nvmVars = @($env:NVM_HOME, $env:NVM_SYMLINK)

# Step 7.1 Reorganize active path, used as basis for updating system path
$env:Path = [System.Environment]::GetEnvironmentVariable("Path", "Machine")
$pathItems = $env:Path -split ";"
$pathItems = $pathItems | Where-Object { $_ -notin $nvmVars }
$pathItems += $nvmVars
$env:Path = $pathItems -join ";"

# Step 7.2 Set all future machine path
# NOTE: Rewriting Path will clobber REG_EXPAND_SZ to REG_SZ https://github.com/dotnet/runtime/issues/1442
[System.Environment]::SetEnvironmentVariable("Path", "$env:Path", "Machine")

Push-Location $env:NVM_HOME

$settings = @"
root: $env:NVM_HOME
path: $env:NVM_SYMLINK
arch: 64
proxy: none

"@

# NOTE: Go runtime doesn't like CRLF files
$settings = $settings -replace "`r`n", "`n"
$encoding = [System.Text.UTF8Encoding]::new($false)
[System.IO.File]::WriteAllBytes("$pwd\settings.txt", $encoding.GetBytes($settings))

# Step 8: Install major versions 14, 16, 18
nvm install 14
nvm install 16
nvm install 18

# Step 9: Set default Node 18
nvm use 18

v1.1.12 Fails

v1.1.11 Works

I can confirmI'm having the same issue with the same nvm-noinstall.zip on Windows 10 (Home) while using 1.1.12 but not 1.1.11

@aaron777collins the update process is really simple. You just need to overwrite the nvm.exe file in NVM_HOME. You don't need to use the updater at all. It's just a convenience program anyway.
That said, shells using unix paths aren't supported. Git bash uses unix paths like /c/path/to/whatever which Windows can't understand. Operating in git bash is akin to running NVM4W on Linux... which isn't going to work. Still, you should be able to move files around for an update. You just can't run most nvm <command> operations in a unix-like environment.

Thats very true, but would it be possible to disable this warning and let it run similar to 1.1.11? I'm okay with limited features. Could we maybe have a configuration file if we can't revert this feature? I'd ideally like to keep the software up to date using the updater but without the errors, Thanks!

I coded a workaround in this PR by adding an ignore_terminal setting. Let me know what you think.

I also ran into this bug using 1.1.12 with Git Bash, which we use for our CI jobs on Windows.  I ended up switching to 1.1.11 to workaround it.
We run all sorts of Windows programs from Git Bash to compile our C++ code.  It's rare that we run into any compatibility issues.  If we do run into an issue it's usually with interactive programs.
The different path structure in Git Bash only effects Windows apps if those paths are passed as input to the app somehow, like a command line parameter or an environment variable.   Git Bash even tries to be clever, converting some CLI params and environment variables to Windows-style paths before running the program:
epederson@NAD4ZWN853 MINGW64 /c/work/llm-core (master)
$ python -c "import os; print(os.environ['PATH'])"
'C:\\Users\\epederson\\.krew\\bin;~\\bin\\Kui-win32-x64;C:\\Program Files\\nodejs;C:\\Program Files (x86)\\mitmproxy\\bin;
C:\\Go\\bin;C:\\Users\\epederson\\go\\bin;C:\\Perl\\bin;F:\\bin;C:\\Program Files\\Git\\mingw64\\bin;C:\\Program Files\\Gi
t\\usr\\bin...

i used nvm1.1.12 by powershell7.4,it also happend. but it work well with powershell5, Is this not correctly recognizing the powershell7.4 I installed?

NVM breaks also if it does not detect an STDIN apparently, i think.
Or at least that's the problem i have

@aaron777collins the update process is really simple. You just need to overwrite the nvm.exe file in NVM_HOME. You don't need to use the updater at all. It's just a convenience program anyway.
That said, shells using unix paths aren't supported. Git bash uses unix paths like /c/path/to/whatever which Windows can't understand. Operating in git bash is akin to running NVM4W on Linux... which isn't going to work. Still, you should be able to move files around for an update. You just can't run most nvm <command> operations in a unix-like environment.

@coreybutler I respect that and I know you're super busy so sorry for pinging you, this will probably seem like a trivial non-issue, but this occurs even if 'escaping' the Git Bash environment using something like:
$ pwsh -Command "cmd.exe /C nvm"

which should be putting it in a normal Windows path environment, but we still get the box.
Surely what I'm about to say will seem like I could just do things another way, so I'm sorry to bug you with it because I know it's not your job at all to just fix all this stuff, but I have a bunch of bash scripts that mostly call into node and npm for setup related things, and they work on Git Bash.
If possible I'd love to avoid porting all these scripts over to pwsh, or whatever, but where they are breaking is when we use Windows nvm to set node versions.
For now I'm going to look for workarounds.
Anyway, no worries, I totally get if you're too busy to reply, no worries at all!
BTW - I love the box, I think it's a cool, iconic thing to add.

Found a workaround is to use: winpty (at least in GitBash):
cris@win-server MINGW64 ~
$ nvm
# got box

cris@win-server MINGW64 ~
$ winpty nvm
# no box

Running version 1.1.12.

Usage:

  nvm arch                     : Show if node is running in 32 or 64 bit mode.
  nvm current                  : Display active version.
  nvm debug                    : Check the NVM4W process for known problems (tro
ubleshooter).
  nvm install <version> [arch] : The version can be a specific version, "latest"
 for the latest current version, or "lts" for the
                                 most recent LTS version. Optionally specify whe
ther to install the 32 or 64 bit version (defaults
                                 to system arch). Set [arch] to "all" to install
 32 AND 64 bit versions.
                                 Add --insecure to the end of this command to by
pass SSL validation of the remote download server.
  nvm list [available]         : List the node.js installations. Type "available
" at the end to see what can be installed. Aliased as ls.
  nvm on                       : Enable node.js version management.
  nvm off                      : Disable node.js version management.
  nvm proxy [url]              : Set a proxy to use for downloads. Leave [url] b
lank to see the current proxy.
                                 Set [url] to "none" to remove the proxy.
  nvm node_mirror [url]        : Set the node mirror. Defaults to https://nodejs
.org/dist/. Leave [url] blank to use default url.
  nvm npm_mirror [url]         : Set the npm mirror. Defaults to https://github.
com/npm/cli/archive/. Leave [url] blank to default url.
  nvm uninstall <version>      : The version must be a specific version.
  nvm use [version] [arch]     : Switch to use the specified version. Optionally
 use "latest", "lts", or "newest".
                                 "newest" is the latest installed version. Optio
nally specify 32/64bit architecture.
                                 nvm use <arch> will continue using the selected
 version, but switch to 32/64 bit mode.
  nvm root [path]              : Set the directory where nvm should store differ
ent versions of node.js.
                                 If <path> is not set, the current root will be
displayed.
  nvm [--]version              : Displays the current running version of nvm for
 Windows. Aliased as v.

cris@win-server MINGW64 ~
$ node -v
v21.5.0

cris@win-server MINGW64 ~
$ winpty nvm use v19
node v19.9.0 (64-bit) is not installed.

cris@win-server MINGW64 ~
$ winpty nvm list

  * 21.5.0 (Currently using 64-bit executable)

cris@win-server MINGW64 ~
$ winpty nvm install v19
Downloading node.js version 19.9.0 (64-bit)...
Extracting node and npm...
Complete
npm v9.6.3 installed successfully.

Installation complete. If you want to use this version, type

nvm use 19.9.0

cris@win-server MINGW64 ~
$ winpty nvm use v19
Now using node v19.9.0 (64-bit)

cris@win-server MINGW64 ~
$ node -v

v19.9.0

cris@win-server MINGW64 ~
$ node -p process.platform
win32

Also if you want node REPL just add winpty before node, like:
cris@win-server MINGW64 ~/BrowserBox (windows-install)
$ winpty node
Welcome to Node.js v19.9.0.
Type ".help" for more information.
> .exit

I could run nvm commands on Windows 11 in my Git Bash as well as in bash scripts which are executed with the Git Bash.
However, as soon as those nvm commands were invoked in a subshell with $(nvm ...) it failed with the error message from this post.
A workaround could be nvm ... > tempfile.txt and then cat tempfile.txt to read the output. I could not come up with any other workarounds which do not involve writing or reading temporary files.

That said, shells using unix paths aren't supported. Git bash uses unix paths like /c/path/to/whatever which Windows can't understand. Operating in git bash is akin to running NVM4W on Linux... which isn't going to work. Still, you should be able to move files around for an update. You just can't run most nvm <command> operations in a unix-like environment.

This project has worked perfectly in Git Bash for years as a foundational component of my Windows dev process by the way. If support for it was removed I would hope that a minor or major version bump would be used instead of a patch. As far as I know, Git for Windows' bash terminal translates C:\ and /c/ paths back and forth seamlessly in a way that made it inconsequential for a library like this. It works perfectly for the install and use commands in 1.1.11.
Using winpty nvm * works in my case, although forgetting it causes problems that require using cmd / pwsh anyway. Rolling back to 1.1.11 resolves the issue.

@johnrom I'm glad it's working for you in Git Bash, but there won't be a any kind of version bump because Git Bash was never officially supported to begin with. If it does the translation automatically, that is truly awesome, and it's also news to me (because it didn't always do that).
As I've mentioned through the years, it is impossible for us to keep up with the nuances of every shell. They change more frequently than most people recognize. That's why we only support the shells that ship with Windows. This becomes the baseline... if something is compatible with CMD or PowerShell, it should be compatible with NVM4W.
That said, this issue was introduced because someone had NVM4W in their start menu, clicked on it, and it appeared to not work. The fix for this was introduced too hastily. I will either revert that change or merge one of the PRs that solve this issue for the next minor release.

Seems like this is well-discussed already, but this caused nvm commands to just hang when being run by a GitLab CI runner (shell, powershell) since nothing was closing the dialog box that popped up. Figured I'd add a comment in case anyone else was having the same problems with NVM4W and GitLab. Guessing that the GitLab Runner is piping the output of the Powershell command somewhere which, as discussed above, caused the dialog box to pop up.

You're right to keep commenting. It's crazy how so many systems end up dependent on libraries like this that don't get much love update wise.
The more comments I see on a 2 month old critical issue like this, the more encouraged I am to find better supported alternatives.

@coreybutler  I will either revert that change or merge one of the PRs that solve this issue for the next minor release.

Is there a timeline for this?
My preference is to revert the change. There's a PR (#1071) that adds an option to not show the message, but that still means the problem exists by default. This is a command line tool. Command line tools shouldn't open message boxes.

Happens to me in Windows terminal running powershell, had to revert to 1.1.11

Having the same issue with. Will downgrade back to 1.1.11

We also had to downgrade our provisioning tools to use an older version. Happens in Windows terminal, ConEmu but also regular PS terminals on our end. Also note it happens for both Windows PWSH (5.x) and PWSH Core (7+).
We reverted to 1.1.9 because we use the choco package, where the last published version before 1.1.12 was 1.1.9.

By coincidence I'm also using chocolatey and I use choco install -y nvm.install --version=1.1.11 --pin to install 1.1.11.
-- Eric
On Mon, Feb 12, 2024 at 4:32 PM sambernet @.***> wrote:

We also had to downgrade our provisioning tools to use an older version.
Happens in Windows terminal, ConEmu but also regular PS terminals on
our end. Also note it happens for both Windows PWSH (5.x) and PWSH Core
(7+).
We reverted to 1.1.9 because we use the choco package
https://community.chocolatey.org/packages/nvm#versionhistory, where the
last published version before 1.1.12 was 1.1.9.
—
Reply to this email directly, view it on GitHub
https://github.com/coreybutler/nvm-windows/issues/1068#issuecomment-1939620058,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABAGGBHCCRJA4WXMOFN36IDYTKC5XAVCNFSM6AAAAAA7XRWTKCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMZZGYZDAMBVHA
.
You are receiving this because you commented.Message ID:
@.***>

Folks, this will be addressed when I have time. I intend to revert the change.
For those who feel I'm not responding fast enough (like @eglove), please remember every version manager is supported by volunteers. If you want faster support, then signup for Runtime updates. That's my primary focus right now.

I tried to automate my setup of nvm and to be sure is installed I was running the nvm use  to check if installed. If not than run the installer and recheck. But a problem is that if I want to add the values of the command into a variable then I get the error message as well.

Is there any quick workaround to fix this in automation?

@oryon-dominik there are currently 2 options:

Use winpty nvm [command]
Roll back to 1.1.11

I resolved this issue while preserving the warning popup functionality without adding any new command line arguments here: https://github.com/coreybutler/nvm-windows/pull/1120

Only check terminal when there are no arguments, because it's possible the user clicked the .exe. If there are arguments, assume the user knows what they're doing. Add some launch tasks in .vscode to demonstrate the difference.

My PR  that adds the ignore_terminal property (on by default to fix this) has now been fixed and should be merge ready :)

@aaron777collins If it's off by default, wouldn't that basically defeat the whole purpose of the check? Nobody would actually turn that check on. The reason it was added is here https://github.com/coreybutler/nvm-windows/issues/1068#issuecomment-1904584045:

That said, this issue was introduced because someone had NVM4W in their start menu, clicked on it, and it appeared to not work.

If this feature absolutely must stay, then #1120 from @johnrom seems to be the best fix.

@aaron777collins If it's off by default, wouldn't that basically defeat the whole purpose of the check? Nobody would actually turn that check on. The reason it was added is here #1068 (comment):

That said, this issue was introduced because someone had NVM4W in their start menu, clicked on it, and it appeared to not work.

If this feature absolutely must stay, then #1120 from @johnrom seems to be the best fix.

That’s a fair point. I mainly implemented this because the automated scripts that my company uses stopped working with this feature. Thus, I created a feature flag to disable it. Originally I had it as opt-in to disable the feature but that wouldn’t help people much. Thus I swapped to have it ignore the terminal by default. #1120 seems to have a pretty good compromise. I’m happy as long as my bash scripts work again. Thanks!

The plan is to revert the changes. A new update is ready, but our code signing certificate got locked when I was trying to automate the process. As soon as I get this cleared up with the Cert Authority, I'll cut a new release. It may still be awhile though.

Not stale

Use that powershell script below
The alert "Terminal only", you should start a new process with terminal window;
# change node version
# keep same with .nvmrc version
# used for webstorm adding external-tools when before launch
# used for vscode when task dependsOn
if(Test-Path .nvmrc){
}else {
    echo "no .nvmrc file"
    return
}
$curVer = node -v
$curVer = $curVer -replace 'v', ''
$cfgVer = Get-Content .nvmrc
if($curVer -eq $cfgVer)
{
    echo "no need to switch version"
}else{
    # change version
    echo "change node version to $cfgVer"
    start powershell "nvm use $cfgVer"
}

Not stale

Same issue when use nvm 1.1.12 inside jenkins pipeline on windows

Go away stale bot. Had to downgrade.

Sorry to ping again. Someone else may need to comment. It's still marked stale.

Sorry to ping again. Someone else may need to comment. It's still marked stale.

I think the action runs daily, so it should remove the label in a few hours time.

@coreybutler any action here? This is still disrupting things for my team. I understand it's volunteer work but it's been 9 months since this post was made, and 6 months since the last update from you.

@coreybutler any action here? This is still disrupting things for my team. I understand it's volunteer work but it's been 9 months since this post was made, and 6 months since the last update from you.

And nearly 3yrs since anyone sponsored anything. As indicated in the Readme, updates will be posted to those who have subscribed, on twitter, and on our linkedin page. I've posted many updates on issues throughout the repo and I'm the wiki. The general gist is we're nearing a release of Runtime. Additionally,  our code-signing cert was locked. We're in the process of acquiring a new one.

@lyonb96 workarounds are here: https://github.com/coreybutler/nvm-windows/issues/1068#issuecomment-2030246717

@coreybutler any action here? This is still disrupting things for my team. I understand it's volunteer work but it's been 9 months since this post was made, and 6 months since the last update from you.

I'd recommend downgrading to the lower version or checking out many people's recommended fixes. For example, I forked the repo and created a release where there's a setting to disable the verification. All of this won't matter when the cert lock gets lifted but in the meantime there's a lot you can do.

Please consider one of the exempt options in https://github.com/actions/stale to prevent this issue from getting the https://github.com/coreybutler/nvm-windows/labels/Stale label applied every 30 days.

@MikeMcC399 I've configured this a few times, without much success. I tried adding a new rule to prevent the bot from running on anything labeled not stale. Hopefully that will work.

As a general update for this issue, the code that caused this has been reverted. The main blocker now is code-signing the build.
Why is code signing a blocking problem?
If we do not code-sign new releases, Microsoft SmartScreen will prevent installation in most organizations.
How did this happen?
I tried to automate the build/code-signing process. Unfortunately, an uncaught error caused too many incorrect signing attempts, locking the certificate. I tried working with the issuer, but we never reached a resolution.
The code signing certificate is due to expire in November anyway, so I've been pursuing a new one. To summarize a long story, it's an expensive process riddled with barriers.
How is this being resolved?
I've been working directly with Microsoft to verify Author Software Inc., the new company I launched in July for this project. This entity will become the new steward of this project and its successor (Runtime). The verification program we're working with at Microsoft is only in a preview stage, so most of their efforts have to be done manually.
The good news is we've completed the identity verification steps. There are a few more steps before we can actually sign the apps, but it's nearly complete.
Once we regain the ability to code-sign, I'll cut a new release and close this issue.

@coreybutler while I wish you luck with Runtime and look forward to seeing what you add with it, that name for the software is going to be awful to search for...

@TheAtomicOption the executable will just be rt, so I suspect that's how people will search for it... if they search at all. It will be linked in the NVM4W help when it's ready.

authors: 00000o1 AlexDoanBB AndreM222 MikeMcC399 Saibamen TheAtomicOption aaron777collins aetonsi alexblatov arm-liang buckyster coreybutler eglove electrocnic elynch93 johnrom lyonb96 majkinetor oryon-dominik philippjenni reduckted roo12589 sambernet sourcedelica t-l-k timmywil whitespacecode

repo: coreybutler/nvm-windows

license: MIT


text:
docs: Minor corrections for documentation

Please check if the PR fulfills these requirements

[x] The commit message follows our guidelines
[x] Tests for the changes have been added (for bug fixes / features)
[x] Docs have been added / updated (for bug fixes / features)

What kind of change does this PR introduce? (Bug fix, feature, docs update, ...)
Fixes minor mistakes in the documentation.

What is the current behavior? (You can also link to an open issue here)
N/A

What is the new behavior (if this is a feature change)?
N/A

Does this PR introduce a breaking change? (What changes might users need to make in their application due to this PR?)
N/A

Other information:

Thanks again, @alexfreska ^_^

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

source: gharchive/pull-request

authors: alexfreska dannyrb

repo: cornerstonejs/cornerstoneTools

license: mit

license_source: bigquery


text:
ERROR in ./src/index.jsx SyntaxError: Unexpected token (13:4)

Hello.
Trying to make it working. Even ubunu reinstalling didn't help.
Did everything as explained here:
https://jasonwatmore.com/post/2017/12/07/react-redux-jwt-authentication-tutorial-example
Installed node, npm, npx, nvm:
$ node -v
v12.18.4
$ npm -v
6.14.6
$ nvm -v
0.36.0
$ npx -v
6.14.6

Installing passes well:
$ npm install
But trying to start it gives me following:
 npm start

> react-redux-jwt-authentication-example@1.0.0 start /home/al/python/template/ui
> webpack-dev-server --open

ℹ ｢wds｣: Project is running at http://localhost:8080/
ℹ ｢wds｣: webpack output is served from /
ℹ ｢wds｣: Content not from webpack is served from /home/al/python/template/ui
ℹ ｢wds｣: 404s will fallback to /index.html
ℹ ｢wdm｣: wait until bundle finished: /
✖ ｢wdm｣: Hash: 11349b9868bb6765819a
Version: webpack 4.43.0
Time: 1755ms
Built at: 10/03/2020 1:21:37 PM
     Asset       Size  Chunks             Chunk Names
index.html  831 bytes          [emitted]
   main.js    396 KiB    main  [emitted]  main
Entrypoint main = main.js
[0] multi (webpack)-dev-server/client?http://localhost:8080 ./src 40 bytes {main} [built]
[./node_modules/ansi-html/index.js] 4.24 KiB {main} [built]
[./node_modules/ansi-regex/index.js] 139 bytes {main} [built]
[./node_modules/html-entities/lib/index.js] 449 bytes {main} [built]
[./node_modules/loglevel/lib/loglevel.js] 8.43 KiB {main} [built]
[./node_modules/strip-ansi/index.js] 161 bytes {main} [built]
[./node_modules/webpack-dev-server/client/index.js?http://localhost:8080] (webpack)-dev-server/client?http://localhost:8080 4.29 KiB {main} [built]
[./node_modules/webpack-dev-server/client/overlay.js] (webpack)-dev-server/client/overlay.js 3.51 KiB {main} [built]
[./node_modules/webpack-dev-server/client/socket.js] (webpack)-dev-server/client/socket.js 1.53 KiB {main} [built]
[./node_modules/webpack-dev-server/client/utils/createSocketUrl.js] (webpack)-dev-server/client/utils/createSocketUrl.js 2.91 KiB {main} [built]
[./node_modules/webpack-dev-server/client/utils/log.js] (webpack)-dev-server/client/utils/log.js 964 bytes {main} [built]
[./node_modules/webpack-dev-server/client/utils/reloadApp.js] (webpack)-dev-server/client/utils/reloadApp.js 1.59 KiB {main} [built]
[./node_modules/webpack-dev-server/client/utils/sendMessage.js] (webpack)-dev-server/client/utils/sendMessage.js 402 bytes {main} [built]
[./node_modules/webpack/hot sync ^\.\/log$] (webpack)/hot sync nonrecursive ^\.\/log$ 170 bytes {main} [built]
[./src/index.jsx] 834 bytes {main} [built] [failed] [1 error]
    + 18 hidden modules

ERROR in ./src/index.jsx
Module build failed (from ./node_modules/babel-loader/lib/index.js):
SyntaxError: Unexpected token (13:4)

  11 |
  12 | render(
> 13 |     <Provider store={store}>
     |     ^
  14 |         <App />
  15 |     </Provider>,
  16 |     document.getElementById('app')

Child html-webpack-plugin for "index.html":
     1 asset
    Entrypoint undefined = index.html
    [./node_modules/html-webpack-plugin/lib/loader.js!./src/index.html] 995 bytes {0} [built]
    [./node_modules/lodash/lodash.js] 528 KiB {0} [built]
    [./node_modules/webpack/buildin/global.js] (webpack)/buildin/global.js 470 bytes {0} [built]
    [./node_modules/webpack/buildin/module.js] (webpack)/buildin/module.js 500 bytes {0} [built]
ℹ ｢wdm｣: Failed to compile.

[```
What did I do wrong?

After some research I created following .babelrc file:
$ cat .babelrc
{
  "presets": [
    "react",
    "es2015"
  ]
}

After that I get following:
$ npm start

> react-redux-jwt-authentication-example@1.0.0 start /home/al/python/template/ui
> webpack-dev-server --open

ℹ ｢wds｣: Project is running at http://localhost:8080/
ℹ ｢wds｣: webpack output is served from /
ℹ ｢wds｣: Content not from webpack is served from /home/al/python/template/ui
ℹ ｢wds｣: 404s will fallback to /index.html
ℹ ｢wdm｣: wait until bundle finished: /
[BABEL] Note: The code generator has deoptimised the styling of "/home/al/python/template/ui/node_modules/react-dom/cjs/react-dom.development.js" as it exceeds the max of "500KB".
✖ ｢wdm｣: Hash: 3db8f8faee867891c547
Version: webpack 4.43.0
Time: 10950ms
Built at: 10/03/2020 1:32:43 PM
     Asset       Size  Chunks             Chunk Names
index.html  831 bytes          [emitted]
   main.js   1.53 MiB    main  [emitted]  main
Entrypoint main = main.js
[0] multi (webpack)-dev-server/client?http://localhost:8080 ./src 40 bytes {main} [built]
[./node_modules/react-dom/index.js] 1.32 KiB {main} [built]
[./node_modules/react-redux/es/index.js] 789 bytes {main} [built]
[./node_modules/react/index.js] 189 bytes {main} [built]
[./node_modules/strip-ansi/index.js] 161 bytes {main} [built]
[./node_modules/webpack-dev-server/client/index.js?http://localhost:8080] (webpack)-dev-server/client?http://localhost:8080 4.29 KiB {main} [built]
[./node_modules/webpack-dev-server/client/overlay.js] (webpack)-dev-server/client/overlay.js 3.51 KiB {main} [built]
[./node_modules/webpack-dev-server/client/socket.js] (webpack)-dev-server/client/socket.js 1.53 KiB {main} [built]
[./node_modules/webpack-dev-server/client/utils/createSocketUrl.js] (webpack)-dev-server/client/utils/createSocketUrl.js 2.91 KiB {main} [built]
[./node_modules/webpack-dev-server/client/utils/log.js] (webpack)-dev-server/client/utils/log.js 964 bytes {main} [built]
[./node_modules/webpack-dev-server/client/utils/reloadApp.js] (webpack)-dev-server/client/utils/reloadApp.js 1.59 KiB {main} [built]
[./node_modules/webpack-dev-server/client/utils/sendMessage.js] (webpack)-dev-server/client/utils/sendMessage.js 402 bytes {main} [built]
[./node_modules/webpack/hot sync ^\.\/log$] (webpack)/hot sync nonrecursive ^\.\/log$ 170 bytes {main} [built]
[./src/App/index.js] 338 bytes {main} [built]
[./src/index.jsx] 600 bytes {main} [built]
    + 137 hidden modules

ERROR in ./src/_components/PrivateRoute.jsx
Module build failed (from ./node_modules/babel-loader/lib/index.js):
SyntaxError: Unexpected token (4:53)

  2 | import { Route, Redirect } from 'react-router-dom';
  3 |
> 4 | export const PrivateRoute = ({ component: Component, ...rest }) => (
    |                                                      ^
  5 |     <Route {...rest} render={props => (
  6 |         localStorage.getItem('user')
  7 |             ? <Component {...props} />

 @ ./src/_components/index.js 7:20-45
 @ ./src/App/App.jsx
 @ ./src/App/index.js
 @ ./src/index.jsx
Child html-webpack-plugin for "index.html":
     1 asset
    Entrypoint undefined = index.html
    [./node_modules/html-webpack-plugin/lib/loader.js!./src/index.html] 995 bytes {0} [built]
    [./node_modules/lodash/lodash.js] 528 KiB {0} [built]
    [./node_modules/webpack/buildin/global.js] (webpack)/buildin/global.js 806 bytes {0} [built]
    [./node_modules/webpack/buildin/module.js] (webpack)/buildin/module.js 521 bytes {0} [built]
ℹ ｢wdm｣: Failed to compile.

Were able to run it under windows. Facing troubles under Ubuntu.


text:
Discontinue table of repositories in this repository (COMMUNITY)

Description
This PR discontinues the repository table in the README here, instead the README now links to the table in the documentation repository.
This will make it easier to update the list with newly created repositories.

Thanks for that Saturday evening merge @mtwalli! 🙂

repo: corona-warn-app/cwa-app-android


text:
Missing Pull Request Template

Current Implementation
Currently there is no pull request template available in the cwa-app-ios GitHub repository.
Suggested Enhancement
Adding one or more pull request templates.
https://help.github.com/en/github/building-a-strong-community/creating-a-pull-request-template-for-your-repository
Expected Benefits
Standardized pull requests in terms of contribution guidelines, motivation, solution, implementation, tests, etc.

Hi @LukasMasuch ,
Do we have any plan to do it for every Repos?
Thanks.
Best regards
Hao

authors: SvenTiigi haosap

repo: corona-warn-app/cwa-app-ios


text:
Correct and Enhance #qr_test (Closes #898 & #899)

This PR corrects wrong wording in #qr_test (#898) and enhances the entry to explain how to delete the test result before entering the TeleTAN (#899).

Screenshots of the changes
DE:

EN:

Closes #898
Closes #899

@MikeMcC399
Yes this differs from iOS, I will make all labels mixed cased.

repo: corona-warn-app/cwa-website


text:
Improvements

closes #86

Made full name field required in lsg body form.
Fixed #86

Is work completed on this? @divyagar

Looks good to me.

repo: coronasafe/arike


text:
Reorganize triggering code, bump minimum NumPy version to 1.21

[ ] If you are a maintainer (only @nyanpasu64 at the moment), make sure to edit the changelog if needed. Otherwise, a maintainer will edit the changelog.

Codecov Report

Merging #397 (702116e) into master (3fd75fc) will increase coverage by 0.01%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master     #397      +/-   ##
==========================================
+ Coverage   77.15%   77.16%   +0.01%
==========================================
  Files          27       28       +1
  Lines        3860     3862       +2
==========================================
+ Hits         2978     2980       +2
  Misses        882      882

Impacted Files
Coverage Δ

corrscope/renderer.py
85.08% <ø> (ø)

corrscope/settings/paths.py
93.75% <100.00%> (ø)

corrscope/spectrum.py
62.68% <100.00%> (ø)

corrscope/triggers.py
84.80% <100.00%> (ø)

corrscope/utils/trigger_util.py
94.33% <100.00%> (ø)

corrscope/utils/windows.py
90.90% <100.00%> (ø)

corrscope/wave.py
98.54% <100.00%> (ø)

corrscope/wave_common.py
100.00% <100.00%> (ø)

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 3fd75fc...702116e. Read the comment docs.

repo: corrscope/corrscope


text:
Remove duplicated description on RecordList

I do not understand this patch. Why are you removing description? What displays the duplicate then?

Hello,
I couldn't find where the duplicate is coming from for this one (RecordList).
It is like that since 2021.3.12 if this can help you investigate.
But I have more information for the other PR (will post on it :) )
Thanks!

Ok I screwed the other branch, but those were originally fixes for 2021.3.x like I said in my last comment (not for 2021.9.x like I did the PRs). This might be the reason of your confusion?
About my suggestions, I think it is best for you to investigate both issue (they are separate) as this one fix ONLY for RecordList and the other one on Card.vue was fixing for all other PageBlocks. But this might not be the best solution at all! Those are only the ones I set up on our side.
About the image: It is coming from your "latest" instance on my Namespace.
Sorry again for the mix and thanks for your help!

This was fixed here: https://github.com/cortezaproject/corteza-webapp-compose/commit/57e860e0690d551b24a166a3de7685482d7d8f64
Closing, will be released with next patch

authors: Fajfa darh sgg-adraynrion

repo: cortezaproject/corteza-webapp-compose


text:
Prefilter events in map element not working properly

Is there an existing issue for this?

[X] I have searched the existing issues

Version of Corteza
2023.9
Current Behavior
When setting Prefilter events on a map element, (in this case parentmapobject='${recordID}'), after saving the content is replaced with a funny value ('0') and the prefilter doesn't work: (parentmapobject='0').
As a test, setting the Map block Title to ${recordID}, the Title is shown with an ID, as expected. However, when setting this in the Prefilter events, the ${recordID} gets replaced with an '0'.
Expected Behavior
The expected behaviour would be to keep the content in the prefilter events (parentmapobject='${recordID}') and not to be replaced with an "parentmapobject='0'".

Steps To Reproduce
Add a map block.
Set the prefilter events to filter based on the current opened record. In this case is parentmapobject='${recordID}'.
Save the map block.
Open the map block and check the content of the prefilter events, which will be already messed up with the content being: parentmapobject='0'.
Environment and versions
No response
Anything else?
No response

Thanks for reporting it, will fix it.

authors: Fajfa kindiann

repo: cortezaproject/corteza


text:
removed extra -- on lint/test:watch

After clean install and project setup (on Node 7.2) I was getting errors on npm start. (ERROR: "lint:watch" exited with 1.)
Removing the extra -- solved it.

Coverage remained the same at 95.0% when pulling c93a44d7eb5be329d90d2519724ed9bf7d1f2f7a on Vlandmist:patch-1 into 32fd8c834dfb0a0bb0435b4d8608006e66e15ebc on coryhouse:master.

The extra -- is necessary to pass the watch flag to lint and test. This way they run each time the user hits save. If you clone the project from scratch, it should work fine. If it doesn't, please open an issue and we'll work with you there.

Ok sorry for that. I had cloned from scratch (installed everything a few hours ago) but I'll try again and open an issue in case it happens again.

authors: Vlandmist coryhouse coveralls

repo: coryhouse/react-slingshot


text:
🛑 Backend API is down

In 3b0d62e, Backend API (https://cosgridnetworks.in/api/v1/tenant/data/cosgrid-com-mail/) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Backend API is back up in 477fc57 after 31 minutes.


text:
How use event ?

I don't understand how use SDL_Event and SDL_PollEvent, could you make a third example file with this C program converted in racket ?
How define an event variable with SDL_Event type ?
And how use SDL_PollEvent with ?
int done = 0;
SDL_Event event;

while(done == 0)
  {
    while ( SDL_PollEvent(&event) )
     {
         switch(event.type)
             {
             case SDL_QUIT :
                 done = 1;
                 break;
             default :
                 print("Event not available\n");
             }
             /* something */
             // ...
      }
    }

This fork has more examples available
https://github.com/stonecauldron/racket-sdl/blob/master/lazyfoo/lazyfoo03.rkt

It turns out, after a ton of digging, I was wrong. You can malloc the struct to the correct size, and you can access fields inside. Here's an example of getting the keycode of the pressed key:
#lang racket/base

(require ffi/unsafe
         ffi/unsafe/define
         ; Replace with your `racket-sdl` `require` line
         "racket-sdl/sdl/definitions.rkt"
         "racket-sdl/sdl/constants.rkt"
         "racket-sdl/sdl/structs.rkt")

(define _SDL_KEYDOWN_TYPE (cast 'SDL_KEYDOWN _SDL_EventType _int))
(define _SDL_EVENT_TYPE_OFFSET 0)
(define _SDL_KEYBOARDEVENT_OFFSET 3)

(module* main #f
  (SDL_Init SDL_INIT_EVERYTHING)
  (let* ([window (SDL_CreateWindow "Foo"
                                   SDL_WINDOWPOS_CENTERED
                                   SDL_WINDOWPOS_CENTERED
                                   640
                                   480
                                   'SDL_WINDOW_SHOWN)]
         [surface (SDL_GetWindowSurface window)]
         [event-ptr (malloc (ctype-sizeof _SDL_Event*))]
         [event (cast event-ptr _pointer _SDL_Event*)])
    (let loop ()
      (let check-events ()
        (when (> (SDL_PollEvent event) 0)
          (let* ([event-ref (ptr-ref event _SDL_Event 0)]
                 [type (union-ref event-ref _SDL_EVENT_TYPE_OFFSET)])
            (when (equal? type _SDL_KEYDOWN_TYPE)
              (let* ([keyboard-event (union-ref event-ref _SDL_KEYBOARDEVENT_OFFSET)]
                     [sym (SDL_Keysym-sym (SDL_KeyboardEvent-keysym keyboard-event))])
                (printf "pressed ~s\n" sym)))
            (check-events))))
      (SDL_Delay 20)
      (loop))))

@rjungemann Sorry to interrupt, but this particular line looks fishy:
[event-ptr (malloc (ctype-sizeof _SDL_Event*))]

You're allocating 8 bytes of memory (on 64-bit machine, that is) when SDL_Event actually occupies 56 bytes of memory space (as the simple printf("%d\n", sizeof(SDL_Event)) C program indicates).
From the looks of it, the line should read
[event-ptr (malloc (ctype-sizeof _SDL_Event*))]

(correct me if I'm wrong!)

Hey @lockie I believe you are correct! Amending my comments

@rjungemann All right, thanks.
You might also want to do the same change in your PR #8

authors: MrSiuol adamlwgriffiths lockie rjungemann

repo: cosmez/racket-sdl


text:
Cosmic Cat is extremely buggy

Type
Page Renderer
Page URL
https://www.youtube.com/
Branch
main
Version
0.7.1
A brief description
Well it doesn't work that properly as advertised.
Certain categories just say request error and the player and comments don't work.
Others don't work as expected but only Home and Search work.
I even sent images and console output.
Please update it. Thanks!!!!
Screenshots or videos

Console output
Error with Permissions-Policy header: Unrecognized feature: 'ch-ua-form-factor'.
Error with Permissions-Policy header: Origin trial controlled feature not enabled: 'compute-pressure'.
userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:6507 Storage.init storage has init.
no-youtube-shorts-content-script.js:1 You opened YouTube, removing shorts...
userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:7434 [Searchbox] Couldn't init!
ReferenceError: yt is not defined
at Proxy. (userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:7422:13)
at wt (:9:89)
at t. (:66:129)
at wt (:9:89)
at r (:24:484)
at :25:112
at :76:491
at v (:77:15)
Trying again in 1 second.
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:7434
wt @ VM301:9
t. @ VM301:66
wt @ VM301:9
r @ VM301:24
(anonymous) @ VM301:25
(anonymous) @ VM301:76
v @ VM301:77
yt @ VM299 content.js:8
f @ VM299 content.js:68
t @ VM299 content.js:69
setTimeout (async)
setTimeout @ VM299 content.js:47
processMessage @ VM299 content.js:50
(anonymous) @ VM299 content.js:77
_ @ VM299 content.js:69
wt @ VM301:9
f @ VM301:76
l @ VM301:78
(anonymous) @ VM301:78
Wn @ VM301:17
send @ VM301:78
To @ VM301:25
$o @ VM301:25
wt @ VM301:9
a @ VM301:66
value @ VM301:70
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:7379
Promise.then (async)
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:7322
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:7472
wt @ VM301:9
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:1
window.__f__lwbbi37d.mpa @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:1
wt @ VM301:9
o @ VM301:80
(anonymous) @ VM301:81
set @ VM301:89
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:1
Wo @ VM299 content.js:56
Ho @ VM299 content.js:57
(anonymous) @ VM299 content.js:54
(anonymous) @ VM299 content.js:69
yt @ VM299 content.js:8
t @ VM299 content.js:9
_ @ VM299 content.js:69
wt @ VM301:9
f @ VM301:76
l @ VM301:78
(anonymous) @ VM301:78
Wn @ VM301:17
send @ VM301:78
(anonymous) @ VM301:81
v @ VM301:77
yt @ VM299 content.js:8
f @ VM299 content.js:68
d @ VM299 content.js:71
(anonymous) @ VM299 content.js:71
wn @ VM299 content.js:14
send @ VM299 content.js:70
w @ VM299 content.js:54
No @ VM299 content.js:56
(anonymous) @ VM299 content.js:55
yt @ VM299 content.js:8
t @ VM299 content.js:9
Xo @ VM299 content.js:51
Zo @ VM299 content.js:64
(anonymous) @ VM299 content.js:63
(anonymous) @ VM299 content.js:14
yt @ VM299 content.js:8
t @ VM299 content.js:9
(anonymous) @ VM299 content.js:14
(anonymous) @ VM299 content.js:59
userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:6697 251 'ms'
userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:7372
   GET https://raw.githubusercontent.com/cosmic-cat-yt/cosmic-cat-i18n/main/version.json 404 (Not Found)

(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:7372
Promise.then (async)
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:7322
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:7472
wt @ VM301:9
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:1
window.__f__lwbbi37d.mpa @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:1
wt @ VM301:9
o @ VM301:80
(anonymous) @ VM301:81
set @ VM301:89
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:1
Wo @ VM299 content.js:56
Ho @ VM299 content.js:57
(anonymous) @ VM299 content.js:54
(anonymous) @ VM299 content.js:69
yt @ VM299 content.js:8
t @ VM299 content.js:9
_ @ VM299 content.js:69
wt @ VM301:9
f @ VM301:76
l @ VM301:78
(anonymous) @ VM301:78
Wn @ VM301:17
send @ VM301:78
(anonymous) @ VM301:81
v @ VM301:77
yt @ VM299 content.js:8
f @ VM299 content.js:68
d @ VM299 content.js:71
(anonymous) @ VM299 content.js:71
wn @ VM299 content.js:14
send @ VM299 content.js:70
w @ VM299 content.js:54
No @ VM299 content.js:56
(anonymous) @ VM299 content.js:55
yt @ VM299 content.js:8
t @ VM299 content.js:9
Xo @ VM299 content.js:51
Zo @ VM299 content.js:64
(anonymous) @ VM299 content.js:63
(anonymous) @ VM299 content.js:14
yt @ VM299 content.js:8
t @ VM299 content.js:9
(anonymous) @ VM299 content.js:14
(anonymous) @ VM299 content.js:59
userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:7377 SyntaxError: Unexpected non-whitespace character after JSON at position 3 (line 1 column 4)
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:7377
Promise.catch (async)
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:7377
Promise.then (async)
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:7322
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:7472
wt @ VM301:9
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:1
window.__f__lwbbi37d.mpa @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:1
wt @ VM301:9
o @ VM301:80
(anonymous) @ VM301:81
set @ VM301:89
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:1
Wo @ VM299 content.js:56
Ho @ VM299 content.js:57
(anonymous) @ VM299 content.js:54
(anonymous) @ VM299 content.js:69
yt @ VM299 content.js:8
t @ VM299 content.js:9
_ @ VM299 content.js:69
wt @ VM301:9
f @ VM301:76
l @ VM301:78
(anonymous) @ VM301:78
Wn @ VM301:17
send @ VM301:78
(anonymous) @ VM301:81
v @ VM301:77
yt @ VM299 content.js:8
f @ VM299 content.js:68
d @ VM299 content.js:71
(anonymous) @ VM299 content.js:71
wn @ VM299 content.js:14
send @ VM299 content.js:70
w @ VM299 content.js:54
No @ VM299 content.js:56
(anonymous) @ VM299 content.js:55
yt @ VM299 content.js:8
t @ VM299 content.js:9
Xo @ VM299 content.js:51
Zo @ VM299 content.js:64
(anonymous) @ VM299 content.js:63
(anonymous) @ VM299 content.js:14
yt @ VM299 content.js:8
t @ VM299 content.js:9
(anonymous) @ VM299 content.js:14
(anonymous) @ VM299 content.js:59
ryd.content-script.js:843 initializing selectors
main.js:208 [Youtube-shorts block] Youtube-shorts block activated.
main.js:208 [Youtube-shorts block] "Hide shorts video" is enabled by default!
If you don't want to do that, please disable in option page!
ryd.content-script.js:853 {buttons: {…}, dislikeTextContainer: Array(4), likeTextContainer: Array(4), menuContainer: Array(1), roundedDesign: Array(2)}
www.youtube.com/:1 The resource https://i.ytimg.com/generate_204 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate as value and it is preloaded intentionally.
Error with Permissions-Policy header: Unrecognized feature: 'ch-ua-form-factor'.
Error with Permissions-Policy header: Origin trial controlled feature not enabled: 'compute-pressure'.
userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:6507 Storage.init storage has init.
no-youtube-shorts-content-script.js:1 You opened YouTube, removing shorts...
userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:7372
   GET https://raw.githubusercontent.com/cosmic-cat-yt/cosmic-cat-i18n/main/version.json 404 (Not Found)

(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:7372
Promise.then (async)
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:7322
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:7472
wt @ VM359:9
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:1
window.__f__lwb66cxi.jf @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:1
wt @ VM359:9
o @ VM359:80
(anonymous) @ VM359:81
set @ VM359:89
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:1
Wo @ VM351 content.js:56
Ho @ VM351 content.js:57
(anonymous) @ VM351 content.js:54
(anonymous) @ VM351 content.js:69
yt @ VM351 content.js:8
t @ VM351 content.js:9
_ @ VM351 content.js:69
wt @ VM359:9
f @ VM359:76
l @ VM359:78
(anonymous) @ VM359:78
Wn @ VM359:17
send @ VM359:78
(anonymous) @ VM359:81
v @ VM359:77
yt @ VM351 content.js:8
f @ VM351 content.js:68
d @ VM351 content.js:71
(anonymous) @ VM351 content.js:71
wn @ VM351 content.js:14
send @ VM351 content.js:70
w @ VM351 content.js:54
No @ VM351 content.js:56
(anonymous) @ VM351 content.js:55
yt @ VM351 content.js:8
t @ VM351 content.js:9
Xo @ VM351 content.js:51
Zo @ VM351 content.js:64
(anonymous) @ VM351 content.js:63
(anonymous) @ VM351 content.js:14
yt @ VM351 content.js:8
t @ VM351 content.js:9
(anonymous) @ VM351 content.js:14
(anonymous) @ VM351 content.js:59
userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:7377 SyntaxError: Unexpected non-whitespace character after JSON at position 3 (line 1 column 4)
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:7377
Promise.catch (async)
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:7377
Promise.then (async)
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:7322
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:7472
wt @ VM359:9
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:1
window.__f__lwb66cxi.jf @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:1
wt @ VM359:9
o @ VM359:80
(anonymous) @ VM359:81
set @ VM359:89
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:1
Wo @ VM351 content.js:56
Ho @ VM351 content.js:57
(anonymous) @ VM351 content.js:54
(anonymous) @ VM351 content.js:69
yt @ VM351 content.js:8
t @ VM351 content.js:9
_ @ VM351 content.js:69
wt @ VM359:9
f @ VM359:76
l @ VM359:78
(anonymous) @ VM359:78
Wn @ VM359:17
send @ VM359:78
(anonymous) @ VM359:81
v @ VM359:77
yt @ VM351 content.js:8
f @ VM351 content.js:68
d @ VM351 content.js:71
(anonymous) @ VM351 content.js:71
wn @ VM351 content.js:14
send @ VM351 content.js:70
w @ VM351 content.js:54
No @ VM351 content.js:56
(anonymous) @ VM351 content.js:55
yt @ VM351 content.js:8
t @ VM351 content.js:9
Xo @ VM351 content.js:51
Zo @ VM351 content.js:64
(anonymous) @ VM351 content.js:63
(anonymous) @ VM351 content.js:14
yt @ VM351 content.js:8
t @ VM351 content.js:9
(anonymous) @ VM351 content.js:14
(anonymous) @ VM351 content.js:59
userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:3676 {primary: {…}, secondary: {…}, alternative: {…}}
userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:6822 473 'ms'
ryd.content-script.js:843 initializing selectors
main.js:208 [Youtube-shorts block] Youtube-shorts block activated.
main.js:208 [Youtube-shorts block] "Hide shorts video" is enabled by default!
If you don't want to do that, please disable in option page!
ryd.content-script.js:853 {buttons: {…}, dislikeTextContainer: Array(4), likeTextContainer: Array(4), menuContainer: Array(1), roundedDesign: Array(2)}
userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:524
   POST https://www.youtube.com/youtubei/v1/player?key=AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8&prettyPrint=false 400 (Bad Request)

post @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:524
await in post (async)
getPlayerData @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:5594
grabPlayerData @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:5614
vorapisPlayer @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:6498
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:6790
e @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
t @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
wt @ VM359:9
t. @ VM359:66
wt @ VM359:9
r @ VM359:24
(anonymous) @ VM359:25
(anonymous) @ VM359:76
v @ VM359:77
yt @ VM351 content.js:8
f @ VM351 content.js:68
t @ VM351 content.js:69
setTimeout (async)
setTimeout @ VM351 content.js:47
processMessage @ VM351 content.js:50
(anonymous) @ VM351 content.js:77
_ @ VM351 content.js:69
wt @ VM359:9
f @ VM359:76
l @ VM359:78
(anonymous) @ VM359:78
Wn @ VM359:17
send @ VM359:78
To @ VM359:25
$o @ VM359:25
wt @ VM359:9
a @ VM359:66
value @ VM359:70
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
c @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
fireWith @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
fire @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
c @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
fireWith @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
ready @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
$ @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:5635 [Vorapis Player] Player API response:
{error: {…}}
userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:6067 No fmt
TypeError: Cannot read properties of undefined (reading 'adaptiveFormats')
at craftVideoStreams (userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:6065:68)
at userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:5646:17
at async grabPlayerData (userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:5614:15)
craftVideoStreams @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:6067
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:5646
Promise.then (async)
grabPlayerData @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:5614
vorapisPlayer @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:6498
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:6790
e @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
t @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
wt @ VM359:9
t. @ VM359:66
wt @ VM359:9
r @ VM359:24
(anonymous) @ VM359:25
(anonymous) @ VM359:76
v @ VM359:77
yt @ VM351 content.js:8
f @ VM351 content.js:68
t @ VM351 content.js:69
setTimeout (async)
setTimeout @ VM351 content.js:47
processMessage @ VM351 content.js:50
(anonymous) @ VM351 content.js:77
_ @ VM351 content.js:69
wt @ VM359:9
f @ VM359:76
l @ VM359:78
(anonymous) @ VM359:78
Wn @ VM359:17
send @ VM359:78
To @ VM359:25
$o @ VM359:25
wt @ VM359:9
a @ VM359:66
value @ VM359:70
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
c @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
fireWith @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
fire @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
c @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
fireWith @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
ready @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
$ @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:6240 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'author')
at craftVarYtPlayer (userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:6240:60)
at userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:6218:17
craftVarYtPlayer @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:6240
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:6218
Promise.then (async)
craftVideoStreams @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:6116
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:5646
Promise.then (async)
grabPlayerData @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:5614
vorapisPlayer @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:6498
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:6790
e @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
t @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
wt @ VM359:9
t. @ VM359:66
wt @ VM359:9
r @ VM359:24
(anonymous) @ VM359:25
(anonymous) @ VM359:76
v @ VM359:77
yt @ VM351 content.js:8
f @ VM351 content.js:68
t @ VM351 content.js:69
setTimeout (async)
setTimeout @ VM351 content.js:47
processMessage @ VM351 content.js:50
(anonymous) @ VM351 content.js:77
_ @ VM351 content.js:69
wt @ VM359:9
f @ VM359:76
l @ VM359:78
(anonymous) @ VM359:78
Wn @ VM359:17
send @ VM359:78
To @ VM359:25
$o @ VM359:25
wt @ VM359:9
a @ VM359:66
value @ VM359:70
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
c @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
fireWith @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
fire @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
c @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
fireWith @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
ready @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
$ @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:4555 [Comments] Couldn't check if user is logged in or out: Error: TypeError: Cannot read properties of undefined (reading 'buttonRenderer')
at Object.init (userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:4547:31)
init @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:4555
await in init (async)
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:6778
e @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
t @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
wt @ VM359:9
t. @ VM359:66
wt @ VM359:9
r @ VM359:24
(anonymous) @ VM359:25
(anonymous) @ VM359:76
v @ VM359:77
yt @ VM351 content.js:8
f @ VM351 content.js:68
t @ VM351 content.js:69
setTimeout (async)
setTimeout @ VM351 content.js:47
processMessage @ VM351 content.js:50
(anonymous) @ VM351 content.js:77
_ @ VM351 content.js:69
wt @ VM359:9
f @ VM359:76
l @ VM359:78
(anonymous) @ VM359:78
Wn @ VM359:17
send @ VM359:78
To @ VM359:25
$o @ VM359:25
wt @ VM359:9
a @ VM359:66
value @ VM359:70
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
c @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
fireWith @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
fire @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
c @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
fireWith @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
ready @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
$ @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:4598 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'commentRenderer')
at Object.sortComments (userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:4598:169)
at Object.init (userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:4565:35)
sortComments @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:4598
init @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:4565
await in init (async)
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:6778
e @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
t @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
wt @ VM359:9
t. @ VM359:66
wt @ VM359:9
r @ VM359:24
(anonymous) @ VM359:25
(anonymous) @ VM359:76
v @ VM359:77
yt @ VM351 content.js:8
f @ VM351 content.js:68
t @ VM351 content.js:69
setTimeout (async)
setTimeout @ VM351 content.js:47
processMessage @ VM351 content.js:50
(anonymous) @ VM351 content.js:77
_ @ VM351 content.js:69
wt @ VM359:9
f @ VM359:76
l @ VM359:78
(anonymous) @ VM359:78
Wn @ VM359:17
send @ VM359:78
To @ VM359:25
$o @ VM359:25
wt @ VM359:9
a @ VM359:66
value @ VM359:70
(anonymous) @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
c @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
fireWith @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
fire @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
c @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
fireWith @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
ready @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
$ @ userscript.html?name=Cosmic-Cat.user.js&id=d05a2aa2-1d30-4fc6-97b0-cb7a800eb24a:329
watch:1 The resource https://rr4---sn-gqn-vu2y.googlevideo.com/generate_204 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate as value and it is preloaded intentionally.
watch:1 The resource https://i.ytimg.com/generate_204 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate as value and it is preloaded intentionally.
watch:1 The resource https://rr4---sn-gqn-vu2y.googlevideo.com/generate_204?conn2 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate as value and it is preloaded intentionally.

As per the description of the repo, the person who forked it doesn't know Javascript and can't help. It makes no sense, because why would you fork it without knowing the language it's written in

repo: cosmic-cat-yt/Cosmic-Cat

license: Unlicense


text:
Add Layer Toggle to Stage 6 and various guideline edits

Add layer_toggle to Stage 6
Various guideline text and styling edits

Checked layer toggle on my system, seems to be working properly.

authors: heywooddogwood patudom

repo: cosmicds/hubbleds


text:
Create pre-commit hook to run all the linters

Summary

There are several different linters and we have make targets to run formatters. We should add a pre-commit hook which runs all the linters.

For Admin Use

[ ] Not duplicate issue
[ ] Appropriate labels applied
[ ] Appropriate contributors tagged/assigned

To my knowledge, there are 2 ways of doing this :

Create a .pre-commit-config.yaml, which involves installing pre-commit package.
Create a bash file in .git/hooks folder, but this one can not be push on remote repo, therefore require a manual move command.

I don't know which way is better ?

it might be nice to use the .pre-commit-config.yaml, but I'm currently using a pre-commit hook locally that looks like
#!/bin/sh

echo "running pre-commit hook"
make lint-fix-changed
make docs-lint-changed

go_files="$(git diff --name-only | grep \.go$)"
for f in $go_files; do
  git add $f
done

md_files="$(git diff --name-only | grep \.md$)"
for f in $md_files; do
  git add $f
done

A pre-commit hook in the repo with a command to symlink them might also do the trick. Symlink allows for updates to the pre-commit in the repo to be reflected upon changes without manually moving it. But it has the same drawback of requiring that additional step.

I guess I will create a .pre-commit-config.yaml ? Or you prefer a hook locally like yours ?

I think a simple solution right now could be to create a pre-commit hook in the repo, and add a Makefile target that will do a symlink, this way we can update the pre-commit hook over time. What do you think?

Yes. I think that would be the optimal solution.

authors: chatton expertdicer

repo: cosmos/ibc-go