Digital Sovereignty for everyone

Changelog

  • 1.9.1: Mermaid diagram labels now show on iPhones and iPads. Mermaid writes the text in boxes and on arrows as HTML inside the SVG by default, and Safari does not paint that HTML once Reveal.js scales the slide to fit the screen, so on iOS the diagrams came out as empty boxes. Decks now tell Mermaid to write labels as plain SVG text, which every browser draws at any scale. Diagrams look the same elsewhere, except that long labels no longer wrap automatically.
  • 1.9.0: Slides built by create-presentation and update-presentation now go through LH Content Converter when it is active, so a slide’s HTML can hold anything the converter turns into blocks (tables, images, quotes, code and more) and any block another plugin claims through the converter, such as a Mermaid diagram with LH Mermaid 1.2.0 or later. Without the converter, or if a conversion fails, slides are built as before from headings, paragraphs and lists. A slide with a light background colour now gets dark text: its Cover block is saved with isDark false and the is-light class, as the editor does when that colour is picked, where before every slide was saved as dark and light slides showed white text. The slide content description in both abilities now says what is supported.
  • 1.8.0: Slide colours set in Gutenberg now show on the deck. A slide is played from its Cover block’s inner blocks, so settings on the Cover itself were dropped; they now carry onto the slide: Gutenberg’s light-background choice (is-light, which gives dark text), the Cover’s text colour, preset or custom, and any Additional CSS classes. The presentation page also prints the site’s colour and size presets (CSS variables and has-*-color classes, without theme styles), so preset text and background colours chosen on individual blocks now work on slides too. Slides that set nothing keep the plain default look.
  • 1.7.3: Mermaid diagrams in presentations now fill the slide. Mermaid sizes each diagram to its natural width (often a third of a 1280px slide) with an inline max-width, so diagrams looked small; they now scale up to the full slide width, keeping their proportions, capped at 520px tall in slide pixels so a diagram under a heading stays on the slide. The previous 60vh cap measured the browser window rather than the slide and is replaced.
  • 1.7.2: Slides created or updated by the create-presentation and update-presentation abilities now pass block validation in the editor, so they can be edited in Gutenberg and blocks can be added inside them. Their Cover markup now matches what core’s Cover block saves: the overlay span (with its colour and dim classes) and, for image backgrounds, the background image element, with the overlay colour marked as user-chosen. The unused minHeight and unsupported style.color.background attributes are no longer written. Lists built from slide content carry core’s wp-block-list class. Decks created before this release keep their old markup; the editor offers Attempt Block Recovery for those slides.
  • 1.7.1: Fixes a PHPStan argument.type finding: a slide’s per-slide auto-advance (data-autoslide) is now passed to esc_attr() as a string rather than an integer. No change to output.
  • 1.7.0: Brought up to LH plugin standards. The LH_PRESENTATIONS_VERSION, LH_PRESENTATIONS_PATH and LH_PRESENTATIONS_URL constants are gone (the version constant had been stuck at 1.3.0, so editor scripts and styles were never cache-busted): a new LH_Presentations_Plugin class in the main file carries the standard identity methods, with plugin_version() reading the header, plus plugin_path() and plugin_url(), the filterable identifiers return_post_type(), return_endpoint() and return_preview_query_var(), and the canonical write_log(). The plugin now boots on plugins_loaded behind the lh_presentations_init_plugin filter instead of at file-parse time, and every text domain, ability name and category name comes from return_plugin_text_domain(). Deck meta registration moves into LH_Presentations_CPT. The draft preview reads lh_preview_present as a registered query var instead of $_GET, checks that the user can edit that particular presentation, and the abilities’ preview_url is now built with add_query_arg(), fixing a broken link for drafts whose permalink already carries a query string. The two editor scripts no longer both define the lhPresentations global, and the Open presentation link takes the endpoint from it. presentation.css is now versioned. The main file header gains Requires at least, Requires PHP, Author URI, License URI and Domain Path, and the plugin gets index.php guards, a languages/ directory and a .gitignore for vendor/.
  • 1.6.0: Reveal.js is now bundled with the plugin instead of loaded from cdn.jsdelivr.net, so a presentation makes no third-party requests: the presentation page loads reveal.js and reveal.css 5.2.1 from vendor/npm-asset/reveal.js/dist/, installed by Composer from npm via asset-packagist (pinned in composer.json). Reveal.js themes are removed. The Theme setting is gone from the editor’s Presentation Settings panel, the create-presentation and update-presentation abilities no longer accept theme, and the _lh_presentation_theme meta is no longer registered (values already saved are left in the database but ignored). Decks are styled by the plugin’s own presentation.css, which now carries the base typography, colours, links, lists and controls the default black theme used to provide, in system fonts.
  • 1.5.0: Mermaid diagrams in presentations. When LH Mermaid 1.1.0 or later is active, its Mermaid Diagram block can be added to a deck, and the presentation page prints the bundled Mermaid library itself whenever the deck contains a diagram (the page never calls wp_footer, so ordinary enqueuing would not reach it). Because Reveal.js hides every slide but the current one and Mermaid draws hidden diagrams at zero size, diagrams are drawn slide by slide when Reveal reports the deck ready and on each slide change, and all at once in print view; the deck is re-laid-out after each draw. Presentation styles drop Reveal’s code-block look from drawn diagrams and cap their height. Also removes the phpcs:ignore annotation on the slide output in the presentation template, replacing it with a comment explaining why that already-built markup is not run through kses.
  • 1.4.2: create-presentation and update-presentation are marked as working on one site’s presentations (meta site_scoped). Where LH MCP Adapter Extensions is active they take an optional site_id to work on another site you belong to, with publish_posts checked on that site. Calls without site_id are unchanged.
  • 1.4.1: Task #150552: close the slide items shared by create-presentation and update-presentation with additionalProperties false, so a misspelt slide key (for example background_colour) is rejected instead of silently dropped.
  • 1.4.0: Ability declarations brought up to the LH standard, plus two fixes to update-presentation. create-presentation and update-presentation now declare annotations (create: not read-only, not destructive, not idempotent; update: destructive, since it replaces every slide, and idempotent), each description ends with the permission sentence (Requires publish_posts.), both have an output schema, inputs are closed with additionalProperties false, slides must hold at least one slide and post_id must be positive. update-presentation now also requires edit rights on the presentation itself, so a user who can publish posts can no longer overwrite someone else’s deck, and deck settings (theme, loop, kiosk_mode, auto_slide) left out of an update are kept instead of being reset to their defaults.
  • 1.3.0: Adds the lh-presentations/update-presentation MCP ability, which replaces a deck’s slides and updates its deck settings without changing its status. Adds draft preview through the lh_preview_present=1 query parameter, gated to publish_posts, and both abilities now return a preview_url.
  • 1.2.0: Adds the lh-presentations/create-presentation MCP ability, which creates a draft presentation from a structured list of slides. Requires publish_posts; new decks are always saved as drafts.
  • 1.1.0: Three-tier configuration: deck-level settings with editor UI (Tier 1), a raw JSON override of Reveal.js options in _lh_presentation_config (Tier 2), and per-slide block attributes (Tier 3). Adds kiosk mode, loop and auto-advance deck settings.
  • 1.0.0: Initial release. Gutenberg-authored Reveal.js presentations: an lh_presentation post type whose Cover blocks, marked as slides, play full screen at the /present/ endpoint, with per-slide backgrounds and transitions and Group blocks as vertical slide stacks.

If you like this plugin please consider making a donation to further development

Install LHero.org

lhero.org

Open it straight from your home screen, full screen and quicker to load.

  1. Tap the Share button . If you cannot see it, tap ••• first.
  2. Scroll down and tap Add to Home Screen.
  3. Tap Add.
  1. Tap the browser menu â‹®.
  2. Tap Install app or Add to Home screen.
  1. In the menu bar, choose File, then Add to Dock.

Use your browser's menu to install this site or add it to your home screen.