[Bug] Plain Marp CLI does not load the saved OciDeck theme #1804

Closed
opened 2026-08-27 12:43:37 +00:00 by brenno · 0 comments
Owner

Problem / motivation

OciDeck saves theme: ocideck in the deck and writes the corresponding generated stylesheet to themes/ocideck.css. A normal third-party invocation from the saved project directory:

marp deck.md -o out.html

does not register or load that neighbouring stylesheet. Marp falls back to its default theme. As a result, existing OciDeck split slides already lose their two-column layout and the image can overflow the slide, independently of image callouts.

This also makes the current entry in docs/KNOWN_LIMITATIONS.md stale: compatibility is no longer merely “unverified”; a concrete incompatibility has been reproduced.

Evidence

Reproduced with real Marp CLI renders during the design review for #1801:

  • Marp CLI 4.4.0 / Marp Core 4.3.0;
  • Marp CLI 4.5.0;
  • current OciDeck project layout, with themes/ocideck.css beside the saved deck;
  • the default invocation emits the default theme and contains no OciDeck section.split CSS;
  • adding --theme-set themes/ocideck.css restores the generated theme and split layout.

The official Marp CLI contract requires custom themes to be supplied through --theme or --theme-set, or through a discovered Marp configuration file. Merely placing a stylesheet beside the Markdown does not register it.

Expected outcome

Choose and document one honest supported route:

  1. make the normal project-local Marp CLI invocation load the generated theme through a standard Marp configuration that OciDeck writes and maintains; or
  2. explicitly require --theme-set themes/ocideck.css and make that command easy to discover wherever OciDeck promises Marp interoperability.

Do not solve this by embedding OciDeck-specific opaque data in the Markdown or by making the theme path machine-specific.

Required regression proof

Add a pinned, repository-native real-Marp check with a minimal bulletsImage fixture. It must render the deck and inspect both DOM/CSS and a screenshot:

  • the documented supported invocation produces the split layout with the generated OciDeck theme;
  • a deliberately unsupported/default invocation either works through the shipped config or has an exact documented limitation;
  • moving the project directory does not break theme discovery;
  • paths containing spaces work;
  • the check runs without network access after dependencies are prepared;
  • the fixture fails visibly when section.split is absent, rather than only checking that HTML was produced.

Update at least docs/KNOWN_LIMITATIONS.md, docs/FILE_FORMAT.md and the relevant user guidance with the verified invocation and its limitation. Date the correction because the current documentation states that real Marp compatibility has not been tested.

Scope

This is a pre-existing Marp interoperability/documentation bug discovered by #1801. It is not part of the image-callout format and must not block or expand that feature's model.

## Problem / motivation OciDeck saves `theme: ocideck` in the deck and writes the corresponding generated stylesheet to `themes/ocideck.css`. A normal third-party invocation from the saved project directory: ```sh marp deck.md -o out.html ``` does **not** register or load that neighbouring stylesheet. Marp falls back to its default theme. As a result, existing OciDeck `split` slides already lose their two-column layout and the image can overflow the slide, independently of image callouts. This also makes the current entry in `docs/KNOWN_LIMITATIONS.md` stale: compatibility is no longer merely “unverified”; a concrete incompatibility has been reproduced. ## Evidence Reproduced with real Marp CLI renders during the design review for #1801: - Marp CLI 4.4.0 / Marp Core 4.3.0; - Marp CLI 4.5.0; - current OciDeck project layout, with `themes/ocideck.css` beside the saved deck; - the default invocation emits the default theme and contains no OciDeck `section.split` CSS; - adding `--theme-set themes/ocideck.css` restores the generated theme and split layout. The official Marp CLI contract requires custom themes to be supplied through `--theme` or `--theme-set`, or through a discovered Marp configuration file. Merely placing a stylesheet beside the Markdown does not register it. ## Expected outcome Choose and document one honest supported route: 1. make the normal project-local Marp CLI invocation load the generated theme through a standard Marp configuration that OciDeck writes and maintains; or 2. explicitly require `--theme-set themes/ocideck.css` and make that command easy to discover wherever OciDeck promises Marp interoperability. Do not solve this by embedding OciDeck-specific opaque data in the Markdown or by making the theme path machine-specific. ## Required regression proof Add a pinned, repository-native real-Marp check with a minimal `bulletsImage` fixture. It must render the deck and inspect both DOM/CSS and a screenshot: - the documented supported invocation produces the split layout with the generated OciDeck theme; - a deliberately unsupported/default invocation either works through the shipped config or has an exact documented limitation; - moving the project directory does not break theme discovery; - paths containing spaces work; - the check runs without network access after dependencies are prepared; - the fixture fails visibly when `section.split` is absent, rather than only checking that HTML was produced. Update at least `docs/KNOWN_LIMITATIONS.md`, `docs/FILE_FORMAT.md` and the relevant user guidance with the verified invocation and its limitation. Date the correction because the current documentation states that real Marp compatibility has not been tested. ## Scope This is a pre-existing Marp interoperability/documentation bug discovered by #1801. It is not part of the image-callout format and must not block or expand that feature's model.
brenno 2026-08-27 15:24:13 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
LibreKAT/Ocideck#1804
No description provided.