Skip to content

Add 2026 poster#63

Merged
d33bs merged 16 commits intoWayScience:mainfrom
d33bs:poster
Apr 23, 2026
Merged

Add 2026 poster#63
d33bs merged 16 commits intoWayScience:mainfrom
d33bs:poster

Conversation

@d33bs
Copy link
Copy Markdown
Member

@d33bs d33bs commented Apr 22, 2026

Description

This PR adds an abstract and poster content in support of communicating OME-Arrow to a wider community.

What kind of change(s) are included?

  • Documentation (changes docs or other related content)
  • Bug fix (fixes an issue).
  • Enhancement (adds functionality).
  • Breaking change (these changes would cause existing functionality to not work as expected).

Checklist

Please ensure that all boxes are checked before indicating that this pull request is ready for review.

  • I have read and followed the CONTRIBUTING.md guidelines.
  • I have searched for existing content to ensure this is not a duplicate.
  • I have performed a self-review of these additions (including spelling, grammar, and related).
  • These changes pass all pre-commit checks.
  • I have added comments to my code to help provide understanding
  • I have added a test which covers the code changes found within this PR
  • I have deleted all non-relevant text in this pull request template.

Summary by CodeRabbit

  • New Features

    • Added a customizable poster creation workflow and Typst poster template for community presentations
  • Documentation

    • New "Why OME Arrow" guide and presentations section with poster, abstract, and README for poster workflow
    • Added poster Quarto/Typst files and usage instructions; updated docs navigation and related-project links
  • Chores

    • Updated pre-commit tooling version
    • Updated README header image

Copilot AI review requested due to automatic review settings April 22, 2026 21:29
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 22, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 6b6002a6-a202-4346-9eeb-14aae764c10b

📥 Commits

Reviewing files that changed from the base of the PR and between a891ea9 and 849ad6a.

📒 Files selected for processing (1)
  • README.md
✅ Files skipped from review due to trivial changes (1)
  • README.md

📝 Walkthrough

Walkthrough

Adds a new Quarto+Typst poster (OME-Arrow) and supporting docs, introduces Typst poster templates and a Quarto extension, updates docs index and README branding, bumps the ruff pre-commit hook, and adds a Poethepoet task for local poster preview.

Changes

Cohort / File(s) Summary
Quarto Poster Extension
docs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/_extension.yml, docs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/typst-template.typ, docs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/typst-show.typ
Adds a Quarto extension and Typst poster template + show rule: defines poster(...) layout, page sizing/typography, header/footer, and injects Quarto metadata into the Typst poster invocation.
Poster Content & Workflow
docs/presentations/2026-OME-community-meeting/abstract.md, docs/presentations/2026-OME-community-meeting/poster.qmd, docs/presentations/2026-OME-community-meeting/readme.md
Adds poster materials for “OME-Arrow”: abstract, full poster QMD (content, benchmarks, demo snippet), and README with build/preview instructions and asset generation commands.
Documentation Indexing
docs/src/index.md, docs/src/presentations.md, docs/src/why-ome-arrow.md
Adds “why-ome-arrow” and “presentations” docs, updates site TOC and adds guidance/benchmarks and high-level motivation for OME-Arrow.
Project Config & Branding
.pre-commit-config.yaml, README.md, pyproject.toml
Bumps Ruff pre-commit hook from v0.15.10v0.15.11; replaces top README header image with ome-arrow-with-text.png; adds a Poethepoet task tasks.poster-preview.shell to run Quarto preview with path fallbacks.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Suggested reviewers

  • MikeLippincott

Poem

🐰
A poster blooms in Arrow light,
Typst and Quarto make it right,
Docs and demos hop in line,
Data, visuals, neat design —
a rabbit gives a tiny cheer 🥕

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Add 2026 poster' accurately describes the main change: adding poster content and documentation for the 2026 OME Community Meeting.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Warning

Review ran into problems

🔥 Problems

Git: Failed to clone repository. Please run the @coderabbitai full review command to re-trigger a full review. If the issue persists, set path_filters to include or exclude specific files.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR adds new documentation and presentation assets (abstract + Quarto/Typst poster) to help communicate OME-Arrow to a wider community, and wires the new docs pages into the Sphinx/MyST docs site.

Changes:

  • Add “Why OME Arrow?” and “Presentations” docs pages and include them in the docs toctree.
  • Add 2026 OME Community Meeting poster source (.qmd), a custom Quarto/Typst poster template extension, and supporting images/abstract.
  • Add a Poe task to preview the poster and bump the ruff pre-commit hook version.

Reviewed changes

Copilot reviewed 12 out of 30 changed files in this pull request and generated 9 comments.

Show a summary per file
File Description
pyproject.toml Adds a Poe task to preview the Quarto poster.
docs/src/why-ome-arrow.md New documentation page explaining the motivation and positioning of OME-Arrow.
docs/src/presentations.md New docs page linking to the 2026 poster PDF.
docs/src/index.md Adds the new docs pages to the toctree.
docs/src/_static/logo.png Static asset change/addition for documentation branding.
docs/presentations/2026-OME-community-meeting/readme.md Adds build/preview instructions and references for poster development.
docs/presentations/2026-OME-community-meeting/poster.qmd Adds the Quarto poster source content.
docs/presentations/2026-OME-community-meeting/images/spacer.png Adds an image asset used in poster header composition.
docs/presentations/2026-OME-community-meeting/images/ome-arrow-qr.png Adds QR code image asset for the poster.
docs/presentations/2026-OME-community-meeting/images/ome-arrow-qr-text.png Adds QR code + text composite image asset for the poster.
docs/presentations/2026-OME-community-meeting/abstract.md Adds the meeting abstract content.
docs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/typst-template.typ Introduces a custom Typst poster template (modified).
docs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/typst-show.typ Wires Quarto metadata into the Typst poster template.
docs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/_extension.yml Registers the custom Quarto/Typst format extension.
README.md Updates the README header image reference.
.pre-commit-config.yaml Bumps astral-sh/ruff-pre-commit rev.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

lazy = OMEArrow.scan("image.parquet").slice_lazy(0, 512, 0, 512).collect()

# visualize the image with pyvista for jupyter-friendly views
oa.view(how="pyvista)
Copy link

Copilot AI Apr 22, 2026

Choose a reason for hiding this comment

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

The Python example has an unterminated string literal: oa.view(how="pyvista) is missing the closing quote. This will break syntax highlighting and can confuse readers copying the snippet; close the string and the call properly.

Suggested change
oa.view(how="pyvista)
oa.view(how="pyvista")

Copilot uses AI. Check for mistakes.

## OME-Zarr and iceberg-bioimage

![OME-Zarr is strong for cloud-native image storage and distribution. OME-Arrow is complementary (not a replacement) when images must be queried with tabular metadata and measurements. One integration pattern uses [`iceberg-bioimage`](https://github.com/WayScience/iceberg-bioimage) as a warehouse/control-plane layer and [`duckdb_zarr`](https://github.com/photometric/duckdb-zarr) for analytical access to OME-Zarr-backed data. Here, **OME-Zarr / OME-TIFF** remain exchange formats, while **OME-Arrow / Parquet / Arrow-native tables** support joins and analytics, with **Lance** as a random-access table option.](images/icebeg-bioimage-ome-zarr-integration.png)
Copy link

Copilot AI Apr 22, 2026

Choose a reason for hiding this comment

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

The image filename icebeg-bioimage-ome-zarr-integration.png appears to be a misspelling of iceberg (it’s referenced as iceberg-bioimage in the caption). Consider renaming the asset + updating the reference to avoid confusion and make the path easier to grep/maintain.

Suggested change
![OME-Zarr is strong for cloud-native image storage and distribution. OME-Arrow is complementary (not a replacement) when images must be queried with tabular metadata and measurements. One integration pattern uses [`iceberg-bioimage`](https://github.com/WayScience/iceberg-bioimage) as a warehouse/control-plane layer and [`duckdb_zarr`](https://github.com/photometric/duckdb-zarr) for analytical access to OME-Zarr-backed data. Here, **OME-Zarr / OME-TIFF** remain exchange formats, while **OME-Arrow / Parquet / Arrow-native tables** support joins and analytics, with **Lance** as a random-access table option.](images/icebeg-bioimage-ome-zarr-integration.png)
![OME-Zarr is strong for cloud-native image storage and distribution. OME-Arrow is complementary (not a replacement) when images must be queried with tabular metadata and measurements. One integration pattern uses [`iceberg-bioimage`](https://github.com/WayScience/iceberg-bioimage) as a warehouse/control-plane layer and [`duckdb_zarr`](https://github.com/photometric/duckdb-zarr) for analytical access to OME-Zarr-backed data. Here, **OME-Zarr / OME-TIFF** remain exchange formats, while **OME-Arrow / Parquet / Arrow-native tables** support joins and analytics, with **Lance** as a random-access table option.](images/iceberg-bioimage-ome-zarr-integration.png)

Copilot uses AI. Check for mistakes.
Comment on lines +124 to +136
// add one more column at the start for the left-side image
rows: (auto, auto),
columns: (210pt, title_column_size, univ_logo_column_size),
column-gutter: 25pt,
row-gutter: 30pt,

// left-side image cell
grid.cell(
pad(top: -18pt,
image("images/ome-arrow-logo.png", width: 210pt),
),
rowspan: 3,
align: left,
Copy link

Copilot AI Apr 22, 2026

Choose a reason for hiding this comment

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

The header grid declares rows: (auto, auto) but later uses rowspan: 3 for multiple cells. With only two rows defined, this is likely invalid (or at least inconsistent) and may cause the Typst template to fail to compile. Consider defining three rows (e.g., title/authors/departments) or adjusting the rowspan values to match the declared grid shape.

Copilot uses AI. Check for mistakes.
Comment on lines +156 to +158
pad(top: 2pt, pad( left: 20pt,
image(univ_logo, width: 130%),
)),
Copy link

Copilot AI Apr 22, 2026

Choose a reason for hiding this comment

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

This pad(...) call appears malformed: pad(top: 2pt, pad(left: 20pt, ...)) nests a second pad( as if it were a named argument, which Typst won’t parse. Use a single pad call with multiple named parameters (e.g., top, left) around the image.

Suggested change
pad(top: 2pt, pad( left: 20pt,
image(univ_logo, width: 130%),
)),
pad(top: 2pt, left: 20pt,
image(univ_logo, width: 130%),
),

Copilot uses AI. Check for mistakes.
$if(footer-url-font-size)$ footer_url_font_size: $footer-url-font-size$, $endif$

// Footer's text font size (in pt).
$if(footer-text-font-size)$ footer_text_font_size: [$footer-text-font-size$], $endif$
Copy link

Copilot AI Apr 22, 2026

Choose a reason for hiding this comment

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

footer_text_font_size is forwarded as a bracketed content value ([$footer-text-font-size$]), but the template casts it with int(...). This will likely fail at render time unless it’s a plain numeric value. Pass the raw metadata value (without brackets) so it can be parsed/cast correctly.

Suggested change
$if(footer-text-font-size)$ footer_text_font_size: [$footer-text-font-size$], $endif$
$if(footer-text-font-size)$ footer_text_font_size: $footer-text-font-size$, $endif$

Copilot uses AI. Check for mistakes.
Comment thread docs/src/presentations.md

## OME Community Meeting 2026

- Poster PDF: [OME-Arrow 2026 poster (WayScience/ome-arrow)](https://github.com/WayScience/ome-arrow/blob/main/docs/presentations/2026-OME-community-meeting/ome-arrow-2026-poster.pdf)
Copy link

Copilot AI Apr 22, 2026

Choose a reason for hiding this comment

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

The poster link points to the GitHub blob URL, which renders a GitHub HTML page rather than reliably serving the PDF in docs/offline contexts. Consider linking to the raw.githubusercontent.com URL or (preferably) using a relative link to the PDF within the documentation site so it works when the docs are built locally.

Suggested change
- Poster PDF: [OME-Arrow 2026 poster (WayScience/ome-arrow)](https://github.com/WayScience/ome-arrow/blob/main/docs/presentations/2026-OME-community-meeting/ome-arrow-2026-poster.pdf)
- Poster PDF: [OME-Arrow 2026 poster (WayScience/ome-arrow)](../presentations/2026-OME-community-meeting/ome-arrow-2026-poster.pdf)

Copilot uses AI. Check for mistakes.
Comment on lines +49 to +56
#set text(42pt)
#block(
fill: rgb(footer_color),
width: 100%,
inset: 20pt,
radius: 10pt,
// adds text to footer
[
Copy link

Copilot AI Apr 22, 2026

Choose a reason for hiding this comment

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

fill: rgb(footer_color) is passed a string from Quarto metadata (e.g., "CBE9E1" in the poster front matter). Typst’s rgb(...) typically expects numeric channels or a color literal, so this may fail unless you normalize the value (e.g., require #RRGGBB in metadata or prepend # before converting).

Copilot uses AI. Check for mistakes.
Comment on lines +16 to +22
```bash
# preview the poster during development
uv run poe poster-preview

# build the poster PDF from source
uv run poe poster-render
```
Copy link

Copilot AI Apr 22, 2026

Choose a reason for hiding this comment

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

The README instructs running uv run poe poster-render, but there is no poster-render task defined in pyproject.toml (only poster-preview). Either add the missing Poe task or update the docs to the supported command(s).

Copilot uses AI. Check for mistakes.
Comment on lines +96 to +112
#v(10pt, weak: true)
#set align(left)
#set text({ 44pt }, weight: 600, font: "Vollkorn", fill: rgb("#2A6F63"))
#v(45pt, weak: true)
#if it.numbering != none {
numbering("I.", deepest)
h(7pt, weak: true)
}
#it.body
#v(25pt, weak: true)
#line(length: 100%, stroke: rgb(200, 200, 200))
#v(25pt, weak: true)

// all other headers
] else [
#set text({ 36pt }, weight: 600, font: "Vollkorn", fill: rgb("#3E877A"), style: "italic")
#if it.level == 2 {
Copy link

Copilot AI Apr 22, 2026

Choose a reason for hiding this comment

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

#set text({ 44pt }, ...) / #set text({ 36pt }, ...) appear to pass a content block as the font size. set text expects a length (or size: named arg), so this likely won’t type-check in Typst. Use a numeric length directly (e.g., 44pt) or size: 44pt / size: 36pt.

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 7

🧹 Nitpick comments (2)
README.md (1)

1-1: Add alt text for the README logo.

Line 1 embeds the new branding image without alternative text, which makes the README less accessible when images are unavailable or read by assistive tech.

♿ Proposed README image tweak
-<img width="600" src="https://raw.githubusercontent.com/wayscience/ome-arrow/main/docs/src/_static/ome-arrow-with-text.png?raw=true">
+<img width="600" alt="OME-Arrow" src="https://raw.githubusercontent.com/wayscience/ome-arrow/main/docs/src/_static/ome-arrow-with-text.png?raw=true">
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@README.md` at line 1, The README embeds an image tag without alt text which
hurts accessibility; update the <img> tag to include a descriptive alt attribute
(e.g., alt="OME Arrow logo" or similar meaningful description) so screen readers
and broken-image fallbacks can present useful information, and optionally add a
title attribute for hover tooltips.
docs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/typst-template.typ (1)

15-19: Honor the exposed logo and author sizing parameters.

univ_logo_scale and authors_font_size are accepted and converted, but the rendered header still uses hardcoded sizes, so metadata overrides silently do nothing.

♻️ Proposed refactor
   univ_logo_scale: "140",
   univ_logo_column_size: "10",
   title_column_size: "33",
   title_font_size: "42",
   authors_font_size: "32",
+  departments_font_size: "26",
   footer_url_font_size: "40",
   footer_text_font_size: "40",
@@
   univ_logo_scale = int(univ_logo_scale) * 1%
   title_font_size = int(title_font_size) * 1pt
   authors_font_size = int(authors_font_size) * 1pt
+  departments_font_size = int(departments_font_size) * 1pt
   num_columns = int(num_columns)
@@
-        image(univ_logo, width: 130%),
+        image(univ_logo, width: univ_logo_scale),
@@
-    pad(top: 5pt, text(size: 28pt, authors)),
+    pad(top: 5pt, text(size: authors_font_size, authors)),
 
     // department and notes display
-    pad(top: 5pt, text(size: 26pt, emph(departments)))
+    pad(top: 5pt, text(size: departments_font_size, emph(departments)))

Also applies to: 29-31, 154-167

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@docs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/typst-template.typ`
around lines 15 - 19, The header rendering currently ignores the converted
metadata variables (univ_logo_scale, univ_logo_column_size, title_column_size,
title_font_size, authors_font_size) and instead uses hardcoded sizes; update the
typst template where the header, logo image and author text are composed to
replace the hardcoded numeric literals with the corresponding variables (use the
converted values and append appropriate units/percentages or fallbacks), ensure
the logo/image sizing and column widths use univ_logo_scale and
univ_logo_column_size, the title uses title_font_size and title_column_size, and
the author block uses authors_font_size so metadata overrides actually take
effect; keep existing conversion logic but reference those converted symbols in
the image(), text(), and layout calls and provide sensible default values if any
variable is missing.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@docs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/typst-show.typ`:
- Around line 67-71: The footer_text_font_size parameter is incorrectly wrapped
in Typst content brackets; update the assignment in typst-show.typ so
footer_text_font_size uses a plain numeric value like footer_url_font_size
(remove the surrounding [...] from the $if(footer-text-font-size)$ branch),
ensuring the poster() call (and its int() conversion in typst-template.typ)
receives a numeric string; modify the $if...$ block referencing
footer_text_font_size to mirror the footer_url_font_size pattern.

In
`@docs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/typst-template.typ`:
- Line 4: The default value for the metadata key size is currently a quoted
descriptive string that cannot be parsed as WIDTHxHEIGHT; update the default to
a parseable poster size (for example "36x24" without extra quotes or descriptive
text) so the code that parses WIDTHxHEIGHT (lines referencing size parsing) can
safely call int() on the split parts; locate the size declaration in
typst-template.typ (the size: "'36x24' or '48x36''" entry) and replace it with a
simple parseable default like "36x24" (or choose one valid option) so downstream
parsing of WIDTH and HEIGHT succeeds.

In `@docs/presentations/2026-OME-community-meeting/poster.qmd`:
- Around line 48-52: The demo snippet has a Python syntax error and wrong
variable reference: the oa.view call has an unterminated string and it uses oa
instead of the collected crop; fix by closing the quote in the view call
(how="pyvista") and call view on the collected variable (lazy.view(...)) after
OMEArrow.scan(...).slice_lazy(...).collect(); ensure the symbols OMEArrow.scan,
slice_lazy, collect, and lazy.view are used so the cropped image is actually
visualized.
- Around line 59-61: The image filename referenced in the poster content under
the "OME-Zarr and iceberg-bioimage" heading is misspelled as
images/icebeg-bioimage-ome-zarr-integration.png (missing an "r"); update the
markdown reference in docs/presentations/2026-OME-community-meeting/poster.qmd
to images/iceberg-bioimage-ome-zarr-integration.png and also rename the actual
file in docs/presentations/2026-OME-community-meeting/images/ from
icebeg-bioimage-ome-zarr-integration.png to
iceberg-bioimage-ome-zarr-integration.png so the link and filename match the
iceberg-bioimage project name.

In `@docs/presentations/2026-OME-community-meeting/readme.md`:
- Around line 46-48: The README text and the ImageMagick commands are
inconsistent: the heading claims "150 dpi" but both commands use "-density 300".
Update the documentation so they match by either changing the heading text to
"150 dpi" -> "300 dpi" or altering the two magick commands (the lines producing
poster.png and poster.jpg with "-density 300") to use "-density 150"; ensure the
phrasing and both command lines (poster.png and poster.jpg) are consistent.
- Around line 50-55: The ImageMagick example still hardcodes the label "The
Software Gardening Almanack"; update the magick command's label argument to a
relevant title or neutral placeholder (e.g., "OME-Arrow Poster" or "{{TITLE}}")
so the documented command produces the correct poster title; edit the label:"The
Software Gardening Almanack" part in the magick invocation to the new text in
the readme's example.

In `@pyproject.toml`:
- Around line 154-163: The README references a Poe task named poster-render but
the Poe config only defines tasks.poster-preview.shell, so add a new Poe task
named tasks.poster-render.shell (or rename poster-preview to poster-render) that
invokes Quarto render for
docs/presentations/2026-OME-community-meeting/poster.qmd (or call the
appropriate quarto binary fallback like /Applications/quarto/bin/quarto) and
exits non‑zero with a clear error if Quarto is not found; ensure the new task
mirrors the existing conditional logic in tasks.poster-preview.shell but runs
"quarto render ... --output" (or the desired render command) so the documented
uv run poe poster-render command works.

---

Nitpick comments:
In
`@docs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/typst-template.typ`:
- Around line 15-19: The header rendering currently ignores the converted
metadata variables (univ_logo_scale, univ_logo_column_size, title_column_size,
title_font_size, authors_font_size) and instead uses hardcoded sizes; update the
typst template where the header, logo image and author text are composed to
replace the hardcoded numeric literals with the corresponding variables (use the
converted values and append appropriate units/percentages or fallbacks), ensure
the logo/image sizing and column widths use univ_logo_scale and
univ_logo_column_size, the title uses title_font_size and title_column_size, and
the author block uses authors_font_size so metadata overrides actually take
effect; keep existing conversion logic but reference those converted symbols in
the image(), text(), and layout calls and provide sensible default values if any
variable is missing.

In `@README.md`:
- Line 1: The README embeds an image tag without alt text which hurts
accessibility; update the <img> tag to include a descriptive alt attribute
(e.g., alt="OME Arrow logo" or similar meaningful description) so screen readers
and broken-image fallbacks can present useful information, and optionally add a
title attribute for hover tooltips.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 9567b569-8dec-4840-a23e-af39d014fa96

📥 Commits

Reviewing files that changed from the base of the PR and between 27de231 and a891ea9.

⛔ Files ignored due to path filters (18)
  • docs/presentations/2026-OME-community-meeting/images/cu-anschutz-short.png is excluded by !**/*.png
  • docs/presentations/2026-OME-community-meeting/images/cytomining-integration.png is excluded by !**/*.png
  • docs/presentations/2026-OME-community-meeting/images/cytotable-parquet-benchmarks.png is excluded by !**/*.png
  • docs/presentations/2026-OME-community-meeting/images/example-umap.png is excluded by !**/*.png
  • docs/presentations/2026-OME-community-meeting/images/header-combined-images.png is excluded by !**/*.png
  • docs/presentations/2026-OME-community-meeting/images/icebeg-bioimage-ome-zarr-integration.png is excluded by !**/*.png
  • docs/presentations/2026-OME-community-meeting/images/ome-arrow-benchmarks.png is excluded by !**/*.png
  • docs/presentations/2026-OME-community-meeting/images/ome-arrow-logo.png is excluded by !**/*.png
  • docs/presentations/2026-OME-community-meeting/images/ome-arrow-qr-text.png is excluded by !**/*.png
  • docs/presentations/2026-OME-community-meeting/images/ome-arrow-qr.png is excluded by !**/*.png
  • docs/presentations/2026-OME-community-meeting/images/pccma-cytodataframe-cosmicqc-result-example.png is excluded by !**/*.png
  • docs/presentations/2026-OME-community-meeting/images/spacer.png is excluded by !**/*.png
  • docs/presentations/2026-OME-community-meeting/images/what-is-ome-arrow.png is excluded by !**/*.png
  • docs/presentations/2026-OME-community-meeting/images/why-ome-arrow.png is excluded by !**/*.png
  • docs/presentations/2026-OME-community-meeting/ome-arrow-2026-poster.pdf is excluded by !**/*.pdf
  • docs/src/_static/logo.png is excluded by !**/*.png
  • docs/src/_static/ome-arrow-logo.png is excluded by !**/*.png
  • docs/src/_static/ome-arrow-with-text.png is excluded by !**/*.png
📒 Files selected for processing (12)
  • .pre-commit-config.yaml
  • README.md
  • docs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/_extension.yml
  • docs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/typst-show.typ
  • docs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/typst-template.typ
  • docs/presentations/2026-OME-community-meeting/abstract.md
  • docs/presentations/2026-OME-community-meeting/poster.qmd
  • docs/presentations/2026-OME-community-meeting/readme.md
  • docs/src/index.md
  • docs/src/presentations.md
  • docs/src/why-ome-arrow.md
  • pyproject.toml

Comment on lines +67 to +71
// Footer's URL and email font size (in pt).
$if(footer-url-font-size)$ footer_url_font_size: $footer-url-font-size$, $endif$

// Footer's text font size (in pt).
$if(footer-text-font-size)$ footer_text_font_size: [$footer-text-font-size$], $endif$
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

# First, let's locate and examine the file
find . -type f -name "typst-show.typ" -o -path "*quarto-ext/poster*" -type f | head -20

Repository: WayScience/ome-arrow

Length of output: 346


🏁 Script executed:

# Read the typst-show.typ file to see the context around lines 67-71
cat -n ./docs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/typst-show.typ | head -80

Repository: WayScience/ome-arrow

Length of output: 3534


🏁 Script executed:

# Also examine the typst-template.typ to understand the poster function definition
cat -n ./docs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/typst-template.typ

Repository: WayScience/ome-arrow

Length of output: 7202


Remove brackets from footer_text_font_size parameter to match other numeric font-size parameters.

Line 71 inconsistently wraps the value in Typst content brackets [...], unlike the adjacent footer_url_font_size on line 68 and all other numeric parameters. The poster() function expects a numeric string (converted via int() on line 36 of typst-template.typ), not a content block. This will cause type conversion to fail when the parameter is used.

🐛 Proposed fix
-  $if(footer-text-font-size)$ footer_text_font_size: [$footer-text-font-size$], $endif$
+  $if(footer-text-font-size)$ footer_text_font_size: $footer-text-font-size$, $endif$
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
// Footer's URL and email font size (in pt).
$if(footer-url-font-size)$ footer_url_font_size: $footer-url-font-size$, $endif$
// Footer's text font size (in pt).
$if(footer-text-font-size)$ footer_text_font_size: [$footer-text-font-size$], $endif$
// Footer's URL and email font size (in pt).
$if(footer-url-font-size)$ footer_url_font_size: $footer-url-font-size$, $endif$
// Footer's text font size (in pt).
$if(footer-text-font-size)$ footer_text_font_size: $footer-text-font-size$, $endif$
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@docs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/typst-show.typ`
around lines 67 - 71, The footer_text_font_size parameter is incorrectly wrapped
in Typst content brackets; update the assignment in typst-show.typ so
footer_text_font_size uses a plain numeric value like footer_url_font_size
(remove the surrounding [...] from the $if(footer-text-font-size)$ branch),
ensuring the poster() call (and its int() conversion in typst-template.typ)
receives a numeric string; modify the $if...$ block referencing
footer_text_font_size to mirror the footer_url_font_size pattern.

#let poster(
// set variables for use throughout
// note: some are referenced from `.qmd` file
size: "'36x24' or '48x36''",
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
python - <<'PY'
from pathlib import Path
import re

path = Path("docs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/typst-template.typ")
text = path.read_text()
match = re.search(r'size:\s*"([^"]+)"', text)
if not match:
    raise SystemExit("No default size found")

value = match.group(1)
if not re.fullmatch(r"\d+x\d+", value):
    raise SystemExit(f"Default size is not parseable as WIDTHxHEIGHT: {value!r}")

print(f"Default size is parseable: {value}")
PY

Repository: WayScience/ome-arrow

Length of output: 132


🏁 Script executed:

cat -n "docs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/typst-template.typ"

Repository: WayScience/ome-arrow

Length of output: 7202


Use a parseable default poster size.

The default size value is descriptive text, but lines 26-28 parse it as numeric WIDTHxHEIGHT. If metadata omits size, rendering will fail because int("'36") cannot parse the quoted default.

🔧 Proposed fix
-  size: "'36x24' or '48x36''",
+  size: "48x36",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
size: "'36x24' or '48x36''",
size: "48x36",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@docs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/typst-template.typ`
at line 4, The default value for the metadata key size is currently a quoted
descriptive string that cannot be parsed as WIDTHxHEIGHT; update the default to
a parseable poster size (for example "36x24" without extra quotes or descriptive
text) so the code that parses WIDTHxHEIGHT (lines referencing size parsing) can
safely call int() on the split parts; locate the size declaration in
typst-template.typ (the size: "'36x24' or '48x36''" entry) and replace it with a
simple parseable default like "36x24" (or choose one valid option) so downstream
parsing of WIDTH and HEIGHT succeeds.

Comment on lines +48 to +52
# Create and collect a "lazy" crop of an image
lazy = OMEArrow.scan("image.parquet").slice_lazy(0, 512, 0, 512).collect()

# visualize the image with pyvista for jupyter-friendly views
oa.view(how="pyvista)
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
python - <<'PY'
from pathlib import Path
import ast
import re

path = Path("docs/presentations/2026-OME-community-meeting/poster.qmd")
text = path.read_text()
match = re.search(r"```python\n(.*?)\n```", text, re.S)
if not match:
    raise SystemExit("No Python code block found")

ast.parse(match.group(1))
print("Python code block parses successfully")
PY

Repository: WayScience/ome-arrow

Length of output: 427


🏁 Script executed:

cat -n docs/presentations/2026-OME-community-meeting/poster.qmd | sed -n '45,65p'

Repository: WayScience/ome-arrow

Length of output: 2060


🏁 Script executed:

ls -la docs/presentations/2026-OME-community-meeting/images/ 2>/dev/null | grep -i "iceb"

Repository: WayScience/ome-arrow

Length of output: 156


Fix the Python syntax error and variable reference in the demo snippet.

Line 52 has an unterminated string literal (how="pyvista missing closing quote), and the example collects a crop into lazy but then visualizes oa instead of the cropped result.

Proposed fix
-# Create and collect a "lazy" crop of an image
-lazy = OMEArrow.scan("image.parquet").slice_lazy(0, 512, 0, 512).collect()
+# Create and collect a lazy crop of an image
+crop = OMEArrow.scan("image.parquet").slice_lazy(0, 512, 0, 512).collect()
 
-# visualize the image with pyvista for jupyter-friendly views
-oa.view(how="pyvista)
+# Visualize the cropped image with pyvista for Jupyter-friendly views
+crop.view(how="pyvista")
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/presentations/2026-OME-community-meeting/poster.qmd` around lines 48 -
52, The demo snippet has a Python syntax error and wrong variable reference: the
oa.view call has an unterminated string and it uses oa instead of the collected
crop; fix by closing the quote in the view call (how="pyvista") and call view on
the collected variable (lazy.view(...)) after
OMEArrow.scan(...).slice_lazy(...).collect(); ensure the symbols OMEArrow.scan,
slice_lazy, collect, and lazy.view are used so the cropped image is actually
visualized.

Comment on lines +59 to +61
## OME-Zarr and iceberg-bioimage

![OME-Zarr is strong for cloud-native image storage and distribution. OME-Arrow is complementary (not a replacement) when images must be queried with tabular metadata and measurements. One integration pattern uses [`iceberg-bioimage`](https://github.com/WayScience/iceberg-bioimage) as a warehouse/control-plane layer and [`duckdb_zarr`](https://github.com/photometric/duckdb-zarr) for analytical access to OME-Zarr-backed data. Here, **OME-Zarr / OME-TIFF** remain exchange formats, while **OME-Arrow / Parquet / Arrow-native tables** support joins and analytics, with **Lance** as a random-access table option.](images/icebeg-bioimage-ome-zarr-integration.png)
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
python - <<'PY'
from pathlib import Path
import re

path = Path("docs/presentations/2026-OME-community-meeting/poster.qmd")
base = path.parent
missing = []

for image_ref in re.findall(r"!\[[\s\S]*?\]\(([^)]+)\)", path.read_text()):
    image_path = base / image_ref
    exists = image_path.exists()
    print(f"{image_ref}: {'OK' if exists else 'MISSING'}")
    if not exists:
        missing.append(image_ref)

if missing:
    raise SystemExit(f"Missing image references: {missing}")
PY

Repository: WayScience/ome-arrow

Length of output: 806


🏁 Script executed:

#!/bin/bash
# Check if the file exists and read the specific lines
if [ -f "docs/presentations/2026-OME-community-meeting/poster.qmd" ]; then
  echo "=== File contents around lines 59-61 ==="
  sed -n '55,65p' "docs/presentations/2026-OME-community-meeting/poster.qmd"
  echo ""
  echo "=== All image references in the file ==="
  grep -n "!\[" "docs/presentations/2026-OME-community-meeting/poster.qmd"
else
  echo "File not found"
fi

Repository: WayScience/ome-arrow

Length of output: 4980


🏁 Script executed:

#!/bin/bash
# List all image files in the poster directory
ls -la "docs/presentations/2026-OME-community-meeting/images/" | grep -E "(icebeg|iceberg)"
echo "---"
# Show all PNG files in that directory
echo "All PNG files:"
ls -1 "docs/presentations/2026-OME-community-meeting/images/"*.png 2>/dev/null || echo "No PNG files found"

Repository: WayScience/ome-arrow

Length of output: 1266


Fix filename typo for iceberg-bioimage project reference.

Line 61 references images/icebeg-bioimage-ome-zarr-integration.png, but the project is named iceberg-bioimage (note the missing 'r'). The image file itself is also currently misspelled in the repository, so while it renders now, both the filename and the reference should be corrected for consistency with the actual project name.

Fix

Rename the image file and update the reference:

-](images/icebeg-bioimage-ome-zarr-integration.png)
+](images/iceberg-bioimage-ome-zarr-integration.png)

The image file in docs/presentations/2026-OME-community-meeting/images/ should also be renamed from icebeg-bioimage-ome-zarr-integration.png to iceberg-bioimage-ome-zarr-integration.png.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
## OME-Zarr and iceberg-bioimage
![OME-Zarr is strong for cloud-native image storage and distribution. OME-Arrow is complementary (not a replacement) when images must be queried with tabular metadata and measurements. One integration pattern uses [`iceberg-bioimage`](https://github.com/WayScience/iceberg-bioimage) as a warehouse/control-plane layer and [`duckdb_zarr`](https://github.com/photometric/duckdb-zarr) for analytical access to OME-Zarr-backed data. Here, **OME-Zarr / OME-TIFF** remain exchange formats, while **OME-Arrow / Parquet / Arrow-native tables** support joins and analytics, with **Lance** as a random-access table option.](images/icebeg-bioimage-ome-zarr-integration.png)
## OME-Zarr and iceberg-bioimage
![OME-Zarr is strong for cloud-native image storage and distribution. OME-Arrow is complementary (not a replacement) when images must be queried with tabular metadata and measurements. One integration pattern uses [`iceberg-bioimage`](https://github.com/WayScience/iceberg-bioimage) as a warehouse/control-plane layer and [`duckdb_zarr`](https://github.com/photometric/duckdb-zarr) for analytical access to OME-Zarr-backed data. Here, **OME-Zarr / OME-TIFF** remain exchange formats, while **OME-Arrow / Parquet / Arrow-native tables** support joins and analytics, with **Lance** as a random-access table option.](images/iceberg-bioimage-ome-zarr-integration.png)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/presentations/2026-OME-community-meeting/poster.qmd` around lines 59 -
61, The image filename referenced in the poster content under the "OME-Zarr and
iceberg-bioimage" heading is misspelled as
images/icebeg-bioimage-ome-zarr-integration.png (missing an "r"); update the
markdown reference in docs/presentations/2026-OME-community-meeting/poster.qmd
to images/iceberg-bioimage-ome-zarr-integration.png and also rename the actual
file in docs/presentations/2026-OME-community-meeting/images/ from
icebeg-bioimage-ome-zarr-integration.png to
iceberg-bioimage-ome-zarr-integration.png so the link and filename match the
iceberg-bioimage project name.

Comment on lines +46 to +48
# convert the poster pdf to png and jpg with 150 dpi and a white background
magick -antialias -density 300 -background white -flatten poster.pdf poster.png
magick -antialias -density 300 -background white -flatten poster.pdf poster.jpg
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Make the documented DPI match the command.

Line 46 says 150 dpi, but both conversion commands use -density 300.

📝 Proposed wording fix
-# convert the poster pdf to png and jpg with 150 dpi and a white background
+# convert the poster pdf to png and jpg with 300 dpi and a white background
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
# convert the poster pdf to png and jpg with 150 dpi and a white background
magick -antialias -density 300 -background white -flatten poster.pdf poster.png
magick -antialias -density 300 -background white -flatten poster.pdf poster.jpg
# convert the poster pdf to png and jpg with 300 dpi and a white background
magick -antialias -density 300 -background white -flatten poster.pdf poster.png
magick -antialias -density 300 -background white -flatten poster.pdf poster.jpg
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/presentations/2026-OME-community-meeting/readme.md` around lines 46 -
48, The README text and the ImageMagick commands are inconsistent: the heading
claims "150 dpi" but both commands use "-density 300". Update the documentation
so they match by either changing the heading text to "150 dpi" -> "300 dpi" or
altering the two magick commands (the lines producing poster.png and poster.jpg
with "-density 300") to use "-density 150"; ensure the phrasing and both command
lines (poster.png and poster.jpg) are consistent.

Comment on lines +50 to +55
# create the title with clip path through svg (typst doesn't support https://github.com/typst/typst/issues/5611)
magick forest_modified.png -resize 5700x400^ -gravity center -extent 5700x400 \
\( -background none -fill white \
-font "Vollkorn-Bold" -pointsize 340 \
label:"The Software Gardening Almanack" \
-gravity West -extent 5700x400 \) \
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Replace the stale example title before documenting this command.

The ImageMagick command still renders The Software Gardening Almanack, which appears unrelated to the OME-Arrow poster and could generate the wrong title asset if copied.

📝 Proposed placeholder correction
-     label:"The Software Gardening Almanack" \
+     label:"OME-Arrow" \
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
# create the title with clip path through svg (typst doesn't support https://github.com/typst/typst/issues/5611)
magick forest_modified.png -resize 5700x400^ -gravity center -extent 5700x400 \
\( -background none -fill white \
-font "Vollkorn-Bold" -pointsize 340 \
label:"The Software Gardening Almanack" \
-gravity West -extent 5700x400 \) \
# create the title with clip path through svg (typst doesn't support https://github.com/typst/typst/issues/5611)
magick forest_modified.png -resize 5700x400^ -gravity center -extent 5700x400 \
\( -background none -fill white \
-font "Vollkorn-Bold" -pointsize 340 \
label:"OME-Arrow" \
-gravity West -extent 5700x400 \) \
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/presentations/2026-OME-community-meeting/readme.md` around lines 50 -
55, The ImageMagick example still hardcodes the label "The Software Gardening
Almanack"; update the magick command's label argument to a relevant title or
neutral placeholder (e.g., "OME-Arrow Poster" or "{{TITLE}}") so the documented
command produces the correct poster title; edit the label:"The Software
Gardening Almanack" part in the magick invocation to the new text in the
readme's example.

Comment thread pyproject.toml
Comment on lines +154 to +163
tasks.poster-preview.shell = """
if command -v quarto >/dev/null 2>&1; then
quarto preview docs/presentations/2026-OME-community-meeting/poster.qmd --no-browser
elif [ -x /Applications/quarto/bin/quarto ]; then
/Applications/quarto/bin/quarto preview docs/presentations/2026-OME-community-meeting/poster.qmd --no-browser
else
echo "quarto not found. Install Quarto or add it to PATH."
exit 1
fi
"""
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Add the documented poster-render task or update the README command.

The poster README documents uv run poe poster-render, but this Poe config only defines poster-preview. As written, the documented render workflow will fail with an unknown task.

🛠️ Proposed Poe task addition
 tasks.poster-preview.shell = """
 if command -v quarto >/dev/null 2>&1; then
   quarto preview docs/presentations/2026-OME-community-meeting/poster.qmd --no-browser
 elif [ -x /Applications/quarto/bin/quarto ]; then
   /Applications/quarto/bin/quarto preview docs/presentations/2026-OME-community-meeting/poster.qmd --no-browser
 else
   echo "quarto not found. Install Quarto or add it to PATH."
   exit 1
 fi
 """
+tasks.poster-render.shell = """
+if command -v quarto >/dev/null 2>&1; then
+  quarto render docs/presentations/2026-OME-community-meeting/poster.qmd
+elif [ -x /Applications/quarto/bin/quarto ]; then
+  /Applications/quarto/bin/quarto render docs/presentations/2026-OME-community-meeting/poster.qmd
+else
+  echo "quarto not found. Install Quarto or add it to PATH."
+  exit 1
+fi
+"""
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
tasks.poster-preview.shell = """
if command -v quarto >/dev/null 2>&1; then
quarto preview docs/presentations/2026-OME-community-meeting/poster.qmd --no-browser
elif [ -x /Applications/quarto/bin/quarto ]; then
/Applications/quarto/bin/quarto preview docs/presentations/2026-OME-community-meeting/poster.qmd --no-browser
else
echo "quarto not found. Install Quarto or add it to PATH."
exit 1
fi
"""
tasks.poster-preview.shell = """
if command -v quarto >/dev/null 2>&1; then
quarto preview docs/presentations/2026-OME-community-meeting/poster.qmd --no-browser
elif [ -x /Applications/quarto/bin/quarto ]; then
/Applications/quarto/bin/quarto preview docs/presentations/2026-OME-community-meeting/poster.qmd --no-browser
else
echo "quarto not found. Install Quarto or add it to PATH."
exit 1
fi
"""
tasks.poster-render.shell = """
if command -v quarto >/dev/null 2>&1; then
quarto render docs/presentations/2026-OME-community-meeting/poster.qmd
elif [ -x /Applications/quarto/bin/quarto ]; then
/Applications/quarto/bin/quarto render docs/presentations/2026-OME-community-meeting/poster.qmd
else
echo "quarto not found. Install Quarto or add it to PATH."
exit 1
fi
"""
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pyproject.toml` around lines 154 - 163, The README references a Poe task
named poster-render but the Poe config only defines tasks.poster-preview.shell,
so add a new Poe task named tasks.poster-render.shell (or rename poster-preview
to poster-render) that invokes Quarto render for
docs/presentations/2026-OME-community-meeting/poster.qmd (or call the
appropriate quarto binary fallback like /Applications/quarto/bin/quarto) and
exits non‑zero with a clear error if Quarto is not found; ensure the new task
mirrors the existing conditional logic in tasks.poster-preview.shell but runs
"quarto render ... --output" (or the desired render command) so the documented
uv run poe poster-render command works.

@d33bs
Copy link
Copy Markdown
Member Author

d33bs commented Apr 23, 2026

Avoiding further changes for now because this has been printed due to time constraints. Poster content was reviewed outside of PR during live meeting.

@d33bs d33bs merged commit 553e2f0 into WayScience:main Apr 23, 2026
13 checks passed
Sign up for free to 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.

2 participants