Skip to content

Add independent Jupyter (.ipynb) presentation output with RISE metadata - #38

Draft
bsstahl with Copilot wants to merge 3 commits into
masterfrom
copilot/allow-user-build-presentation
Draft

Add independent Jupyter (.ipynb) presentation output with RISE metadata#38
bsstahl with Copilot wants to merge 3 commits into
masterfrom
copilot/allow-user-build-presentation

Conversation

Copilot AI commented May 18, 2026

Copy link
Copy Markdown
Contributor

This PR adds a new Jupyter output path so presentations can be exported as .ipynb notebooks suitable for slideshow workflows (including RISE-style metadata).
Implementation follows the existing output architecture while keeping Jupyter output fully separate from RevealJS code.

  • New Jupyter output projects

    • Added LiquidVictor.Output.Jupyter (shared Jupyter output types/extensions)
    • Added LiquidVictor.Output.Jupyter.Generator (notebook builder implementing IPresentationBuilder)
    • Added LiquidVictor.Output.Jupyter.Test (focused unit coverage)
    • Registered all new projects in LiquidVictor.sln
  • Notebook generation engine (OutputEngineType=JUPYTER)

    • Added DI wiring in LV/ServiceCollectionExtensions to resolve the new engine when OutputEngineType is JUPYTER
    • Engine writes a valid .ipynb document (nbformat: 4, nbformat_minor: 5)
    • Slide deck content is emitted as markdown cells with metadata.slideshow.slide_type
    • Includes notebook-level livereveal metadata (theme/transition/autolaunch)
    • Supports optional title-slide creation via BuilderOptions.BuildTitleSlide
    • Includes presenter notes as separate markdown cells (slide_type: "notes")
  • Content handling

    • Text content items render as markdown cell source
    • Image content items render as markdown image links using embedded data URIs
    • Unsupported content types fail fast with NotSupportedException
  • Project wiring updates

    • Added Jupyter generator reference to src/LV/LV.csproj
    • README feature list now mentions Jupyter .ipynb export support

Example of the generated notebook structure:

{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": { "slideshow": { "slide_type": "slide" } },
      "source": ["# First Slide\n", "\n", "Body markdown\n"]
    }
  ],
  "metadata": {
    "livereveal": {
      "autolaunch": false,
      "theme": "Black",
      "transition": "Slide"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 5
}

Copilot AI and others added 2 commits May 18, 2026 00:31
Agent-Logs-Url: https://github.com/bsstahl/LiquidVictor/sessions/32f922b7-e4a3-46c3-b7c9-22403be5cabd

Co-authored-by: bsstahl <8053235+bsstahl@users.noreply.github.com>
Copilot AI changed the title [WIP] Add functionality to build presentations in Jupyter notebooks Add independent Jupyter (.ipynb) presentation output with RISE metadata May 18, 2026
Copilot AI requested a review from bsstahl May 18, 2026 00:36
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.

Allow the user to build a presentation in Jupyter notebooks

2 participants