Add CI for formatting and linting checks - #6

Open
etiennebacher wants to merge 4 commits into
mainfrom
lint-format
Open

Add CI for formatting and linting checks#6
etiennebacher wants to merge 4 commits into
mainfrom
lint-format

Conversation

@etiennebacher

@etiennebacheretiennebacher commented Jul 1, 2026

Copy link
Copy Markdown
Collaborator

This adds the same workflows as in palaeoverse but replaces Air by Panache for formatting. I also ran panache format **/*.qmd to format all qmd files (only ggplot/index.qmd so far).

@willgearty Panache formats text in addition to code chunks, for instance to wrap text to a maximum width. Is this fine with you?

Fixes#5

@etiennebacheretiennebacher changed the title Add CI for Panache and Jarl checksAdd CI for formatting and linting checksJul 1, 2026
@github-actions

Copy link
Copy Markdown

@willgearty

Copy link
Copy Markdown
Member

Hmm...I've always preferred to keep prose in long-form (not split to multiple lines) in markdown-like documents. Can we skip that check?

@etiennebacher

etiennebacher commented Jul 16, 2026

Copy link
Copy Markdown
CollaboratorAuthor

Sure, I added a config file to format code chunks but leave the surrounding text intact. I think we still want to have consistent code formatting since this is visible to readers.

@etiennebacher

Copy link
Copy Markdown
CollaboratorAuthor

I don't remember why I hadn't put this as "ready for review"

@etiennebacher
etiennebacher marked this pull request as ready for review July 27, 2026 13:46
Comment threadggplot/index.qmd
Comment on lines +26 to +27
```{r}
#| label: ggplot2

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the reason for switching to this? Is this considered better practice for some reason?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's the recommended way in Quarto: https://quarto.org/docs/computations/r.html#chunk-options

There are some corner case issues when using the old syntax in Quarto docs, e.g. quarto-dev/quarto#1023

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Huh, TIL

@LewisAJonesLewisAJones left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good... couple of comments for consideration.

I agree with @willgearty regarding not hard-wrapping long lines for prose.

@@ -0,0 +1,68 @@
# This workflow runs Panache for formatting and Jarl for linting. It stores artifacts about the
# outcome of each tool and the PR number. Those artifacts are then used in the workflow
# "format-lint-pr-comment.yaml" to post a comment so that it's clearer for external

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# "format-lint-pr-comment.yaml" to post a comment so that it's clearer for external
# "format-lint-comment.yaml" to post a comment so that it's clearer for external

Correct file name?

pull-requests: write
actions: read
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we also need to set up dependabot for updating?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Run lint check(s) for PRs and pushes

3 participants

@etiennebacher@willgearty@LewisAJones
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Add CI for formatting and linting checks - #6

Open
etiennebacher wants to merge 4 commits into
mainfrom
lint-format
Open

Add CI for formatting and linting checks#6
etiennebacher wants to merge 4 commits into
mainfrom
lint-format

Conversation

@etiennebacher

@etiennebacheretiennebacher commented Jul 1, 2026

Copy link
Copy Markdown
Collaborator

This adds the same workflows as in palaeoverse but replaces Air by Panache for formatting. I also ran panache format **/*.qmd to format all qmd files (only ggplot/index.qmd so far).

@willgearty Panache formats text in addition to code chunks, for instance to wrap text to a maximum width. Is this fine with you?

Fixes#5

@etiennebacheretiennebacher changed the title Add CI for Panache and Jarl checksAdd CI for formatting and linting checksJul 1, 2026
@github-actions

Copy link
Copy Markdown

@willgearty

Copy link
Copy Markdown
Member

Hmm...I've always preferred to keep prose in long-form (not split to multiple lines) in markdown-like documents. Can we skip that check?

@etiennebacher

etiennebacher commented Jul 16, 2026

Copy link
Copy Markdown
CollaboratorAuthor

Sure, I added a config file to format code chunks but leave the surrounding text intact. I think we still want to have consistent code formatting since this is visible to readers.

@etiennebacher

Copy link
Copy Markdown
CollaboratorAuthor

I don't remember why I hadn't put this as "ready for review"

@etiennebacher
etiennebacher marked this pull request as ready for review July 27, 2026 13:46
Comment threadggplot/index.qmd
Comment on lines +26 to +27
```{r}
#| label: ggplot2

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the reason for switching to this? Is this considered better practice for some reason?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's the recommended way in Quarto: https://quarto.org/docs/computations/r.html#chunk-options

There are some corner case issues when using the old syntax in Quarto docs, e.g. quarto-dev/quarto#1023

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Huh, TIL

@LewisAJonesLewisAJones left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good... couple of comments for consideration.

I agree with @willgearty regarding not hard-wrapping long lines for prose.

@@ -0,0 +1,68 @@
# This workflow runs Panache for formatting and Jarl for linting. It stores artifacts about the
# outcome of each tool and the PR number. Those artifacts are then used in the workflow
# "format-lint-pr-comment.yaml" to post a comment so that it's clearer for external

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# "format-lint-pr-comment.yaml" to post a comment so that it's clearer for external
# "format-lint-comment.yaml" to post a comment so that it's clearer for external

Correct file name?

pull-requests: write
actions: read
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we also need to set up dependabot for updating?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Run lint check(s) for PRs and pushes

3 participants

@etiennebacher@willgearty@LewisAJones
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add CI for formatting and linting checks - #6

Open
etiennebacher wants to merge 4 commits into
mainfrom
lint-format
Open

Add CI for formatting and linting checks#6
etiennebacher wants to merge 4 commits into
mainfrom
lint-format

Conversation

@etiennebacher

@etiennebacheretiennebacher commented Jul 1, 2026

Copy link
Copy Markdown
Collaborator

This adds the same workflows as in palaeoverse but replaces Air by Panache for formatting. I also ran panache format **/*.qmd to format all qmd files (only ggplot/index.qmd so far).

@willgearty Panache formats text in addition to code chunks, for instance to wrap text to a maximum width. Is this fine with you?

Fixes#5

@etiennebacheretiennebacher changed the title Add CI for Panache and Jarl checksAdd CI for formatting and linting checksJul 1, 2026
@github-actions

Copy link
Copy Markdown

@willgearty

Copy link
Copy Markdown
Member

Hmm...I've always preferred to keep prose in long-form (not split to multiple lines) in markdown-like documents. Can we skip that check?

@etiennebacher

etiennebacher commented Jul 16, 2026

Copy link
Copy Markdown
CollaboratorAuthor

Sure, I added a config file to format code chunks but leave the surrounding text intact. I think we still want to have consistent code formatting since this is visible to readers.

@etiennebacher

Copy link
Copy Markdown
CollaboratorAuthor

I don't remember why I hadn't put this as "ready for review"

@etiennebacher
etiennebacher marked this pull request as ready for review July 27, 2026 13:46
Comment threadggplot/index.qmd
Comment on lines +26 to +27
```{r}
#| label: ggplot2

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the reason for switching to this? Is this considered better practice for some reason?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's the recommended way in Quarto: https://quarto.org/docs/computations/r.html#chunk-options

There are some corner case issues when using the old syntax in Quarto docs, e.g. quarto-dev/quarto#1023

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Huh, TIL

@LewisAJonesLewisAJones left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good... couple of comments for consideration.

I agree with @willgearty regarding not hard-wrapping long lines for prose.

@@ -0,0 +1,68 @@
# This workflow runs Panache for formatting and Jarl for linting. It stores artifacts about the
# outcome of each tool and the PR number. Those artifacts are then used in the workflow
# "format-lint-pr-comment.yaml" to post a comment so that it's clearer for external

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# "format-lint-pr-comment.yaml" to post a comment so that it's clearer for external
# "format-lint-comment.yaml" to post a comment so that it's clearer for external

Correct file name?

pull-requests: write
actions: read
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we also need to set up dependabot for updating?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Run lint check(s) for PRs and pushes

3 participants

@etiennebacher@willgearty@LewisAJones
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add CI for formatting and linting checks - #6

Open
etiennebacher wants to merge 4 commits into
mainfrom
lint-format
Open

Add CI for formatting and linting checks#6
etiennebacher wants to merge 4 commits into
mainfrom
lint-format

Conversation

@etiennebacher

@etiennebacheretiennebacher commented Jul 1, 2026

Copy link
Copy Markdown
Collaborator

This adds the same workflows as in palaeoverse but replaces Air by Panache for formatting. I also ran panache format **/*.qmd to format all qmd files (only ggplot/index.qmd so far).

@willgearty Panache formats text in addition to code chunks, for instance to wrap text to a maximum width. Is this fine with you?

Fixes#5

@etiennebacheretiennebacher changed the title Add CI for Panache and Jarl checksAdd CI for formatting and linting checksJul 1, 2026
@github-actions

Copy link
Copy Markdown

@willgearty

Copy link
Copy Markdown
Member

Hmm...I've always preferred to keep prose in long-form (not split to multiple lines) in markdown-like documents. Can we skip that check?

@etiennebacher

etiennebacher commented Jul 16, 2026

Copy link
Copy Markdown
CollaboratorAuthor

Sure, I added a config file to format code chunks but leave the surrounding text intact. I think we still want to have consistent code formatting since this is visible to readers.

@etiennebacher

Copy link
Copy Markdown
CollaboratorAuthor

I don't remember why I hadn't put this as "ready for review"

@etiennebacher
etiennebacher marked this pull request as ready for review July 27, 2026 13:46
Comment threadggplot/index.qmd
Comment on lines +26 to +27
```{r}
#| label: ggplot2

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the reason for switching to this? Is this considered better practice for some reason?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's the recommended way in Quarto: https://quarto.org/docs/computations/r.html#chunk-options

There are some corner case issues when using the old syntax in Quarto docs, e.g. quarto-dev/quarto#1023

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Huh, TIL

@LewisAJonesLewisAJones left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good... couple of comments for consideration.

I agree with @willgearty regarding not hard-wrapping long lines for prose.

@@ -0,0 +1,68 @@
# This workflow runs Panache for formatting and Jarl for linting. It stores artifacts about the
# outcome of each tool and the PR number. Those artifacts are then used in the workflow
# "format-lint-pr-comment.yaml" to post a comment so that it's clearer for external

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# "format-lint-pr-comment.yaml" to post a comment so that it's clearer for external
# "format-lint-comment.yaml" to post a comment so that it's clearer for external

Correct file name?

pull-requests: write
actions: read
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we also need to set up dependabot for updating?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Run lint check(s) for PRs and pushes

3 participants

@etiennebacher@willgearty@LewisAJones
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Add CI for formatting and linting checks - #6

Open
etiennebacher wants to merge 4 commits into
mainfrom
lint-format
Open

Add CI for formatting and linting checks#6
etiennebacher wants to merge 4 commits into
mainfrom
lint-format

Conversation

@etiennebacher

@etiennebacheretiennebacher commented Jul 1, 2026

Copy link
Copy Markdown
Collaborator

This adds the same workflows as in palaeoverse but replaces Air by Panache for formatting. I also ran panache format **/*.qmd to format all qmd files (only ggplot/index.qmd so far).

@willgearty Panache formats text in addition to code chunks, for instance to wrap text to a maximum width. Is this fine with you?

Fixes#5

@etiennebacheretiennebacher changed the title Add CI for Panache and Jarl checksAdd CI for formatting and linting checksJul 1, 2026
@github-actions

Copy link
Copy Markdown

@willgearty

Copy link
Copy Markdown
Member

Hmm...I've always preferred to keep prose in long-form (not split to multiple lines) in markdown-like documents. Can we skip that check?

@etiennebacher

etiennebacher commented Jul 16, 2026

Copy link
Copy Markdown
CollaboratorAuthor

Sure, I added a config file to format code chunks but leave the surrounding text intact. I think we still want to have consistent code formatting since this is visible to readers.

@etiennebacher

Copy link
Copy Markdown
CollaboratorAuthor

I don't remember why I hadn't put this as "ready for review"

@etiennebacher
etiennebacher marked this pull request as ready for review July 27, 2026 13:46
Comment threadggplot/index.qmd
Comment on lines +26 to +27
```{r}
#| label: ggplot2

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the reason for switching to this? Is this considered better practice for some reason?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's the recommended way in Quarto: https://quarto.org/docs/computations/r.html#chunk-options

There are some corner case issues when using the old syntax in Quarto docs, e.g. quarto-dev/quarto#1023

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Huh, TIL

@LewisAJonesLewisAJones left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good... couple of comments for consideration.

I agree with @willgearty regarding not hard-wrapping long lines for prose.

@@ -0,0 +1,68 @@
# This workflow runs Panache for formatting and Jarl for linting. It stores artifacts about the
# outcome of each tool and the PR number. Those artifacts are then used in the workflow
# "format-lint-pr-comment.yaml" to post a comment so that it's clearer for external

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# "format-lint-pr-comment.yaml" to post a comment so that it's clearer for external
# "format-lint-comment.yaml" to post a comment so that it's clearer for external

Correct file name?

pull-requests: write
actions: read
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we also need to set up dependabot for updating?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Run lint check(s) for PRs and pushes

3 participants

@etiennebacher@willgearty@LewisAJones
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add CI for formatting and linting checks - #6

Open
etiennebacher wants to merge 4 commits into
mainfrom
lint-format
Open

Add CI for formatting and linting checks#6
etiennebacher wants to merge 4 commits into
mainfrom
lint-format

Conversation

@etiennebacher

@etiennebacheretiennebacher commented Jul 1, 2026

Copy link
Copy Markdown
Collaborator

This adds the same workflows as in palaeoverse but replaces Air by Panache for formatting. I also ran panache format **/*.qmd to format all qmd files (only ggplot/index.qmd so far).

@willgearty Panache formats text in addition to code chunks, for instance to wrap text to a maximum width. Is this fine with you?

Fixes#5

@etiennebacheretiennebacher changed the title Add CI for Panache and Jarl checksAdd CI for formatting and linting checksJul 1, 2026
@github-actions

Copy link
Copy Markdown

@willgearty

Copy link
Copy Markdown
Member

Hmm...I've always preferred to keep prose in long-form (not split to multiple lines) in markdown-like documents. Can we skip that check?

@etiennebacher

etiennebacher commented Jul 16, 2026

Copy link
Copy Markdown
CollaboratorAuthor

Sure, I added a config file to format code chunks but leave the surrounding text intact. I think we still want to have consistent code formatting since this is visible to readers.

@etiennebacher

Copy link
Copy Markdown
CollaboratorAuthor

I don't remember why I hadn't put this as "ready for review"

@etiennebacher
etiennebacher marked this pull request as ready for review July 27, 2026 13:46
Comment threadggplot/index.qmd
Comment on lines +26 to +27
```{r}
#| label: ggplot2

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the reason for switching to this? Is this considered better practice for some reason?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's the recommended way in Quarto: https://quarto.org/docs/computations/r.html#chunk-options

There are some corner case issues when using the old syntax in Quarto docs, e.g. quarto-dev/quarto#1023

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Huh, TIL

@LewisAJonesLewisAJones left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good... couple of comments for consideration.

I agree with @willgearty regarding not hard-wrapping long lines for prose.

@@ -0,0 +1,68 @@
# This workflow runs Panache for formatting and Jarl for linting. It stores artifacts about the
# outcome of each tool and the PR number. Those artifacts are then used in the workflow
# "format-lint-pr-comment.yaml" to post a comment so that it's clearer for external

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# "format-lint-pr-comment.yaml" to post a comment so that it's clearer for external
# "format-lint-comment.yaml" to post a comment so that it's clearer for external

Correct file name?

pull-requests: write
actions: read
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we also need to set up dependabot for updating?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Run lint check(s) for PRs and pushes

3 participants

@etiennebacher@willgearty@LewisAJones
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add CI for formatting and linting checks - #6

Open
etiennebacher wants to merge 4 commits into
mainfrom
lint-format
Open

Add CI for formatting and linting checks#6
etiennebacher wants to merge 4 commits into
mainfrom
lint-format

Conversation

@etiennebacher

@etiennebacheretiennebacher commented Jul 1, 2026

Copy link
Copy Markdown
Collaborator

This adds the same workflows as in palaeoverse but replaces Air by Panache for formatting. I also ran panache format **/*.qmd to format all qmd files (only ggplot/index.qmd so far).

@willgearty Panache formats text in addition to code chunks, for instance to wrap text to a maximum width. Is this fine with you?

Fixes#5

@etiennebacheretiennebacher changed the title Add CI for Panache and Jarl checksAdd CI for formatting and linting checksJul 1, 2026
@github-actions

Copy link
Copy Markdown

@willgearty

Copy link
Copy Markdown
Member

Hmm...I've always preferred to keep prose in long-form (not split to multiple lines) in markdown-like documents. Can we skip that check?

@etiennebacher

etiennebacher commented Jul 16, 2026

Copy link
Copy Markdown
CollaboratorAuthor

Sure, I added a config file to format code chunks but leave the surrounding text intact. I think we still want to have consistent code formatting since this is visible to readers.

@etiennebacher

Copy link
Copy Markdown
CollaboratorAuthor

I don't remember why I hadn't put this as "ready for review"

@etiennebacher
etiennebacher marked this pull request as ready for review July 27, 2026 13:46
Comment threadggplot/index.qmd
Comment on lines +26 to +27
```{r}
#| label: ggplot2

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the reason for switching to this? Is this considered better practice for some reason?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's the recommended way in Quarto: https://quarto.org/docs/computations/r.html#chunk-options

There are some corner case issues when using the old syntax in Quarto docs, e.g. quarto-dev/quarto#1023

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Huh, TIL

@LewisAJonesLewisAJones left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good... couple of comments for consideration.

I agree with @willgearty regarding not hard-wrapping long lines for prose.

@@ -0,0 +1,68 @@
# This workflow runs Panache for formatting and Jarl for linting. It stores artifacts about the
# outcome of each tool and the PR number. Those artifacts are then used in the workflow
# "format-lint-pr-comment.yaml" to post a comment so that it's clearer for external

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# "format-lint-pr-comment.yaml" to post a comment so that it's clearer for external
# "format-lint-comment.yaml" to post a comment so that it's clearer for external

Correct file name?

pull-requests: write
actions: read
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we also need to set up dependabot for updating?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Run lint check(s) for PRs and pushes

3 participants

@etiennebacher@willgearty@LewisAJones
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Add CI for formatting and linting checks - #6

Open
etiennebacher wants to merge 4 commits into
mainfrom
lint-format
Open

Add CI for formatting and linting checks#6
etiennebacher wants to merge 4 commits into
mainfrom
lint-format

Conversation

@etiennebacher

@etiennebacheretiennebacher commented Jul 1, 2026

Copy link
Copy Markdown
Collaborator

This adds the same workflows as in palaeoverse but replaces Air by Panache for formatting. I also ran panache format **/*.qmd to format all qmd files (only ggplot/index.qmd so far).

@willgearty Panache formats text in addition to code chunks, for instance to wrap text to a maximum width. Is this fine with you?

Fixes#5

@etiennebacheretiennebacher changed the title Add CI for Panache and Jarl checksAdd CI for formatting and linting checksJul 1, 2026
@github-actions

Copy link
Copy Markdown

@willgearty

Copy link
Copy Markdown
Member

Hmm...I've always preferred to keep prose in long-form (not split to multiple lines) in markdown-like documents. Can we skip that check?

@etiennebacher

etiennebacher commented Jul 16, 2026

Copy link
Copy Markdown
CollaboratorAuthor

Sure, I added a config file to format code chunks but leave the surrounding text intact. I think we still want to have consistent code formatting since this is visible to readers.

@etiennebacher

Copy link
Copy Markdown
CollaboratorAuthor

I don't remember why I hadn't put this as "ready for review"

@etiennebacher
etiennebacher marked this pull request as ready for review July 27, 2026 13:46
Comment threadggplot/index.qmd
Comment on lines +26 to +27
```{r}
#| label: ggplot2

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the reason for switching to this? Is this considered better practice for some reason?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's the recommended way in Quarto: https://quarto.org/docs/computations/r.html#chunk-options

There are some corner case issues when using the old syntax in Quarto docs, e.g. quarto-dev/quarto#1023

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Huh, TIL

@LewisAJonesLewisAJones left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good... couple of comments for consideration.

I agree with @willgearty regarding not hard-wrapping long lines for prose.

@@ -0,0 +1,68 @@
# This workflow runs Panache for formatting and Jarl for linting. It stores artifacts about the
# outcome of each tool and the PR number. Those artifacts are then used in the workflow
# "format-lint-pr-comment.yaml" to post a comment so that it's clearer for external

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# "format-lint-pr-comment.yaml" to post a comment so that it's clearer for external
# "format-lint-comment.yaml" to post a comment so that it's clearer for external

Correct file name?

pull-requests: write
actions: read
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we also need to set up dependabot for updating?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Run lint check(s) for PRs and pushes

3 participants

@etiennebacher@willgearty@LewisAJones