Skip to content

✨(frontend) Export presenter slides as PDF#2487

Draft
PanchoutNathan wants to merge 16 commits into
mainfrom
feature/present-mode-pdf-watermark
Draft

✨(frontend) Export presenter slides as PDF#2487
PanchoutNathan wants to merge 16 commits into
mainfrom
feature/present-mode-pdf-watermark

Conversation

@PanchoutNathan

Copy link
Copy Markdown
Contributor

Purpose

  • Add a Docs logo watermark to presenter slides.
  • Add a "Download PDF" action to presenter controls.
  • Render presenter slides as landscape print pages.
  • Keep file blocks printable and clip tall slides to one page.

Refs #2466
Closes #2446
Closes #2472

createDoc returned before the ProseMirror editor was visible, so tests
that immediately typed or opened the presenter raced the load. Wait for
the editor container before handing control back.
Move presenter ownership out of DocToolBox into a top-level
PresenterRoot driven by a zustand store, lazy-load the overlay and paint
a boot cover while the editor boots. Groundwork for the deep-link and
present-from-here features (#2466).
Pull the BlockNote rendering out of PresenterSlide into
PresenterSlideContent so it can be reused by the title slide and the PDF
export. Add a PresenterSlideData union (title | content) and a shared
PresenterBlock type.
Prepend a slide with the document title (emoji stripped) so every
presentation opens on a cover, announced to screen readers like any
other slide (#2466).
Dividers with children are kept as structural parents so their slide
keeps its indentation; the divider's own rule is hidden. Empty
paragraphs around a divider are dropped so habitual spacing no longer
offsets slides.

Closes #2398
A selected image (or any selected node) leaked its editing outline into
the read-only slide. Suppress the selected-node outline so nothing looks
focused unless the user tabs or clicks.

Closes #2393
Cover generated title slides, divider grouping, and presenter focus.

Keep e2e coverage aligned with the first present-mode slice.
Slim the divider to a 1px rule with a brand-colored selected state,
matching the mockups.

Closes #2474
Support ?view=present&slide=N deep-links (clamped, URL kept in sync) and
a "Copy link to slide" action in the floating bar. Ignore the deep-link
on mobile.

Closes #2397
Exercise direct present links, copied slide URLs, and mobile behavior.

Keep the e2e slice scoped to the share-link workflow.
Add a "Present" item to the block side menu that opens the presenter on
the slide containing that block. Map any block id (incl. nested or
divider ids) to its rendered content slide.

Closes #2470
Exercise block-to-slide mapping and the editor side-menu action.

Keep coverage scoped to starting the presenter from a block.
wrapMediaWithLink / wrapInterlinksWithAnchor defaulted to document.
Accept a root node so the presenter export can reuse them on its
off-screen tree.
Show a monochrome Docs logo in the slide corner (web and PDF) to signal
the document was made with Docs.

Closes #2472
Render the slides off-screen as A4 landscape pages and print them via
the browser, one slide per page with the watermark. Add a "Download PDF"
action to the floating bar.

Closes #2446
Exercise PDF print pages, file blocks, and tall slide clipping.

Keep coverage scoped to the presenter export workflow.
@PanchoutNathan PanchoutNathan self-assigned this Jul 1, 2026
@PanchoutNathan PanchoutNathan marked this pull request as draft July 1, 2026 14:34
@github-actions

github-actions Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Size Change: +6.48 kB (+0.15%)

Total Size: 4.35 MB

📦 View Changed
Filename Size Change
apps/impress/out/_next/static/7ed83328/_buildManifest.js 0 B -676 B (removed) 🏆
apps/impress/out/_next/static/34c85911/_buildManifest.js 678 B +678 B (new file) 🆕
apps/impress/out/_next/static/chunks/1440.js 3.98 kB +3.98 kB (new file) 🆕
apps/impress/out/_next/static/chunks/1859.js 0 B -3.2 kB (removed) 🏆
apps/impress/out/_next/static/chunks/2300.js 24.1 kB +24.1 kB (new file) 🆕
apps/impress/out/_next/static/chunks/5149.js 0 B -23.1 kB (removed) 🏆
apps/impress/out/_next/static/chunks/5815.js 0 B -3.95 kB (removed) 🏆
apps/impress/out/_next/static/chunks/6326.js 8.02 kB +8.02 kB (new file) 🆕
apps/impress/out/_next/static/chunks/pages/docs/[id].js 3.71 kB +627 B (+20.33%) 🚨

compressed-size-action

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.

Add docs logo watermark in corner Add PDF export of presenter mode

1 participant