TimeoutError: Timed out after 30000 ms while trying to connect to Chrome!

Hello
I try to implement/deploy puppeteer on Google Cloud but I have some issues. What I don't understand, it worked well 2 days ago.
Since then, I have this error:
TimeoutError: Timed out after 30000 ms while trying to connect to Chrome! The only Chrome revision guaranteed to work is r674921 at Timeout.onTimeout
I ran this command and everything seems fine : DEBUG=* node app.js
Version puppeteer : ^1.19.0
Version Node : v8.11.3
And here the code:
`async function main_screenshot(project_id) {
try {
const browser =  await puppeteer.launch({
headless: true,
args: ["--window-size=1440,1000", "--no-sandbox", "--disable-setuid-sandbox", "--disable-gpu"]
});
// const browser = await puppeteer.launch({dumpio: true});
const page = await browser.newPage()
page.setUserAgent('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36')
page.setViewport({ width: 1440, height: 721 })
console.log('entering in screenshot zone')
page.setDefaultNavigationTimeout(30000)
await page.goto('https://app.slack.com/client/TLW4JE7AA/CLTFQT9GC')
await page.waitFor(3000)
await page.type('#email', process.env.SLACK_EMAIL)
await page.type('#password', process.env.SLACK_PWD)
await page.waitFor(3000)
await page.click('#signin_btn')
console.log('credentials done')
await page.waitFor(3000)
console.log('so?')
await page.goto('https://app.slack.com/client/TLW4JE7AA/CLTFQT9GC')
await page.waitFor(3000)
console.log('connected to the right environment')
const div = await page.$$('.c-message.c-message--light')
var nuwwmber_loop= 0
for (var i = div.length ; i > 0; i--) {
var text = await (await div[i - 1].getProperty('textContent')).jsonValue();
  if(text.includes(project_id)) {
    number_loop = i
    break
  }
}
// const text = await (await div.getProperty('textContent')).jsonValue();

 const shotResult = await div[number_loop-1].screenshot();
console.log(shotResult)
cloudinaryOptions = {
  public_id: `${project_id}`
}

const results = await uploadToCloudinary(shotResult, cloudinaryOptions)
console.log(results)
browser.close()
return results

} catch (e) {
console.log(e)
}
}`

Quick update I downloaded the previous code, no really big changes...

Did you get it to work? Same problem here ):

not yet :/

Same here. Cannot get it to work

I use "puppeteer-core": "^1.19.0", when I use headless: false, it can work. But when I use headless:true, it will be TimeoutError: Navigation Timeout Exceeded: 30000ms exceeded

I also have this issue,
Node v10.15.3
Puppeteer v1.19.0

I use "puppeteer-core": "^1.19.0",
when I use headless: false, it can work.
But when I use headless:true, it will be TimeoutError: Navigation Timeout Exceeded: 30000ms exceeded

Yes, but it's a different kind of error :)

bumping because I also get this error and can't seem to find a solution. I get both TimeoutError: Navigation Timeout Exceeded: 30000ms exceeded and TimeoutError while connecting to Chrome :(

I'm getting the similar error:
(node:11400) UnhandledPromiseRejectionWarning: TimeoutError: Timed out after 40000 ms whil e trying to connect to Chrome! The only Chrome revision guaranteed to work is r686378     at Timeout.onTimeout (H:\node_modules\puppeteer\lib\Launcher.js:359:14)     at ontimeout (timers.js:436:11)     at tryOnTimeout (timers.js:300:5)     at listOnTimeout (timers.js:263:5)     at Timer.processTimers (timers.js:223:10) (node:11400) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error ori ginated either by throwing inside of an async function without a catch block, or by reject ing a promise which was not handled with .catch(). (rejection id: 1) (node:11400) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In  the future, promise rejections that are not handled will terminate the Node.js process wi th a non-zero exit code.
I've tried numerous 'fixes' and nothing seems to work.
Node v10.16.3
Puppeteer v10.16.3

Having the same problem was anybody able to fix this?

If it helps anyone my issue with was due to the usage of Puppeteer in Google Cloud Function and have it running in the background. I changed the function to respond only after Puppeteer is done and it worked just fine.

If it helps anyone my issue with was due to the usage of Puppeteer in Google Cloud Function and have it running in the background. I changed the function to respond only after Puppeteer is done and it worked just fine.

That's exactly my problem. What exactly do you mean by changing it to respond only after Puppeteer is done?

@bruriah1999 your entry function will have a response call. Once invoked the functions technically terminated which means all other tasks are considered background tasks and won’t execute.
Check the Function Execution Timeline in this article https://cloud.google.com/functions/docs/concepts/exec

@tbadlov thank you man, you saved my day, i was struggling here for hours.

Unfortunately i'm having this issue with 2.1.1
Maybe something that could help is that i'm running it like
ip netns exec bet365 node foobar
Without using the namespace it's working as expected...

I had the same problem.
I noticed that if you deploy it using the PUB/SUB trigger, this would happen. If you use HTTP as trigger instead, it runs just fine.
node.js 10 (beta)
"puppeteer": "^2.1.1",
"puppeteer-extra": "^3.1.9",

I'm having this issue with "puppeteer": "^3.0.1"  happens randomly after several hundreds of browsers have been launched and closed previously.
I'm using GCE instances.
Timed out after 30000 ms while trying to connect to the browser! Only Chrome at revision r737027 is guaranteed to work
I'm also using these extensions
 "puppeteer-extra": "^3.1.9",
   "puppeteer-extra-plugin-adblocker": "^2.11.3",
   "puppeteer-extra-plugin-anonymize-ua": "^2.2.8",
   "puppeteer-extra-plugin-block-resources": "^2.2.4",
   "puppeteer-extra-plugin-stealth": "^2.4.9"

I am also having this issue
using puppeteer 3.1.0
Uncaught (in promise) TimeoutError: Timed out after 30000 ms while trying to connect to the browser! Only Chrome at revision r756035 is guaranteed to work.

@mathiasbynens #6011 meant to fix **** Exception caught: TimeoutError: Timed out after 30000 ms while trying to connect to the browser! Only Chrome at revision r756035 is guaranteed to work.. ? I updated puppeteer to v4 and still seeing this from time to time.

Seeing this error
"puppeteer": "^3.0.2"

i'm obtaining this error randomly after upgrading to puppeteer 3.1
using puppeteer 2 on the same test i never got this error.

moving to puppeteer 5 even i'm not able to understand if this fix https://github.com/puppeteer/puppeteer/pull/6011 is inside puppeteer 5

testing puppeteer 5.2.1.

I'm getting this too;
TimeoutError: Timed out after 30000 ms while trying to connect to the browser! Only Chrome at revision r782078 is guaranteed to work

having the same issue. Using puppeteer 4.0.1.

same! @dcts

@westonwatson  @dcts  @CalebDelbridge  which version of puppeteer are you using?

My setup is

Puppeteer 4.0.1
Node 10.18.1 runtime on firebase.
I run the cloud function also with 1GB memory:

functions.runWith({ memory: "1GB" }).firestore.document(...).onCreate(...)

Still working on this so if anyone has same issue or suggestions I am very open :)

@dcts try upgrading to puppeteer 5.2.1

@andreabisello just upgraded but still I get the same error. Which is really weird, i have now puppeteer 5.2.1 running, and during install it even logged installing chromium r782078

Agreed with @dcts, I am getting the same error with puppeteer 5.2.1

I'm facing the same error for any puppeteer version > 2.0.0
I upgraded recently to 5.2.1 to see if the error is fixed, but the problem persists.
I'm surprised there are not more people facing the same problem.

@shubhams You summoned me my Lord? :)
I'm getting this issue atm here's my details. I'm going to try with previous versions
Node V10.x
"chrome-aws-lambda": "^5.1.0",
"puppeteer-core": "^5.1.0"

I do see chrome responding to Browser.getVersion
2020-08-08T22:12:22.434Z puppeteer:protocol:RECV ◀
{
    "id": 17,
    "result": {
        "protocolVersion": "1.3",
        "product": "HeadlessChrome/84.0.4147.0",
        "revision": "@926b5cca60c2451e9d55b4556fc2c328030736d7",
        "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/84.0.4147.0 Safari/537.36",
        "jsVersion": "8.4.379"
    }
}

@shubhams  i think there is something that spawn the problem in our test cases. for example, i get the problem only in continous integration Atlassian Bamboo windows 10 server, even it simply call the same command of the same project i will call in my windows 10 machine, and i never found the problem calling the same command from my pc.
i confirm problem started upgrading from version 2.0.0,
but in my case, maybe it only luck for now, 5.2.1 solved the issue. i never go the issue in the latest 7 days of test.
are you able to crete a repository that reproduce the issue in a minimal configuration?

@andersonaguiar I could try to setup a repo to recreate the bug, but Im not sure how i would do that, since it only occurs on google cloud. On my local machine it works without error. Would it be usefull to provide the whole google cloud function code without credentials to google cloud? (then the person looking into it would need a google account themself and create a cloud function, enable billing etc...).

@dcts, Can you reproduce the issue in a docker container? I am getting the same error in my docker.

Getting the same issue, puppeteer 3.3.0 with codeceptjs

This needs to be opened, getting same issue with puppeteer latest running from CI server, only headless: true works.

instead in my use case puppeteer 5.2.1 seems to have solved the issue.
i'm using atlassian bamboo as continous integration,
i have 4 task running every day but from about one months i never got the timeout issue.
maybe there is something different we are missing

Finally I solved it (at least for my condition).
I'm using Cloud Functions as a Background Function (Triggers when a Firestore Document is created. Though should work for PUB/SUB I imagine).
I needed to make my exported function asynchronous.

And then you need to await the result.

Otherwise, if you look at the Cloud Function logs, you'll see that your function starts and finishes very quickly (like 200ms). After I made my function asynchronous, it took around 13000ms and stopped giving errors.
Here's my logs:
BEFORE

AFTER

Bump, tried 5.2.1, 2.1.0. Both get the same timeout error.

Hello
I have this issue on and off. It seems that if you initialise the browser object wrong (because your code is wrong) you can get this error
Also, if your lambda does not have internet access
For me 5.2.1 works, with the right code
Also, I use https://github.com/Seikho/node-http-ping to confirm that I can connect to sites over http or https
Sorry I don't have anymore advice

@WinstonN Thanks for your reply and the tips. But I don't get what you mean with

It seems that if you initialise the browser object wrong (because your code is wrong) you can get this error

Can you provide an example of code that correctly initialized the browser object? I have my example fully working on my local environment and also on https://try-puppeteer.appspot.com/.
Heres example code (running a search on amazon):
const puppeteer = require('puppeteer'); // not needed on https://try-puppeteer.appspot.com/
const browser = await puppeteer.launch({args: [ '--no-sandbox']});
const context = await browser.createIncognitoBrowserContext();
const page = await context.newPage();
const searchQuery = "laptop";
const url = `https://www.amazon.com/s?k=${searchQuery}`;

await page.goto(url);
console.log(await page.content());
await page.screenshot({path: 'screenshot.png'});
await context.close();
await browser.close();

@mathiasbynens I belive this should be reopened, still a lot of people seem to have this error.

@dcts is that your entire code? You can't use "await" outside of an asynchronous function

@dcts is that your entire code? You can't use "await" outside of an asynchronous function

No that is code that you can insert to try-puppeteer. But to run it locally you can simply use a node in experimental mode where await is enabled
node --experimental-repl-await

Gotcha. Where are you deploying? Is this for Google Cloud?

Yes google-cloud but I also tried using firebase cloud-functions. Error occurs on both.

It took me forever to get it working on Google Cloud. Can you post your code that you're deploying to Google Cloud?

I am also experiencing this issue in puppeteer 2.1.1 used with AWS batch jobs.  What's strange is the code base in our dev and prod environments is identical and had been running for a while.  This week, it quit working in prod, but still runs in dev.

I got this same error (Timed out after 30000 ms while trying to connect to the browser! Only Chrome at revision r818858 is guaranteed to work.) when trying to deploy Puppeteer 5.5.0 to Google Cloud Functions.
I found that it was hanging at await browser.newPage();
This is similar to this issue
Upgrading to Node 12 made no difference.  I got it running by downgrading to Puppeteer 2.1.1, and increasing the function memory to 512 MB.
I increased the function memory because I got an out of memory error with 2.1.1.  I did check if there was some kind of silent memory issue with 5.5.0, but no.  Even with 4GB this didn’t run.

Same error. Puppeteer 5.5.0 running Google Cloud. Our applications is running about 1 year and now in our dev environments works but stopped working in prod in this week.  Somebody can help?

Has this problem been solved？How to solve this problem？

I'm experiencing same thing using lighthouse-puppeteer on an Unbuntu 20 VM on GCP.
Workaround I found, is running killall chrome and giving it 5 seconds before retrying.
I know that's unlikely to help many of you, cause my use-case is weird.  🤞

How do you handle it？

@bruriah1999 your entry function will have a response call. Once invoked the functions technically terminated which means all other tasks are considered background tasks and won’t execute.
Check the Function Execution Timeline in this article https://cloud.google.com/functions/docs/concepts/exec

How did you solve it?What is the version of puppeter used?I had this problem with CentOS

I am experiencing the same issue. It works in local environment but doesn't work on Google Cloud Functions.
Tried with both options: puppeteer only or puppeteer-core, chrome-aws-lambda.

I am experiencing the same issue. It works in local environment but doesn't work on Google Cloud Functions.
Tried with both options: puppeteer only or puppeteer-core, chrome-aws-lambda.

El lun., 7 de diciembre de 2020 4:51 a. m., 乔纯美<EMAIL_ADDRESS>escribió:

Has this problem been solved？How to solve this problem？
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/puppeteer/puppeteer/issues/4796#issuecomment-739838836,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ARXQAMYPPWR6JH4SDKF3ZALSTSXTZANCNFSM4IJBDN5Q
.

El lun., 7 de diciembre de 2020 4:51 a. m., 乔纯美<EMAIL_ADDRESS>escribió:

Has this problem been solved？How to solve this problem？
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/puppeteer/puppeteer/issues/4796#issuecomment-739838836,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ARXQAMYPPWR6JH4SDKF3ZALSTSXTZANCNFSM4IJBDN5Q
.

seems like a live issue. Funnily enough never had it before with Puppeteer

seems like a live issue. Funnily enough never had it before with Puppeteer

The issue got resolved when I updated the chrome binary to the latest version

The issue got resolved when I updated the chrome binary to the latest version

me daba el mismo error soluciono agregando read_timeout y cambiar el tiempo
puppeteer.launch ({ read_timeout: 30000
});

me daba el mismo error soluciono agregando read_timeout y cambiar el tiempo
puppeteer.launch ({ read_timeout: 30000
});

The issue got resolved when I updated the chrome binary to the latest version

what is the "latest version" you upgraded to ?

The issue got resolved when I updated the chrome binary to the latest version

what is the "latest version" you upgraded to ?

Same issue on google cloud functions. It works with a HTTP request trigger, but not with a pubsub function.

Same issue on google cloud functions. It works with a HTTP request trigger, but not with a pubsub function.

Hi everyone! I had a similar error: TimeoutError: Timed out after 30000 ms while trying to connect to the browser! Only Chrome at revision r818858 is guaranteed to work.
I fixed it by specifying that particular revision number when launching my puppeteer browser. Note that the revision number on the second line was simply copied and pasted from the error message I received.
  const myFunc = async () => {
    const revisionInfo = await browserFetcher.download('818858');

    puppeteer.launch({ executablePath: revisionInfo.executablePath })
      .then(async browser => {
        const page = await browser.newPage();
        ...
      }
  }

Read more about browserFetcher here.

@mpstanford Does that work inside Firebase/Cloud Functions? Also, after downloading the latest Puppeteer, I get type error saying the method doesn't exist.

Finally I solved it (at least for my condition).
I'm using Cloud Functions as a Background Function (Triggers when a Firestore Document is created. Though should work for PUB/SUB I imagine).
I needed to make my exported function asynchronous.

And then you need to await the result.

Otherwise, if you look at the Cloud Function logs, you'll see that your function starts and finishes very quickly (like 200ms). After I made my function asynchronous, it took around 13000ms and stopped giving errors.
Here's my logs:
BEFORE

AFTER

This gave me the answer.  My scenario was falling due to async calls. The Cloud Function turned off the proccess before puppeteer can generate an instance of the browser.
That because my code was executing everything async . I did not consider that after response.send  on a fire base function is called the thread is killed or shutted down, so when it invoques the browser instance , there is not an instance ready

Because all task is asynchronous, you must set response return after brower.close(). That work perfect for me
await browser.close();
res.status(200).send("ok");

I solved this issue uninstalling and reinstalling puppeteer.
Old version: 9.1
Current version: 10.0

Same problem here ):

Issue still persists. Worked on my Windows but on WSL2 Ubuntu 20.04, doesn't work.
Error:
30000 ms while trying to connect to the browser! Only Chrome at revision r901912 is guaranteed to work.

package.json:
  "dependencies": {
    "axios": "^0.23.0",
    "axios-rate-limit": "^1.3.0",
    "canvas": "^2.8.0",
    "discord.js": "^12.5.3",
    "dotenv": "^10.0.0",
    "fuse.js": "^6.4.6",
    "glob": "^7.1.7",
    "memory-cache": "^0.2.0",
    "puppeteer": "^10.4.0",
    "turndown": "^7.1.1"
  }

npm install output:
><EMAIL_ADDRESS>install /home/putte/dev/discord-spaghetti-bot/node_modules/puppeteer
> node install.js

Downloading Chromium r901912 - 140.9 Mb [====================] 99% 0.0s
Chromium (901912) downloaded to /home/putte/dev/discord-spaghetti-bot/node_modules/puppeteer/.local-chromium/linux-901912

Chromium version number matches the "guaranteed to work" version

I had the issue on firebase/gcloud, but only once, so I just re-run the function and worked fine, couldn't replicate it again...

For those facing a similar issue, note that this error can come from your process being starved by out of memory.
For us, we faced this issue because our kubernetes pod did not have enough memory to answer multiple concurrent requests. Increasing your allocated memory could solve your issue. I suspect too little cpu can also affect the performance as well.

This Error started happening to me, once the cloud function had more invokations then usually. I added more memory to the cloud function and it worked again.

I'm having the same issue. For about 8 or 9 months my function worked flawless every week. But this week I started to face this error too. It is a azure function and it was on puppeteer 9. Changed to puppeteer 13 and the same is happening.
The chromium version in node_modules is exactly the same stated in the error message. I out of ideas on how to solve it.

I got this today after running Chrome in a newly started container, so I don't think it's the remaining Chrome processes issue covered in #6011.

same here. got this issue yesterday two times. not sure if the solution is released in the mentioned PR

I am facing the same issue since last 1 week. Anyone got fix for this.

Same issue here, using xvfb
Node v16

For me both (cli and node pkg) is is working...
I'm just using to test:
{
  "dependencies": {
    "puppeteer": "^13.0.1",
    "wappalyzer": "^6.9.12"
  }
}

but i will implement using a Docker image in the next days, after then i come back again to say if works o not.

Same issue here

Same here, working in dev mode, not working in prod mode.
"puppeteer": "^13.1.1",
node: v12.15.0

Same here, working in dev mode, not working in prod mode.
"puppeteer": "^13.1.1", node: v12.15.0

Is it in  headless: false mode ?

@alexsunday  yes, headless = false.

I'm also having this issue, but only with headless: false.
Unfortunately, I need headless: true for extensions.

I am also having the same problem. However, when I turn on the x server, the problem goes away. Would it be the case that the browser dependency (depending on the version) actually depends on something from X? This thing about "30000" ms really sounds like X11 waiting sh!t (I am being naive here).

Hi everyone! I had a similar error: TimeoutError: Timed out after 30000 ms while trying to connect to the browser! Only Chrome at revision r818858 is guaranteed to work.
I fixed it by specifying that particular revision number when launching my puppeteer browser. Note that the revision number on the second line was simply copied and pasted from the error message I received.
  const myFunc = async () => {
    const revisionInfo = await browserFetcher.download('818858');

    puppeteer.launch({ executablePath: revisionInfo.executablePath })
      .then(async browser => {
        const page = await browser.newPage();
        ...
      });
  }

Read more about browserFetcher here.
I'm getting Cannot read property 'executablePath' of undefined, any idea what i missed out?
https://stackoverflow.com/questions/71555962/puppeteer-cannot-read-property-executablepath-of-undefined

hey @rainbowhat i followed what you suggested and it removed the X display error for me but i got this error now for browser fetcher -
BrowserFetcher {
_product: 'chrome',
_downloadsFolder: '/root/node_modules/puppeteer/.local-chromium',
_downloadHost: 'https://storage.googleapis.com',
_platform: 'linux'
}
/root/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserFetcher.js:367
const error = new Error(Download failed: server returned code ${response.statusCode}. URL: ${url});
^
Error: Download failed: server returned code 404. URL: https://storage.googleapis.com/chromium-browser-snapshots/Linux_x64/NaN/chrome-linux.zip
at /root/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserFetcher.js:367:27
at ClientRequest.requestCallback (/root/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserFetcher.js:493:13)
at Object.onceWrapper (node:events:642:26)
at ClientRequest.emit (node:events:527:28)
at HTTPParser.parserOnIncomingClient (node:_http_client:618:27)
at HTTPParser.parserOnHeadersComplete (node:_http_common:128:17)
at TLSSocket.socketOnData (node:_http_client:482:22)
at TLSSocket.emit (node:events:527:28)
at addChunk (node:internal/streams/readable:324:12)
at readableAddChunk (node:internal/streams/readable:297:9)
Not sure how do we fix that , can you please help

"puppeteer": "^13.0.0"
AND
node: v17.4.0

Issue is still there.

Also still happening to me with error:
TimeoutError: Timed out after 30000 ms while trying to connect to the browser! Only Chrome at revision r991974 is guaranteed to work.     at Timeout.onTimeout (/Users/..../Documents/startups/docvox/tech/git/app-backend/node_modules/puppeteer-core/lib/cjs/puppeteer/node/BrowserRunner.js:252:20)     at listOnTimeout (internal/timers.js:557:17)     at processTimers (internal/timers.js:500:7)
FYI:
headless:true
and deps:
"puppeteer-core": "^14.0.0",
"puppeteer-extra": "^3.2.3",
"puppeteer-extra-plugin-stealth": "^2.9.0",
"puppeteer-screen-recorder": "^2.0.2",
using:
chrome headless

I also sometimes get this error:
C:\node_modules\puppeteer\lib\cjs\puppeteer\node\BrowserRunner.js:252
            reject(new Errors_js_1.TimeoutError(`Timed out after ${timeout} ms while trying to connect to the browser! Only Chrome at revision r${preferredRevision} is guaranteed to work.`));
                   ^
TimeoutError: Timed out after 30000 ms while trying to connect to the browser! Only Chrome at revision r982053 is guaranteed to work.
    at Timeout.onTimeout (C:\node_modules\puppeteer\lib\cjs\puppeteer\node\BrowserRunner.js:252:20)
    at listOnTimeout (node:internal/timers:559:17)
    at processTimers (node:internal/timers:502:7)

It is strange that I set the value to 120,000 for setDefaultTimeout and setDefaultNavigationTimeout, but the error message indicates 30,000!
More code:
async function get_page() {
	if (extra) {
		var pup = puppeteerExtra.use(StealthPlugin());
	} else {
		var pup = puppeteer;
	}
	let options = {
		headless: headless,
		devtools: devtools,
		args: [
			'--no-sandbox',
			'--disable-setuid-sandbox',
			'--proxy-server=' + browser_proxy,
		],
	};
	browser = await pup.launch(options);
	const page = await browser.newPage();
	page.setDefaultTimeout(120*1000);
	page.setDefaultNavigationTimeout(120*1000);
	await page.goto('https://example.com');
	return page;
}

Versions:
node v16.14.0
chromium win64-982053
windows 10
headless: true
proxy: yes
<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>

getting the same error as @NabiKAZ

same
node 16
puppeteer 14.1

Im getting this issue in Google Compute Engine using Pm2. Two processes in parallel it works fine, as soon as I added a third process it fails with
e: Error: TimeoutError: Timed out after 30000 ms while trying to connect     │
│                                       ││ gpu-renderer >       at /home/michael/packages/cloudtest/dist/index.js:176:23

Using 1 x NVIDIA Tesla T4 GPU and 16 vCPUs (n1-standard-16 - Intel Haswell)

I had the issue on firebase/gcloud, but only once, so I just re-run the function and worked fine, couldn't replicate it again...

This worked for me as well

Google Cloud Functions
Node 16
Puppeteer 15.3.2
@tbadlov's suggestions solved this for me.
https://github.com/puppeteer/puppeteer/issues/4796#issuecomment-535612842

If it helps anyone my issue with was due to the usage of Puppeteer in Google Cloud Function and have it running in the background. I changed the function to respond only after Puppeteer is done and it worked just fine.

https://github.com/puppeteer/puppeteer/issues/4796#issuecomment-535719728

...your entry function will have a response call. Once invoked the functions technically terminated which means all other tasks are considered background tasks and won’t execute.

I changed my main function to return a promise (via return browser.close()), with an async entry point function that awaits the completion of my main function.

I am having this issue too, on Firebase Functions. Can’t figure it out. Works fine ~20% of the time and fails all others with timeout.

I have this issue only on Firebase pubsub scheduled function. @Greyson-Sawyer can you provide the code including the Trigger function definition ? Thanks

I am getting the same error using Cloud functions triggered by pubsub
Error: TimeoutError: Timed out after 30000 ms while trying to connect to the browser! Only Chrome at revision r1036745 is guaranteed to work.
Node 16
puppeteer: "17.1.3"

It's magic.
I have used my simpliest script last week - it's work.
Today, no updates, but it's not work.
It is a normal?
Node: 18.9.0
Pptr: ^18.0.5

@paveltretyakovru are you invoking it a lot? I found Firebase Cloud was getting throttled by the website I was connecting to due to the volume of requests.  I found Firebase Cloud was getting throttled by the website I was connecting to due to the volume of requests. For me it was ~ 5 times a second. I put the function in multiple regions and had the clients randomly pick one as a way to load balance a little to fix it.

@saldous , aloha! Thanks for your attention.
console.log('Launch browser');
const browser = await pup.launch({ headless: false });

console.log('Opening page');
const page = await browser.newPage();

console.log('Go to page');
await page.goto('https://google.com');

My script stoping on "Launch browser", and I can't see  log with "Opening page".
And after some time I see the issue message.

@paveltretyakovru did you allocate enough memory?

@paveltretyakovru did you allocate enough memory?

@saldous Sorry, memory for what?

I got this error only when running on my Apple Silicon (with --platform linux/amd64 ) but it works perfectly on Intel CPU or cloud providers.

puppeteer-cluster randomly crashes

lib puppeteer-extra helped me to resolve this issue
example -> https://github.com/cobalt-intelligence/log-into-google-with-puppeteer/blob/master/src/index.ts

@bruriah1999 your entry function will have a response call. Once invoked the functions technically terminated which means all other tasks are considered background tasks and won’t execute.
Check the Function Execution Timeline in this article https://cloud.google.com/functions/docs/concepts/exec

Do you have a code example for this?

I encounter the same issue on MacOS, after switch to {headless: false} then switch back to {headless: true}, it works. I think the computer need us to allow the chromium first with headless false, after that, it can work in headless mode silently.

Had the same problem. There's a recent stackoverflow post about running puppeteer on WSL2 and the problem was that my firewall prevented access to my x-server.
I followed the instruction and got it to work!
https://stackoverflow.com/questions/73561240/running-puppeteer-on-wsl2

So what seemed to fix it for me is to simply make sure I'm spawning only one instance of the browser instead of many.
In case of both AWS Lambda/Google Cloud Functions the instance managing the function spins up, the first execution is totally fine, but the next execution (in a short timeframe) will fail, because the chrome instance is already up. A simple solution is to create separate function ala prepareBrowser and make sure to cache the returned browser and check inside the main handler whether it's there already or not. If it's there then just re-use it.
For example:
let browserPromise: Promise<puppeteer.Browser>;;
const prepareBrowser = async () => {
  // function responsible for launching chrome
}

const handler = () => {
  ...
  if (!browserPromise) {
    browserPromise = prepareBrowser();
  }
  const browser = await browserPromise;
  ...

In GPC i had problem with timeout, when i instantiate de puppeteer out of the function.
This is my source code working
const puppeter = require('puppeteer');
//when instantiate out of the function report, a had a problem
/let browserPromise = puppeter.launch({
headless: true,
args: [
'--no-sandbox',
'--disable-setuid-sandbox',
'--font-render-hinting=medium'
]
});/
exports.report = async (req, res) => {
res.set("Access-Control-Allow-Origin", "http://localhost");
const url = req.query.url || '';
let content;
//https://cloud.google.com/functions/docs/samples/functions-http-content?hl=pt-br#functions_http_content-nodejs
switch (req.get('content-type')) {
    case 'application/json':
        content = req.body;
        break;

    case 'application/octet-stream':
        content = req.body.toString();
        break;

    case 'text/plain':
        content = req.body;
        break;

    case 'application/x-www-form-urlencoded':
        content = req.body;
        break;
}

const type = req.query.type || 'image';//pdf
const browser = await puppeter.launch({
    headless: true,
    args: [
        '--no-sandbox',
        '--disable-setuid-sandbox',
        '--font-render-hinting=medium'
    ]
});
const context = await browser.createIncognitoBrowserContext();
const page = await context.newPage();
await page.setDefaultNavigationTimeout(0);
if (url) {
    await page.goto(url);
} else {
    await page.setContent(content, {
        timeout: 0,
        waitUntil: 'domcontentloaded'
    });
}

setTimeout(async() => {
    if (type == 'image') {
        const image = await page.screenshot({
            fullPage: true
        });
        //await context.close();
        res.setHeader('Content-Type', 'image/png');
        res.send(image);
    } else if (type == 'pdf') {
        let displayHeaderFooter = false;
        let footerTemplate = req.query.footerTemplate || '';
        if (footerTemplate) {
            displayHeaderFooter = true;
        }
        let landscape = req.query.orientation == 'landscape';
        const pdf = await page.pdf({
            landscape: landscape,
            displayHeaderFooter: displayHeaderFooter,
            footerTemplate: footerTemplate
        });
        res.setHeader('Content-Type', 'application/pdf');
        res.send(pdf);
    }
    await browser.close();
}, 1000);

}

@bruriah1999 your entry function will have a response call. Once invoked the functions technically terminated which means all other tasks are considered background tasks and won’t execute.
Check the Function Execution Timeline in this article https://cloud.google.com/functions/docs/concepts/exec

Expanding upon this answer by @tbadlov
In my case I was using https cloud functions and all I had to do was call res.send("OK"); from the finally statement of innermost (or last) async function.
I have 1st async function to generate a file and 2nd async (inner) function to email the generated file.
Upon correctly signaling the end of 2nd func, my entire cloud function ran smoothly.
Example Code Snippet:

exports.sendOrderConfirmationEmail = functions.https.onRequest((req, res) => {
  return cors()(req, res, async () => {

    nodeHtmlToImage({
      output: "./outputs/Order-Confirmation.png",
      html: emailBody,
    })
      .then(() => {
        console.log("The image was created successfully!");

        const emailPayload = {}; // w/attachment

        sgMail
          .send(emailPayload)
          .then(() => console.log("Email sent"))
          .catch((error) =>
            console.error("Error @sendOrderConfirmationEmail", error)
          )
          .finally(() => {
            // Send an HTTP response To mark end of function execution - EXTREMELY IMPORTANT
            // https://cloud.google.com/functions/docs/concepts/execution-environment#execution-timeline
            res.send("OK");
          });
      })
      .catch((error) => console.error("Error generating PNG:", error));
  });
});

I had a similar problem, asked GPT-4. Reply:

The error message you're seeing is raised by Puppeteer when it tries to launch a new instance of Chromium but doesn't receive the WebSocket endpoint within 30 seconds. This endpoint is required for Puppeteer to control the Chromium instance.
This error can happen due to several reasons:

The Chromium instance isn't starting correctly: Puppeteer relies on being able to start a new Chromium instance and establish a WebSocket connection to it. If there's an issue with the Chromium executable itself, this error could occur.
System resources: If your system is heavily loaded or has very limited resources, it might take more than 30 seconds for Chromium to start and the WebSocket connection to be established.
Network issues: If you're using a proxy server, there could be issues with the network configuration or the proxy server itself that are preventing Puppeteer from starting the Chromium instance and establishing the WebSocket connection within the 30-second timeframe.

Your crawl script appears to be trying to use Puppeteer to crawl a webpage and follow its links. Each time it follows a link, it starts a new Puppeteer instance. This is likely to be resource-intensive, especially if there are many links on each page. You may want to reconsider this approach.

Solution
It was correct, the issue came from an absence of resources. I fixed the issue by launching the browser only once and then reusing the same instance for all my navigation.

Adding to thread, just in case this opens again.
On puppeteer v 21.1.1. Using google cloud function gen2 onObjectFinalized trigger with 16GiB memory, 4 cpu, and 120 second timeout.
When I first launched my Cloud Storage trigger function, I was getting TimeoutError: Timed out after 30000 ms while waiting for the WS endpoint URL to appear in stdout!. However, upon subsequent runs, so far, this error does not appear.
In package.json I had to add:
"scripts": {
  "gcp-build": "node node_modules/puppeteer/install.js"
}

And then at root of project I added the .puppeteerrc.cjs config file:
const {join} = require('path');

/**
 * @type {import("puppeteer").Configuration}
 */
module.exports = {
    // Changes the cache location for Puppeteer.
    cacheDirectory: join(__dirname, '.cache', 'puppeteer'),
};

Puppeteer code:
const browser = await puppeteer.launch({
    headless: 'new',
})

const page = await browser.newPage()

// Load the html file that triggered onObjectFinalized as string and pass to setContent
// So, in my use case I'm not even loading a website with puppeteer, just passing html.

await page.setContent(html, { waitUntil: 'domcontentloaded' })
await page.emulateMediaType('screen')

const PDF = await page.pdf({
    path: `/tmp/${pdfFilename}`,
    margin: { top: '.5in', right: '.5in', bottom: '.5in', left: '.5in' },
    printBackground: true,
    format: 'A4',
})

await browser.close()

For anyone still struggling with this, I managed to fix it in Cloud Run by increasing the Request timeout setting and res.send it when everything is completely finished.

I have exactly the same error with the latest version of puppeteer (21.5.0). Approximately one time out of 2, the error is impossible to catch with the try catch block, and the script ends by crashing.

/home/.../node_modules/puppeteer-core/lib/cjs/puppeteer/common/WaitTask.js:59
void this.terminate(new Errors_js_1.TimeoutError(Waiting failed: ${options.timeout}ms exceeded));
^
TimeoutError: Waiting failed: 15000ms exceeded
at Timeout. (/home/.../node_modules/puppeteer-core/lib/cjs/puppeteer/common/WaitTask.js:59:37)
at listOnTimeout (node:internal/timers:564:17)
at process.processTimers (node:internal/timers:507:7)

try {
  const pages = await currentBrowserInstance.browser.pages();
  const page = pages[0];
  await page.setViewport({ width: 100, height: 100 });
  const watchDog = page.waitForFunction('!!window.DRAW_FINISH', {timeout: timeout});
  await page.goto(backendURL, {timeout: timeout});
  await watchDog;
}
catch(e) {
  console.error(e);
}

I removed the launch options:--single-process,it's work.🤡

@tbadlov Thank you, your suggestion worked for me.
I had this which was NOT working:
(async () => {
        const browser = await puppeteer.launch({headless: true, args: ['--no-sandbox']});
        const page = await browser.newPage();
        await page.setContent(htmlWithStyles);
        const pdfBuffer = await page.pdf({
            format: "A4",
            margin: { top: 0, bottom: 0, right: 0, left: 0 },
            printBackground: true,
        });
        await browser.close();
    })(outputFile);
 res.send(outputFile);
 return

Which returned immediately and stopped the puppeteer execution.

In my case I run node run.js and one day mention error started. It was enough to add some useless console.log(111) to script and suddenly it started works again including removed console.log() later.

Thank you for the disable google cloud functions suggestion above.

I have a timeout problem with puppeteer 12.0.0, using a dockerfile with aws

I experienced the same problem running Puppeteer in Google Cloud Run, the issue was not enough memory allocated to Chromium was crashing

Maybe you just forgot to set headless to true

I experienced the same problem running Puppeteer in Google Cloud Run, the issue was not enough memory allocated to Chromium was crashing

how much memory did you add? I have 2G and i'm running into this issue

If any of you are having a hard time debugging Puppeteer, I'm creating a new service to make it easier: Buglesstack. It's currently in beta, so I'd be glad if any of you try it out!


Failed to find libmagic

Hello,
I've use the command you've write to install this lib but I've an error when I try to launch the code, libmagic is not installed.
Do you have a solution for that? Thanks!

Okay! I've find how to solve this problem, just use pip install python-magic-bin==0.4.14 !


Modify extend volume api

What this PR does / why we need it:
Which issue this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close that issue when PR gets merged): fixes #
design spec #11
Special notes for your reviewer:
Release note:

Coverage remained the same at 45.008% when pulling 68e1805714cb829e497df6d687689fcb3de5094b on BaiHuoYu:Resize_515 into ac325d2d4b945728315be152ce37c0c7a0892370 on opensds:development.


Replace pragma structure

Live specimen test failing due to me not knowing how to initialize these :D

Pull Request Test Coverage Report for Build 532189500

202 of 214 (94.39%)  changed or added relevant lines in 61 files are covered.
274 unchanged lines in 47 files lost coverage.
Overall coverage decreased (-1.9%) to 67.826%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

packages/Babylonian-Tests.package/BPSerializerRoundtripTest.class/instance/assertExample.equals..st
0
1
0.0%

packages/Babylonian-Tests.package/BPTestExamplesClass.class/instance/methodWithLiveSpecimen..st
0
1
0.0%

packages/Babylonian-Core.package/BPScriptExample.class/instance/asPragma.st
0
2
0.0%

packages/Babylonian-Tests.package/BPStylerTest.class/instance/method.st
0
2
0.0%

packages/Babylonian-Core.package/BPScriptExample.class/instance/initializeFromDeserialized..st
0
6
0.0%

Files with Coverage Reduction
New Missed Lines
%

packages/Babylonian-Tests.package/BPStylerTest.class/instance/method.st
1
0%

packages/Babylonian-Core.package/BPActiveExamples.class/instance/examples.st
4
0%

packages/Babylonian-Core.package/BPActiveExamples.class/instance/runActiveExamples.st
4
0%

packages/Babylonian-Core.package/BPExample.class/instance/isActive.st
4
0%

packages/Babylonian-Core.package/BPExample.class/instance/methodName.st
4
0%

packages/Babylonian-Core.package/BPExample.class/instance/trace.st
4
0%

packages/Babylonian-Core.package/BPExampleExecutionInterrupted.class/instance/trace..st
4
0%

packages/Babylonian-Core.package/BPExamplesAnnotation.class/instance/stopTag.st
4
0%

packages/Babylonian-Core.package/BPExampleToTest.class/instance/exampleMethodClassName.st
4
0%

packages/Babylonian-Core.package/BPExampleToTest.class/instance/serializedMethodCategory.st
4
0%

Totals

Change from base Build 512525654:
-1.9%

Covered Lines:
4815

Relevant Lines:
7099

💛  - Coveralls

After looking through some of the things happening in this PR I started wondering what it is supposed to do? It kind of replaces most of the central example infrastructure?

@codeZeilen Oh, I thought we were on the same page so I skipped the description, sorry for the misunderstanding. This MR replaces the serialization of examples in pragmas through referencing their test methods instead. so in order for all the existing examples to still be styled as morphs, we generated tests and replaced the pragmas with the new ones.

Now that I had time to consider this. To improve the mergability of this with regard to develop, we might want to approach this differently. Instead of replacing everything, this could be implemented by subclassing BPExample and BPScriptExample and adding corresponding buttons to the UI.
Currently, merging this change back into develop would change the complete infrastructure which would prevent me from merging for at least a couple of months during which I need it to remain stable. If this is too much effort, we should briefly chat on Monday. :)


support GMP for variable-size numbers

ATM, C++ cannot handle strings larger than eight characters.
any idea how to bundle GMP at build time?
https://github.com/DiTo97/alphacodings/blob/63162b6d835e83a7f990bacac3b0b405e8e6aca9/tests/_core/test_base26.py#L10
https://github.com/DiTo97/alphacodings/blob/63162b6d835e83a7f990bacac3b0b405e8e6aca9/tests/_core/test_base52.py#L10

being discussed in https://github.com/aleaxit/gmpy/issues/509


Migrate to Circe, add Iglu Core, use scala-lrumap

PR number 3 (still pretty big, should I split this further?)

@BenFradet publishing a new version of scala-lru-map with https://github.com/snowplow-incubator/scala-lru-map/pull/10 would allow us to depend on cats-effect 1.0.0.

Closing in favor of https://github.com/snowplow/iglu-scala-client/pull/111


[BUG]: Custom Connectors no longer associated with Apps

Hi there,
We're on CoE version 1.71.7 and I noticed that the connection references for apps with Custom Connectors is no longer there.
The Power Platform Admin View app actually has the best representation of my problem.  So for example, the delivered connector Azure AD has apps listed

However, selecting a Custom Connector in the same screen shows no apps associated

From the Power Platform Admin Center, here is one app that uses that custom connector

I believe the problem comes from the Connection Reference table.  The Connector field is blank for references to custom connectors.  The below screenshot is of the first rows in the table, and it so happens a couple of custom connectors appear near the top.

Because there is no reference to the Connector lookup field, I'm not even sure how it's getting the connector's display name.  But I think if that field gets populated, then I could see app (and eventually flow) references.
Does that make sense?
Thanks!
Christi

Trying to investigate a little more and saw a reply to another issue where it was suggested to export the table data to Excel.  Sadly, I found that in GCC the export to Excel (even when accessing the table from the Solution) is not available as shown in the screenshots.  Is there something I'm missing?
Thanks!

hello sorry we are swamped here and i havent had time to investigate your issue.
but you can use the export feature instead I hope

No worries!  I'll keep poking along :)

Hey folks. It looks like we havent ben tracking these in the (apps) flow. I see what is missing now, just not sure how it got removed. I am investigating a fix for next release, just wanted to let you know.

We have this local fixed for apps and will be shipping an udpate soon with this in it.
The fix for flows is understood as well but will not be able to ship this time due to a blockign product issue.
We will hold this issue open until we can release the flows fix too.

Have a fix for this in place for both Apps and Flows

Have a fix for this in place for both Apps and Flows

We have just released a version today with this fix, as well as a major rewrite for reliability of the inventory suite.
Be sure to follow the new steps for installing updates
And thanks for using CoE!

We have just released a version today with this fix, as well as a major rewrite for reliability of the inventory suite.
Be sure to follow the new steps for installing updates
And thanks for using CoE!

Can I reopen this issue, please?  I'm now on Core Components 1.78 and am seeing this problem again.  I have more info but want to know if it should be tied to this issue or in a new one.  Thank you.

Can I reopen this issue, please?  I'm now on Core Components 1.78 and am seeing this problem again.  I have more info but want to know if it should be tied to this issue or in a new one.  Thank you.


Exception when add mod "eldritch"

After adding the mod "eldritch mobs 1.12.11" to the latest version, there was a crash when join in the game: Internal Exception: java. lang. NoClassDefFoundError: dev/emi/emi/EmiReloadManager

Duplicate of #182 fix is there


Update with missing common endpoints

Update list following discussion on Twitter: https://twitter.com/NahamSec/status/1177672652011343873

Thank you!


[3.x] Backport output log enhancements and features

Includes https://github.com/godotengine/godot/pull/41321 and some other follow-up changes.
https://user-images.githubusercontent.com/50304111/127759508-73bfcd17-8165-4210-9e67-e3d4e7805e4f.mp4

Everything seems to be working except the collapse functionality is buggy (I'm assuming it's not this way in master):
https://user-images.githubusercontent.com/50304111/127389734-c0436fb6-f9e1-434c-9249-0de019c06458.mp4
LogTesting.zip

I've cherry-picked a bunch of the follow up commits, and from some quick testing everything seems to be working. The last commit that should probably be cherry-picked is https://github.com/godotengine/godot/commit/902d468f5233f97f56771ce60159aabf2a78a113, but I haven't yet because I'm not sure about its implementation. This could probably be merged without it though.
Also I'm not sure why some of the checks are failing, it builds fine on my laptop.

Cherry-picked 902d468f5233f97f56771ce60159aabf2a78a113 with 538a50ac19c78e89c2019be25569b4f363514957 fixuped

Also I don't think the iOS builds failing is my fault.

GitHub Actions's cache often has issues with the iOS builds.

Backported a08dbf3888dfac89ecb3f90e11d03a39f8cedf2b and the relevant part of 20201b56c247878bc229a8068f0779c21a320861, and squashed the commits.

I wonder if we should first find the solution for poor performance of logs that we can witness in 4.0 alphas. Like feature-wise this is cool, but if it's going to work slower and less reliable, we probably don't want it in our LTS releases.


Updated Android Wizard SDK tutorial mission

Changed version to 2.2.x
Added Kotlin part

@flyingfish162 In general, it looks really good. I just want to understand how the new tutorial -- which is really long, 90 minutes -- fits in with the others and how all the tutorials are organized into missions. Contact me offline.


Request : Mealie port

Hi, first thanks a lot for all your addons, its really helpful :)
Could you port Mealie as well ?
https://github.com/hay-kot/mealie
It is a Cook recipe organiser, the best one that i found.
Thx a lot !

Hi! I've created one. Could you please check if it works? thanks!

V2 should fix the absence of webui

It looks nice! Thanks for making me discover this!

Mmh it doesn't keep the recipes upon reboot

Thx à lot for your réactivity !
Same for me, recipe and account setting are not keeped after à reboot

Updated to 0.5.1-v3 : seems to have fixed the persistant issue, account and recipe are saved between reboot, good job ;)
Is there a way to make this addon compatible with Ingress, in order to work within HA with nabu casa outside my network ?
(i don't know how hard or possible it is, sorry for that :p)
Already more than happy with what i got, time to fill recipes ;)

Hi, solved in v4 :)
Please let me know if it works!

For Ingress... I'll have to test in a couple weeks I'm sorry I don't have much time for the moment

no worries, its already wonderfull to put this up in an hour ;)
Thanks again and have a good day !

Thanks!

Mmh... This is much more complicated that I thought. I've spent some time tinkering but can't get it to work yet. The image implements its own reverse proxy, Caddy, but it seems that some elements are hardcoded so ingress doesn't connect. I've had some success with nginx, but then the api can't connect...

pretty sure it won't work : all url are hard coded such as "/api/", which means that it goes to http://HAurl:8123/api instead of going to the ingress url... so unless someone knows how to rewrite url with the reverse proxy it won't work. sorry.

Hello, i tried too but not as far as you. Thx for trying, i Could use wireguard or some vpn to resolve This. Thx again !

well I think we're not too much of too to find a solution ;-) I've commented in the Mealie github but there doesn't seem to be an easy solution... the easiest would be to expose the Mealie port in your router and connect directly to it.

Of course but i dont have any open port on m'y server beside nabu casa, and dont want to :p i dont really use mealie outside m'y home for now so it Will stay This way for now.

An url rewrite might do the trick but I don't know how to write it for Caddy reverse proxy

The creator of Mealie had confirmed that it is not possible to assign a variable path for API, required for ingress. I'll close this as this is not feasible due to the app design...

Is there a way to have Mealie show up in the sidebar?

No, sorry, the app creator had confirmed that it needs a hard coded url which is not compatible with HA ingress...


No From, To, Cc and other addresses in HTML file

I do not get addresses in a .html mail file. This is what I see as MessageInfo
<!--
From:[{}],
to:[{}],
reply-to:[{}],
cc:[],
bcc:[],
subject:Test subject
-->

When I dump $message->getOriginalMessage()->getFrom(), I get:
array:1 [
  0 => Symfony\Component\Mime\Address^ {#3012
    -address<EMAIL_ADDRESS>    -name: "Example test (no-reply)"
  }
]

And when it is serialized using json_encode, it becomes: "[{}]"
Laravel version: Laravel Framework 10.18.0

I missed those too. json_encode() only includes public properties, so not Address's. I can't image Symfony will implement JsonSerializable for this, so this package should do something. Can't be too hard. I'll make a PR soon, if I remember.

I finally did something, yay.


charts/osm: fix label on injector's mutating webhook

Description:
The injector's mutating webhook is incorretly labeled
to osm-controller. This should be matching on the
osm-injector app label set on osm-injector's
deployment.
Currently the label on the mutating webhook is not
used anywhere else.
Signed-off-by: Shashank Ram<EMAIL_ADDRESS>
Affected area:

New Functionality      [ ]
Documentation          [ ]
Install                [X]
Control Plane          [ ]
CLI Tool               [ ]
Certificate Management [ ]
Networking             [ ]
Metrics                [ ]
SMI Policy             [ ]
Security               [ ]
Tests                  [ ]
CI System              [ ]
Demo                   [ ]
Performance            [ ]
Other                  [ ]

Please answer the following questions with yes/no.

Does this change contain code from or inspired by another project? If so, did you notify the maintainers and provide attribution?
No

Codecov Report

Merging #2920 (b10e24a) into main (e930e9a) will decrease coverage by 0.23%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main    #2920      +/-   ##
==========================================
- Coverage   65.40%   65.17%   -0.24%
==========================================
  Files         153      153
  Lines        6905     6905
==========================================
- Hits         4516     4500      -16
- Misses       2363     2379      +16
  Partials       26       26

Flag
Coverage Δ

unittests
65.17% <ø> (-0.24%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

cmd/cli/install.go
65.62% <ø> (ø)

pkg/configurator/validating_webhook.go
70.34% <0.00%> (-9.66%)
:arrow_down:

pkg/injector/webhook.go
74.25% <0.00%> (-1.80%)
:arrow_down:

pkg/endpoint/providers/kube/client.go
79.00% <0.00%> (+1.00%)
:arrow_up:

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 300ac62...b10e24a. Read the comment docs.


Can't load image

Bug Report
I'm using OHIF (Version3) with Orthanc inside of Docker.
And it works fine, mostly.
But there are a few studies, I can't open well as attached.  (shows only black image)
I can open these studies well or show correct image on Orthacn Web Viewer.
I think, study which is send from specific modality, has this issue.
Would you kindly advise me ?
You can download 1 sample study from GoogleDrive as below;
https://drive.google.com/file/d/1tZvG3tX2Yl4bjnKGqtv5rrRunK3TnN-P/view?usp=sharing

Could you kindly provide the data if it has been anonymized and you can confirm that there is no patient health information present in any of the headers or embedded within the pixel data?


APP-3140: RSA key pair generated at project root

Ticket
APP-3140
Description
RSA key pair generated at project root
Dependencies
List the other pull requests that should be merged before/along this one.
Checklist

[x] Referenced a ticket in the PR title and in the corresponding section
[x] Filled properly the description and dependencies, if any
[x] Public functions properly commented

There was also the idea of adding a .gitignore file in the ticket, do we still want to do it?

@symphony-youri I'm not sure about that. Do we really need to have .gitignore if we didn't init git yet on the generated project?

Let's also add test for this! would it be easy to add a unit test generating the project and checking that the generate private key / public key work work together?

There was also the idea of adding a .gitignore file in the ticket, do we still want to do it?

@symphony-youri I'm not sure about that. Do we really need to have .gitignore if we didn't init git yet on the generated project?

I would say it is nice to have, for instance https://start.spring.io/ puts a .gitignore file in the generated project with
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/

### VS Code ###
.vscode/

Let's also add test for this! would it be easy to add a unit test generating the project and checking that the generate private key / public key work work together?

Now the keypair is mocked in ut, we only check if the all the files are generated in correct path. And because the keypair is generated by a lib, so I guess they always work with each other.

What if we misuse the lib or copy the wrong file? Would that be ok to not mock the key pair generation? is it because it is slow?

It's a bit slow but I guess it might be ok to not mock the key pair.


feat(sidebar blocks): adds sidebar-16 block with components and styles

Introduces a new sidebar-16 block with an inset sidebar and site header navigation.
Includes components for main navigation, projects, secondary navigation, and user menu.
Updates registry and scripts to include the new sidebar block.
Addresses: #5629

@shadcn I think I’ve set everything up correctly, but please let me know if I missed anything.
Also, feel free to share any suggestions or feedback regarding the sidebar setup. Thanks in advance! 🌟

Waiting patiently for this fix. :)
Really want that navigation header bar above the sidebar.

@Jacksonmills This looks awesome. Thanks for taking the time to work on this. I'll do a full code review.
Is responsive done? I noticed a small issue with the navigation menu.
(Note: Totally okay to have a simpler header for the sidebar example with some simple menu items. We can do a full navigation one when we do dashboard-xx blocks)

@Jacksonmills This looks awesome. Thanks for taking the time to work on this. I'll do a full code review.
Is responsive done? I noticed a small issue with the navigation menu.

(Note: Totally okay to have a simpler header for the sidebar example with some simple menu items. We can do a full navigation one when we do dashboard-xx blocks)

Ah totally, I will simplify and clean up mobile 🫡

any updates? @Jacksonmills @shadcn really would like to use this!

Is there anything we can help out with?


Add more flexible low level GraphQL checks

Is your feature request related to a problem? Please describe.
I'm creating a multitenancy system for my application
I will tag all my documents with a tenantId (user included) and I want to filter useMulti, useSingle and the queries in general with the tenantId, so I can only see the docs of my client.
Describe the solution you'd like
A function or other pattern from vulcan core who let met add this checks from other packages
Describe alternatives you've considered
A function like the existing addCallback, maybe addQueryFilter who let me add any check I want before showing documents.
addQueryFilter({context, document}=>document.tenantId===context.currentUser.tenantId)
I have also considered adding tenantId: {_eq: currentUser.tenantId} to all the inputs but it's easy to fake from client
Additional context
Any other patterns are welcome
I think the changings would concern these files
packages/vulcan-lib/lib/server/apollo-server/context.js
packages/vulcan-lib/lib/server/default_resolvers2.js

Hi, I'll update this comment progressively, here are my thoughts:
Handling "singleton" currentUser in graphql?
How to handle a "singleton" in graphql? For instance, the currentUser will always be THE current user. You don't care about the _id or whatever, because you can have only one current user. However, in my Cypress tests, it messes with caching. For instance, I do 2 queries "getCurrentUser { profile }", "getCurrentUser { activeTenant }". I get a message like "instrument.js?ea14:110 Cache data may be lost when replacing the getCurrentUser field of a Query object." because Apollo has trouble merging both response into the "currentUser" object. GraphQL can't know if you may store multiple current user or just one.

Hi, I'll update this comment progressively, here are my thoughts:
Handling "singleton" currentUser in graphql?
How to handle a "singleton" in graphql? For instance, the currentUser will always be THE current user. You don't care about the _id or whatever, because you can have only one current user. However, in my Cypress tests, it messes with caching. For instance, I do 2 queries "getCurrentUser { profile }", "getCurrentUser { activeTenant }". I get a message like "instrument.js?ea14:110 Cache data may be lost when replacing the getCurrentUser field of a Query object." because Apollo has trouble merging both response into the "currentUser" object. GraphQL can't know if you may store multiple current user or just one.

Since @EloyID  asked me to implement this, here's my view on the subject:
Forking Vulcan is not an option, the cost of maintaining an ever-shifting fork is too big, and Vulcan tries to give opinionated defaults but lets the devs inject their logic where they need. The goal we're trying to reach is not too far from what Vulcan offers, so it should be possible to do without forking Vulcan.
Adding callbacks to modify some objects is probably the right way of doing things. I don't know how we are documenting these however (the debug panel seems to lack a lot of these, not to mention the docs). I'm used to just read the source code, but we can't expect that from every user.
So, I added a callback to update the context in PR #2689 (thanks for the quick followup!). We can easily handle queries and mutations that affect only one document via the permissions. The multi resolver is a bit more tricky because the "canRead" permission won't work for the totalCount. So we want a way to modify the selector and options given to the mongo query.
The legacy collection.getParameters used callbacks for that, which were not included in the new Connector.filter call.
Currently, in the multi resolver has the following:
        let { selector = {}, options = {}, filteredFields = [] } = isEmpty(terms)
          ? await Connectors.filter(collection, input, context) // can't be changed dynamically
          : await collection.getParameters(terms, {}, context); // can be changed dynamically

So in order to be able to modify selectors dynamically inside Connectors.filter too, I've created PR #2690 .

Since @EloyID  asked me to implement this, here's my view on the subject:
Forking Vulcan is not an option, the cost of maintaining an ever-shifting fork is too big, and Vulcan tries to give opinionated defaults but lets the devs inject their logic where they need. The goal we're trying to reach is not too far from what Vulcan offers, so it should be possible to do without forking Vulcan.
Adding callbacks to modify some objects is probably the right way of doing things. I don't know how we are documenting these however (the debug panel seems to lack a lot of these, not to mention the docs). I'm used to just read the source code, but we can't expect that from every user.
So, I added a callback to update the context in PR #2689 (thanks for the quick followup!). We can easily handle queries and mutations that affect only one document via the permissions. The multi resolver is a bit more tricky because the "canRead" permission won't work for the totalCount. So we want a way to modify the selector and options given to the mongo query.
The legacy collection.getParameters used callbacks for that, which were not included in the new Connector.filter call.
Currently, in the multi resolver has the following:
        let { selector = {}, options = {}, filteredFields = [] } = isEmpty(terms)
          ? await Connectors.filter(collection, input, context) // can't be changed dynamically
          : await collection.getParameters(terms, {}, context); // can be changed dynamically

So in order to be able to modify selectors dynamically inside Connectors.filter too, I've created PR #2690 .


enable ppc64le builds

Checklist

[x] Used a fork of the feedstock to propose changes
[x] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[x] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[x] Ensured the license file is being packaged.

Enable ppc64le builds on Travis CI

@conda-forge-admin, please rerender

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

Superseded by #8


fix converters

fixes https://github.com/pulumi/pulumi-hugo/issues/2605
and makes this a bit better
opted for making the button full-width as the easiest fix for now without rewriting the css for this
open to feedback, but i think this is pretty slick
what this does

stops hiding convert button on screens less than xl, lol
makes the convert button full width on all screens
stops hiding the tabs on smaller screens, that weird white space you see is for the scroll bar; eventually we can come back and make this better

we can absolutely do a lot better on this, was making the smallest change to fix the bug
before

after

closing this, will come back with a few more improvements in a new pr


[$500]  Desktop - The upper left "Apple icons" have a faint tinted line through them

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: v1.3.80-0
Reproducible in staging?: Y
Reproducible in production?: N, this is a new feature
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: Applause-Internal Team
Slack conversation: @
Action Performed:

Open the New Expensify Desktop app
Sign into a valid account
Observe the top left corner

Expected Result:
User expects that there is no overlapping and items are spaced evenly
Actual Result:
There is a very faint green line running through the Desktop Apple icons in the upper left corner. Also, these icons are very closely displayed to the users avatar image and when there is an error message (Red dot) on the users profile, they almost overlap.
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[ ] MacOS: Chrome / Safari
[x] MacOS: Desktop

Screenshots/Videos

Android: Native

Android: mWeb Chrome

iOS: Native

iOS: mWeb Safari

MacOS: Chrome / Safari

MacOS: Desktop

View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~0121122693d769b021
Upwork Job ID:<PHONE_NUMBER>186996736
Last Price Increase: 2023-10-10

:wave: Friendly reminder that deploy blockers are time-sensitive ⏱ issues! Check out the open StagingDeployCash deploy checklist to see the list of PRs included in this release, then work quickly to do one of the following:

Identify the pull request that introduced this issue and revert it.
Find someone who can quickly fix the issue.
Fix the issue yourself.

Proposal
Please re-state the problem that we are trying to solve in this issue.
Desktop - The upper left "Apple icons" have a faint tinted line through them
What is the root cause of that problem?
We have introduced a new global navigation in which we added a new sidebar screen which is causing this issue. Previosuly we used to have Expensify Logo and same bg color for entire LHN.
But due to recent changes we have different color for new sidebar screen and also replaced logo with some text and user's avatar.
What changes do you think we should make in order to solve the problem?
We need to increase the header gap for electron. Right now it's 12px which is serving it's purpose but to accomodate new look we need to increase the height maybe (26px?)
https://github.com/Expensify/App/blob/d916effd3ffb2f29adcd3cfad1e314f210a23efa/src/CONST.ts#L885

26px gap

What alternative solutions did you explore? (Optional)
NA

@shawnborton can you check this as it might be related to design issue.

This maybe not a deploy blocker and handled in #29057? cc: @hayata-suenaga

Kindly do let me know if we don't need to take this issue separately. The above proposal seems good(Need to test still though.)

Cool so we can close this @shawnborton  or should I assign @adamgrzybowski ?

Let's first confirm with @hayata-suenaga - I'm not sure what our plan is for consolidating design bugs for the hybrid web project.

Gonna take the Deploy Blocker label off if this is a known followup

I asked @stitesExpensify if he knew here, but I think we'll have to wait for @hayata-suenaga to confirm the plan for these design followups.

This issue is consolidated to this issue. This issue was reported by Applause, so no payment is necessary for bug report.

Hey, some questions related to design here:
I'm considering the following options:

Increase padding on the desktop (I believe that 27px will have even paddings from the top and bottom) and change the background color of the header gap (screen).
Or maybe increase padding for the avatar. Downside: Avatar will no longer align with the other items at the top ("Chats" text, Search loop, etc.).

Here is what the first option looks like:

We also have to take into consideration that the Avatar displays a popup when is hovered:

Which option is the preferred one?
cc @shawnborton, @hayata-suenaga

Discussing here in Slack


eslint: Prefer const over let

Yes, after #3630 this is another consistent code style PR. To make the code more uniform, I'd suggest preferring const over let. Also, you know then that those variables will never be reassigned.
In the end, it's a matter of opinions again, it'd be also fine to go for let over const.

Codecov Report

Merging #3650 into dev will not change coverage.
The diff coverage is 100%.

@@           Coverage Diff           @@
##              dev    #3650   +/-   ##
=======================================
  Coverage   99.19%   99.19%
=======================================
  Files          18       18
  Lines        1123     1123
  Branches      302      302
=======================================
  Hits         1114     1114
  Misses          9        9

Impacted Files
Coverage Δ

lib/builder/builder.js
100% <100%> (ø)
:arrow_up:

lib/builder/generator.js
94.23% <100%> (ø)
:arrow_up:

lib/core/nuxt.js
98.82% <100%> (ø)
:arrow_up:

lib/builder/webpack/utils/postcss.js
100% <100%> (ø)
:arrow_up:

lib/common/utils.js
100% <100%> (ø)
:arrow_up:

lib/core/renderer.js
100% <100%> (ø)
:arrow_up:

lib/builder/webpack/base.js
100% <100%> (ø)
:arrow_up:

lib/core/middleware/error.js
97.56% <100%> (ø)
:arrow_up:

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 823c298...ae2d583. Read the comment docs.

Nice, our Eslintrc is becoming better and better now!


Support Carthage

Thank you for McPicker!  McPicker looks to be exactly what I need, except that it doesn't support Carthage:
$ carthage update --platform ios
*** Skipped building McPicker-iOS due to the error:
Dependency "McPicker-iOS" has no shared framework schemes for any of the platforms: iOS

I will experiment with adding support in my forked repo, and if successful, I will file a MR.

Did you get this to work with Carthage?

Sadly I did not get it to work.  Sorry for the lack of update.  After a short while of trying, I learned that even if I did get it to work with Carthage, it would not meet my short term need to use Interface Builder to connect a McTextField to my storyboard.  (My understanding is that in order to be @IBDesignable the class cannot be imported via framework.)  So I abandoned the Carthage attempt and included McPicker directly in my source tree.

Bummer! I'll close this issue then.


feat: root pacakage

Creates a RootPackage for a project is the root package.json excluding workspaces. Allfound packages in project will have an edge/dependency on this package.

Updated tests.
Root package should come last.
Moves all root package instantiation into .discover() methods in the ProjectGraph implementations.

This package requires #588 to land first.

[ ] This package requires https://github.com/rehearsal-js/rehearsal-js/pull/588 to land first.
[ ] Change base branch to master once 588 lands.


Documentation References

Love the most recent changes btw. This is not an Issue, just a question but i cold not find where to simply ask one. Is there a way
to turn off the documentation reference popups that describe what an if statement is or a while loop?

No, I don't have any way of disabling hover documentation on a tag-by-tag basis.
A setting could be added to disable hover documentation for all tags or fully disable all hover documentation for everything (functions, items, tags, variables, etc...).

I for one would love a way to control turning it off. It can be very distracting when trying to read through code and these pop up.


Initialize

Clone from ainft-factory-discord bot
Remove unnecessary functions (like store...)
Add new commands

/app connect
/credit create
/event create

currently, only support twitter mining event.

Please focus on reviewing the following files.

/commands/event/create
/commands/credit/create
/commands/app/connect
/services/AinftFactory
/events/ready

@platfowner PTAL!

Thanks for the review!


Input time is not working when the format is European [dd/MM/yyyy h:mm aa]

Describe the bug
When the only dateFormat property is default [MM/dd/yyyy h:mm aa] and, for instance, the input text has this value 12/13/2023 20:00, this value is being converted to 12/13/2023 8:00 PM   --> ✅
Another examples:

Input value typed: 01/13/2023 20:00 ->01/13/2023 8:00 PM ✅
Input value typed: 12/13/2023 14:00 ->12/13/2023 2:00 PM ✅
Input value typed: 15/13/2023 19:00 ->15/13/2023 7:00 PM ✅

BUT, when the dateFormat property is changed to European format [dd/MM/yyyy h:mm aa], the value is converting something wrong depending on 2 situations:
[Situation 1] For example. if today is 15/12/2023 [dd/MM/yyyy] and we set previous days --> the time is correct but he day is being replaced by the month (wrong)

Input value typed: 14/12/2023 20:00 ->12/14/2023 8:00 PM ❌
Input value typed: 07/12/2023 14:00 ->12/07/2023 2:00 PM ❌
Input value typed: 01/12/2023 19:00 ->12/01/2023 7:00 PM ❌

[Situation 2] For example. if today is 15/12/2023 [dd/MM/yyyy] and we set next days --> the time is wrong but now the day is correct.

Input value typed: 16/12/2023 20:00 ->16/12/2023 2:00 AM ❌
Input value typed: 20/12/2023 14:00 ->20/12/2023 1:00 AM ❌
Input value typed: 30/12/2023 19:00 ->30/12/2023 1:00 AM ❌

It seems to me only the first number is being set in the input time.
To Reproduce
Steps to reproduce the behavior:

Set  your component such as first screenshot in your code
Replace the dateFormat property by "dd/MM/yyyy h:mm aa"  --> dateFormat="dd/MM/yyyy h:mm aa (copy this)
Delete the time and type any some hour but in 24h format such as second picture
See error as we described in hte first point.

Screenshots

Desktop (please complete the following information):

OS: Windows
Browser: chrome
Version: 120.0.6099.71

Same here.

This is blocking me

Hi @ChristianReynaltt,
I tried recreating the scenario.  But it's working fine for me.  Only when I type time in 24-hour time, it's parsing that as wrong 12-hour time value (But I think as the time format is set to 12hr, it's because of that).
() => {
  const [startDate, setStartDate] = useState(new Date());
  return (
    <DatePicker
        selected={startDate}
        onChange={(date) => setStartDate(date)}
        timeInputLabel="Time: "
        dateFormat="dd/MM/yyyy hh:mm aa"
        showTimeInput={true}/>
  );
};

I tried with the above code, I didn't face any issues with the date change.  Only when I enter the time in 24-hour format, does it wrongly convert it.  But if I give the data in the 12-hour format itself, it's taking it correctly.  Is your issue regarding the time value alone?

Good morning @balajis-qb ,
"Only when I enter the time in 24-hour format, does it wrongly convert it" . It's the reason why some of us are talking about this issue. Even though data is made for 12-hour format and works fine, a lot of people here put the time in 24h format.
To summarise, If the dateFormat property is dateFormat="MM/dd/yyyy hh:mm aa"   work fine when the input is set in 24h or 12h. but, when dateFormat="dd/MM/yyyy hh:mm aa"  only works in 12h format.
Please, read again my issue, I think I explained correctly my case.

In my case I was using new Date("dd-MM-yyyy") making the component behave like MM-dd-yyyy, now I use parse() from date-fns to get the right date from that format, it works

@pedro757 Could we have some example please?

<ReactDatePicker
   onChange={handleChangeDel}
   dateFormat={"dd-MM-yyyy"}
   selected={new Date("31-12-2023")} // This will fail, use date-fns instead
   selected={new Date("12-01-2023")} // This won't fail but It will behave like MM-dd-yyyy
/>

I would create an util function like this:
function parseDate(myDate: string): Date {
  return parse(myDate, "dd-MM-yyyy", Date.now());
}

<ReactDatePicker
   onChange={handleChangeDel}
   dateFormat={"dd-MM-yyyy"}
   selected={parseDate("31-12-2023")}  // this works ✅
/>

So, it's not a react-datepicker's error but a javascript's one

could you rewrite this code? I simulated the showcase
[https://codepen.io/christian0211/pen/QWoLqxm?editors=0010]

Hi everyone,
I've made a CodeSandbox (https://codesandbox.io/p/sandbox/wizardly-ganguly-mdkk2f?file=%2Fsrc%2FApp.js%3A22%2C19)
because I tried @pedro757 solution and it's still not working.
Steps to reproduce the wrong behavior:

I have the European format
Delete ONLY the time and type any some hour but in 24h format such as this image

BUT, when the dateFormat property is changed to European format [dd/MM/yyyy h:mm aa], the value is converting something wrong depending on 2 situations:
[Situation 1] For example. if today is 15/12/2023 [dd/MM/yyyy] and we set previous days --> the time is correct but he day is being replaced by the month (wrong)
Input value typed: 14/12/2023 20:00 ->12/14/2023 8:00 PM ❌
Input value typed: 07/12/2023 14:00 ->12/07/2023 2:00 PM ❌
Input value typed: 01/12/2023 19:00 ->12/01/2023 7:00 PM ❌
[Situation 2] For example. if today is 15/12/2023 [dd/MM/yyyy] and we set next days --> the time is wrong but now the day is correct.
Input value typed: 16/12/2023 20:00 ->16/12/2023 2:00 AM ❌
Input value typed: 20/12/2023 14:00 ->20/12/2023 1:00 AM ❌
Input value typed: 30/12/2023 19:00 ->30/12/2023 1:00 AM ❌
It seems to me only the first number is being set in the input time.

@ChristianReynaltt I had a look into this one and it seems like react-datepicker uses the date-fns package to parse dates. The package checks the validity of the input and runs it past the date format you passed in.
Given that that you've passed the hours with lowercase h, it thinks that the hours you want to pass in are from 0-12. If you insert anything higher than 12, it'll do its best to determine the correct hours, hence why for 20:00, the output will be 2:00. If you change your date format to MM/dd/yyyy H:mm aa or MM/dd/yyyy HH:mm aa instead, it should work.
I was able to track this issue in the date_utils file. The parsedDate variable resolves to Invalid date.
You can find more details in the pdate-fns documentation](https://date-fns.org/v3.6.0/docs/parse) for date formats and such.
Hope that helps.

Hello @hugoburguete, the issue is with the day and the month order. If you use the format dd/MM/yyyy h:mm aa , and you try yo input a date like 03/12/24, it shows correctly:

but as soon as you type an extra character that implies an incorrect date it changes the order to:

We understand that the date-fns package tries to calculate the date but it doesn't need to change the day/month order.

Hi @aritzcmz
Your issue is still closely related to my last response. When checking the date validity, the package checks for a portion of the dateFormat and attempts to validate that. e.g. when you insert 03/12, the package validates that against the dd/MM. So in the scenario you've described:

You typed 03/12/24 which the package validates against the dateFormat dd/MM/yy which is valid
You typed 03/12/24  which the package validates against the dateFormat dd/MM/yyy which is not valid.

And because the date is invalid, the default date parser used is the native browser Date API, which means: new Date('03/12/24 ') will resolve to Tue Mar 12 2024 00:00:00 GMT+0000 (Greenwich Mean Time).
If you were to type 03/12/202 or 03/12/2024 , the day and month would not change.
If you wish the second scenario to pass, I assume your date format should be dd/MM/yy h:mm aa, not dd/MM/yyyy h:mm aa.

Hi again, @hugoburguete, understood. And  when we fill the data correctly it seems to work ok. The thing is that as soon as the data has an error, the default date format (we need the spanish hour default) changes the day and the month order. We even added the locale prop in order to tell the component to pick that as a default time format but does not work. Is there any way for it to not pick the english date format as a default?

Hi @aritzcmz
Unfortunately, the Date API only supports a handful of formats:

Note: You are encouraged to make sure your input conforms to the date time string format above for maximum compatibility, because support for other formats is not guaranteed. However, there are some formats that are supported in all major implementations — like RFC 2822 format — in which case their usage can be acceptable. [...]


status.unavailableReplicas is not removed when the key removed

What happened?

composition
       - type: ToCompositeFieldPath
          fromFieldPath: status.atProvider.manifest.status
          toFieldPath: status.nginx

  nginx:
    availableReplicas: 1
    conditions:
      - lastTransitionTime: '2022-12-19T02:11:59Z'
        lastUpdateTime: '2022-12-19T02:11:59Z'
        message: Deployment has minimum availability.
        reason: MinimumReplicasAvailable
        status: 'True'
        type: Available
      - lastTransitionTime: '2022-12-19T02:11:35Z'
        lastUpdateTime: '2022-12-19T02:11:59Z'
        message: ReplicaSet "abcd-7fd8bc7fcd" has successfully progressed.
        reason: NewReplicaSetAvailable
        status: 'True'
        type: Progressing
    replicas: 1
    unavailableReplicas: 1
    updatedReplicas: 1

deployment created by object
      status:
        availableReplicas: 1
        conditions:
        - lastTransitionTime: "2022-12-19T02:11:59Z"
          lastUpdateTime: "2022-12-19T02:11:59Z"
          message: Deployment has minimum availability.
          reason: MinimumReplicasAvailable
          status: "True"
          type: Available
        - lastTransitionTime: "2022-12-19T02:11:35Z"
          lastUpdateTime: "2022-12-19T02:11:59Z"
          message: ReplicaSet "abcd-7fd8bc7fcd" has successfully progressed.
          reason: NewReplicaSetAvailable
          status: "True"
          type: Progressing
        observedGeneration: 1
        readyReplicas: 1
        replicas: 1
        updatedReplicas: 1

status.nginx.unavailableReplicas of the XR is still exitst when status.unavailableReplicas key of the deployment create by object removed.
How can we reproduce it?

What environment did it happen in?
Crossplane version:
provider_kubernetes : provider-kubernetes-f935b3d8b7ec

kubernetes version 1.19

      status:
        availableReplicas: 2
        conditions:
          - lastTransitionTime: "2022-12-19T10:49:09Z"
            lastUpdateTime: "2022-12-19T10:49:09Z"
            message: Deployment has minimum availability.
            reason: MinimumReplicasAvailable
            status: "True"
            type: Available
          - lastTransitionTime: "2022-12-19T10:48:49Z"
            lastUpdateTime: "2022-12-19T10:49:09Z"
            message: ReplicaSet "abcd-6c885fd996" has successfully progressed.
            reason: NewReplicaSetAvailable
            status: "True"
            type: Progressing
        observedGeneration: 1
        readyReplicas: 2
        replicas: 2
        updatedReplicas: 2

Object create by kubernetes_provider updates successfully.
But, XR status is different. it has a removed field.
nginx:
  availableReplicas: 2
  conditions:
    - lastTransitionTime: "2022-12-19T10:49:09Z"
      lastUpdateTime: "2022-12-19T10:49:09Z"
      message: Deployment has minimum availability.
      reason: MinimumReplicasAvailable
      status: "True"
      type: Available
    - lastTransitionTime: "2022-12-19T10:48:49Z"
      lastUpdateTime: "2022-12-19T10:49:09Z"
      message: ReplicaSet "abcd-6c885fd996" has successfully progressed.
      reason: NewReplicaSetAvailable
      status: "True"
      type: Progressing
  replicas: 2
  unavailableReplicas: 1
  updatedReplicas: 2


Evented list

Description
This PR introduces a new evented list model.  This addresses some of the issues in https://github.com/napari/napari/issues/1380, by making sure that all mutation operations on the list go through a few key methods (__setitem__, __delitem__, insert).  All other operations (like remove, append, clear go through these methods.  It's also a proper Generic type so you can use it in type annotations:
a: EventedList[int] = EventedList(['a'])  # type error

This also provides a NestableEventedList that emits recursive events when any of its children are altered (this is going to be key for connecting up events in the LayerGroup).  It also defines a Protocol SupportsEvents (any object that has an attribute called events that is an instance of an EmitterGroup).  All events emitted by nested children will bubble up to the root event, with an "index" attribute on the event that holds the index of the original emitter.  For instance:
In [1]: from napari.utils.events import NestableEventedList

In [2]: from napari.layers import Points

In [3]: root = NestableEventedList([0, [[], 1]])  # all nested mutable lists will become "eventful"

In [4]: root.events.connect(lambda e: print(e.index, e.type))  # let's watch the events

In [5]: p = Points()

In [6]: root[1, 0].append(p)
(1, 0, 0) inserting
(1, 0, 0) inserted

In [7]: p.opacity = 0.6 # any `SupportsEvents` interface will bubble up the event
(1, 0, 0) thumbnail
(1, 0, 0) status
(1, 0, 0) opacity

In [8]: root.pop()
1 removing
1 removed
Out[8]: [[<Points layer 'Points' at 0x7fbe081f9310>], 1]

In [9]: root.clear()
0 removing
0 removed

there's still one broken test (a new test that should work, but needs tweaking)
in future PRs
this isn't actually hooked up to anything at the moment.  but it forms a solid basis for eventful containers.  (I have an evented dict ready to go as well.  The idea would be to replace the current list model with this, but that will require porting a couple other niceties from that class first.
Type of change

[x] New feature (non-breaking change which adds functionality)

How has this been tested?

[ ] new tests make sure the list complies with the standard list API, and confirms events.  Still one broken test.
[x] all tests pass with my change

Final checklist:

[ ] My PR is the minimum possible work for the desired functionality
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] I have added tests that prove my fix is effective or that my feature works

closes #312

ok, everything is working here now, and this is ready for review.
I added typing_extensions  to our dependencies, to support Protocol... which we've discussed using elsewhere anyway.  I believe that needs to be there for anything <3.8.
also just want to make a quick note that I was able to dramatically simplify the logic for moving multiple items, but for the moment the NestableEventedList.move_multiple method is not emitting any move events.  Ultimately, that will probably only be used for drag/drop events with the layer Tree, and I'll update it when that PR is ready.

I would encourage people not to use the nested list unless they actually need a nested list that bubbles events up to the root (Which, I really do see as the key to getting layer groups to work).  It is a complex class (recursion always is), but it makes using the class much easier (since you only have to connect/listen to the top
I’d say use it (EventedList) in the dims model.  But, as you know, my opinion is that not enough of the layer widget will be reused for LayerGroups and TreeViews.  Even the item widget itself will have to turn into a QStyledItemDelegate.

sure, I like that syntax too.  I can add  __add__ /__iadd__ methods

running into no ability to do + with the lists

I added this (and merged master) go ahead and merge this into your branch and give it a try.
Also, an important note.  These two forms will return an EventedList
a = EventedList([1])
b = [2]
a += b  # a is modified in place and becomes [1, 2]
c = a + b  # a is not modified, c becomes an evented list

# however
c = b + a  #  c becomes [1 ,2] but is NOT an EventedList

we can probably force all "sums" to be evented by adding an __radd__ method... lemme know if you want that too

Thanks!! I've given using this ago in #1486 - looks like it's best to probably not create/ destroy the evented list though and rather modify in place (otherwise I'm worried I might break connections?), in which case I probably wont use this too much, though the a += b syntax is quite nice for in place modifications. Unfortunately in #1486 I want to pre-pend to the list, but maybe there is a better way of making the change I want (see the order and axis_labels properties in the ndim setter).

I'm starting to explore using the EventedList for the layer list. One thing that's not clear to me is how to combine the EventedList with the type checking/ custom lookup functionality provided by our current list model. Any pointers in the right direction here would be appreciated @tlambert03!!

I'm starting to explore using the EventedList for the layer list. One thing that's not clear to me is how to combine the EventedList with the type checking/ custom lookup functionality provided by our current list model. Any pointers in the right direction here would be appreciated @tlambert03!!

Just updated this PR to provide that functionality... you can import it from napari.utils.events import TypedEventedList.  It works pretty much the same as before, except the lookup function signature has one less argument: e.g. lookup = {str: lambda x: x.name} instead of lookup={str: lambda q, e: q == e.name}

@jni will like this one:  I added IPython tab autocompletion when using custom "name lookups" with a TypedList:
from napari.layers import Points, Layer
from napari.utils.events.containers import TypedList
layer_list = TypedList(
    [Points(name="supercalifragilisticexpialidocious")],
    basetype=Layer,
    lookup={str: lambda x: x.name}
)

layer = layer_list['sup  # then hit tab!

Thanks @tlambert03 this is looking great - it was very easy to drop the new TypedList and TypedEventedList in for LayerList and TransformChain in #1504, but I did encounter one problem with the new stuff
# Rearrange layers by tuple
layers[:] = layers[(1, 0, 2)]

napari/components/_tests/test_layers_list.py:105:
napari/utils/events/containers/_typed_list.py:68: in __getitem__
    return super().__getitem__(key)
    def __getitem__(self, key):  # noqa: F811 (redefinition)
>       result = self._list[key]
E       TypeError: list indices must be integers or slices, not tuple

awesome,  I asked over in https://github.com/napari/napari/pull/1504#issuecomment-663876341, but the discussion is probably better off here.  How do you feel about that layers[:] = layers[(1, 0, 2)] syntax vs layers.sort((1,0,2)).  I favor something like the latter, since it's a more numpy like syntax, makes clearer that we are not mutating the original object, and because we'll also need tuple-based indexing for nested lists more than we need it for sorting.

I guess neither layers[(1, 0, 2)]  nor layers.sort((1,0,2)) are standard syntax provided on normal list objects are they? In which case I wouldn't want to add them to our list object just for convenience unless we really need to as it starts to become confusing.
I agree layers[(1, 0, 2)] could be really confusing if we start wanting to use syntax like that for nested lists!!
What is the way to accomplish a reordering like this with a normal list? I'm pretty open to changing syntax here. Curious what @jni thinks too.

I guess neither layers[(1, 0, 2)] nor layers.sort((1,0,2)) are standard syntax provided on normal list objects are they?

well, actually... sort is a method on builtin list, but it doesn't do what this does.  I guess we want something a bit more like reorder.

What is the way to accomplish a reordering like this with a normal list?

as far as I know, there is no builtin method to reorder a list in-place.  So what I'm mostly seeing people do is mylist[:] = [mylist[i] for i in myorder]. That's already pretty straightforward, so perhaps we just:
# drop this syntax
layers[:] = layers[(1, 0, 2)]
# in favor of
layers[:] = [layers[i] for i in (1, 0, 2)]

ok, I made a bunch of changes that generally improve handling of slice indices ... but the last thing I'm running into when using this for the layerlist is issues around layer selection.  That _add method that listens to the layerlist's own added event should probably not have been connected as an event, but rather as a direct method.  and the way it unselects everything but the last added layer is giving me problems when using move_selected which also has a lot of conditional logic to manipulate the selection status of layers ... this is how these PRs end up getting big 😂

ok, I've tidied this up, and it's ready for review.  we've been using it in a number of other experimental branches and it's doing well.  and the test coverage is also pretty good.  This will ultimately replace the current list model, but that will be in a later PR.  So at the moment, merging this doesn't actually modify any actively used code in napari, it just makes it easier to work with in other PRs.

Thanks for the review @jni and the quick turn around on the changes @tlambert03, I think this is good to merge now!
As we start using in other PRs we can also make updates (including to the vispy event stuff), but it will be great to have this in and be able to press on with the evented data refactor!!

As we start using in other PRs we can also make updates (including to the vispy event stuff), but it will be great to have this in and be able to press on with the evented data refactor!!

agreed!  will work on polishing up the dataclass next.  (after 0.3.7 is of course just fine)


Can not read scheme Sublime Text 2.xml from '$ROOT_CONFIGS$/colors': Wrong color value: None)

I am getting the error when I install the jar file in intellij idea(14.0.3) from the File->Import Settings menu and restarting IDE.
Check attach screenshot

@rahulserver, could you please attach an archive you downloaded from the site? Probably it is corrupted or generated wrongly.
Do you have troubles with other themes?
What browser do you use?

I downloaded it from chrome. Here are the archive(s) attached(rename them to .jar instead of .txt as github did not allow me to upload .jar files)
Monokai Sublime Text 3.txt
Sublime Text 2.txt

@y-a-r-g I tried two themes till now and both gave issues, so did not try others. Both archives attached in my former message

Well, Sublime Text 2 is broken, probably it was an error while migration, I will fix it.
Monokai Sublime Text 3 looks good, can you please try it again and post error message if one presenet?

I've fixed "Sublime Text 2" theme. "Monokai Sublime Text 3" works good for me.


Github ask to upgrade Java version to pass sonar analysis

the pull request build passed ( https://github.com/lexemmens/podman-maven-plugin/pull/100 )

The referenced pull request has been merged :-)