Repository navigation
feat: Slides plugin and plugin API 0.26.0 docs - #14
Merged
Merged
Conversation
Adds the official com.glyph.slides plugin: Start Slide Show presents the open document fullscreen inside Glyph, and File > Export > Slides (reveal.js) writes one self-contained HTML deck. Horizontal rules separate slides, and slides keep the app's markdown styles and theme. reveal.js 6.0.2 (MIT) ships as package assets. The API reference documents what the plugin builds on: the exporter's document argument, ctx.documents.getRenderedHtml, ctx.ui.openOverlay, menu: "view" commands, and exporters in File > Export.
…the host Follows the review changes in hamidfzm/glyph#854: native menu entries find their contribution by id and skip labels the menu cannot show, the overlay has a host close button and closes when mount throws, and getRenderedHtml is null when no document is rendered.
This was referenced Oct 5, 2026
Merged
…ening Follows hamidfzm/glyph#854: a command or exporter id only needs to be unique within its plugin, and the host's Escape handling and close button on an overlay are described as protection against bugs, with a note to leave them alone.
The PR check compares the committed index.json, index/ shards, and docs/plugin-catalog.md with a fresh run of scripts/build-index.mjs. The registration still carries a placeholder digest; the release job rewrites packageUrl and sha256 and regenerates these files when it packages the plugin.
One conflict, in the sandbox section of docs/api-reference.md: both the overlay and rendered-document refusals from this branch and the app state refusals from #13 are kept.
Conflicts with #15 in docs/api-reference.md, both sides kept: the commands section takes main's shortcut, condition, and menu text plus this branch's note on how a menu entry is keyed and when a title is not listed; ctx.ui.addWorkspaceSettingsPanel and ctx.ui.openOverlay are separate sections; the sandbox list names both new DOM mounts and the rendered-document refusal. The index needed no regeneration.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds the official Slides plugin (
com.glyph.slides) and documents the plugin API 0.26.0 additions it builds on (hamidfzm/glyph#854, shipped in Glyph 0.26.0).Closes hamidfzm/glyph#23
Closes hamidfzm/glyph#253
Changes
plugins/com.glyph.slides/:---) starts a new slide. Slides are wrapped in.markdown-body, so they keep the app's markdown styles and its light or dark theme.LICENSEincluded) ships as package assets read throughctx.assets; there is no build step.sandbox: false: the slide show mounts into a host overlay, which needs the main context.plugin.jsoncarries a placeholdersha256; the release job rewritespackageUrland the digest when it packages the zip.package.jsononly marks the folder as ES modules sonode --testcan importmain.js; it is not part of the package.index.json,index/, anddocs/plugin-catalog.mdregenerated withscripts/build-index.mjs(the PR check compares them with a fresh run); they carry the same placeholder until the release job rewrites it.docs/api-reference.md: the exporter's document argument,ctx.documents.getRenderedHtml,ctx.ui.openOverlay, how a native menu entry is keyed and when a title is not listed, and exporters in File > Export. Merged with the 0.26.0 docs from docs: plugin API 0.26.0 app state (vault, navigation, Files panel blocks) #13 and docs: plugin API 0.26.0 command shortcuts, workspace writes, and Workspace Settings panels #15: the commands section keeps docs: plugin API 0.26.0 command shortcuts, workspace writes, and Workspace Settings panels #15's shortcut, condition, and menu text, andaddWorkspaceSettingsPanelandopenOverlayare separate sections.docs/recipes.md: the exporter recipe mentions the File > Export entry.Testing
node --test: 15 passing, 5 of them for the plugin (slide grouping, deck markup, and the assembled deck staying self-contained).node scripts/check-plugins.mjs: registration and manifest agree. A freshscripts/build-index.mjsleaves the committed index unchanged.v0.26.0,d5464fa2), with this branch (300b4d1) as the marketplace and glyph-md/plugin-templatemain(b03c933): the app's plugin contract job passes in full, both the type comparison andecosystemContract.test.ts, including "accepts every published marketplace entry" forcom.glyph.slides.apiVersionis accepted, and it registers theslides.startcommand withmenu: "view"and theslides.revealjsexporter. Every API it calls exists in 0.26.0 under the same name.