quarto-dev / quarto-cli

Open-source scientific and technical publishing system built on Pandoc.
https://quarto.org
Other
3.95k stars 326 forks source link

site_libs dependency not updated when freeze is used. #10391

Open cderv opened 3 months ago

cderv commented 3 months ago

Observed behavior

I was testing revealjs/update-v5 branch in dev quarto-cli to render our demo slides at https://quarto.org/docs/presentations/revealjs/demo/

This new branch is using revealjs 5.1.0 and I would have expected this to be used.

cd quarto-web
# doing incremental render 
quarto render .\docs\presentations\revealjs\demo\index.qmd

Dependency in site_libs was updated

❯ grep -2 "revealjs[.]com" .\_site\site_libs\revealjs\dist\reveal.js
/*!
* reveal.js 5.1.0
* https://revealjs.com
* MIT licensed
*

But freezer is still using old version

❯ grep -2 "revealjs[.]com" .\_freeze\site_libs\revealjs\dist\reveal.js
/*!
* reveal.js 4.3.1
* https://revealjs.com
* MIT licensed
*

which implies that with freeze: true in our quarto-web project when doing

quarto render

the freezer is used for site_libs it seems, and the old revealjs is used... After quarto render I get

❯ grep -2 "revealjs[.]com" .\_site\site_libs\revealjs\dist\reveal.js
/*!
* reveal.js 4.3.1
* https://revealjs.com
* MIT licensed
*

back to old one.

If I delete the file, then the new version is put in freezer.

So I believe this is a conflict similar to our "different themes in websites", but when using freeze. All the revealjs presentation in the website are using same file in site_libs/.

It seems site_libs in the freezer will always win. So it needs to be updated somehow.

I need to understand this, and see what is the recommended way : Manuel invalidation or a fix in our site_libs handling...

cderv commented 3 months ago

And it seems we also have another copy of the dependency in .quarto project hidden folder

❯ grep -2 "revealjs[.]com" .\.quarto\_freeze\site_libs\revealjs\dist\reveal.js
/*!
* reveal.js 4.3.1
* https://revealjs.com
* MIT licensed
*

Not sure how it behave when new updated quarto with new revealjs update is used. 🤔

I'll try to build an easier example to investigate all this...

cderv commented 3 months ago

I'll try to build an easier example to investigate all this...

right now I can't reproduce on a simple website... It happens only inside quarto-web

cscheid commented 3 months ago

I wouldn't touch the freeze implementation without a longer discussion with @jjallaire and @dragonstyle; there's a lot of corner cases involved.

cderv commented 3 weeks ago

And we are hitting the problem in

I added new feature in quarto-support plugin, which requires an updated version of this plugin, and quarto-web still have the old version in freeze, which is used despite doing incremental rendering.

So we definitely have something going that is not great experience. I think I can solve in Quarto web by rerendering every presentations, or removing the revealjs folder from freeze.

cscheid commented 3 weeks ago

Let's have a discussion about this early in 1.7.

cderv commented 2 weeks ago

Just referencing another occurence of this

v1.6 is updating quarto-listing.js following #11177 - this change was not reflected in quarto-web until an incremental quarto render is ran on one of the blog post.

Though in the meantime, other change like .ejs template where applying and so old quarto-listing.js was no more adequate, leading to breakage in #11230.

Again, not great... we should have a way for quarto when rendered with a new version to tell the freezer site_libs to be updated when we known it needs to 🤔