Skip to content

Add @notes directive for slide speaker notes #64

Description

@tilucasoli

Summary

Introduce a first-class Markdown directive for speaker notes (e.g. @notes or @comment) that compiles into slide.comments.

Today, any @something token is treated as a tag, and unknown tags can look like they should work as “special blocks”, but they don’t produce speaker notes.

Motivation

  • Authors intuitively try @comment / @notes for presenter notes.
  • Speaker notes already exist in the compiled contract (slide.comments: string[]).
  • A directive would make notes discoverable and keep them close to slide content.

Proposed solution

Option A (preferred): @notes (no options)

@notes
This is a presenter note.
- Not visible on the slide
- Exported into `slide.comments`

Option B: @comment

Same semantics as @notes.

Multi-note behavior

  • Allow multiple @notes blocks per slide.
  • Each block appends one entry to slide.comments.

Backwards compatibility

  • @comment is currently parsed as a generic tag and could already be used as a widget shorthand if a deck registers a widget named comment. Making it reserved may be breaking.
  • @notes is less likely to collide with existing widget names.

Acceptance criteria

  • @notes content is captured as speaker notes and compiled into slide.comments.
  • Notes do not render as visible slide content.
  • Works with multiple @notes blocks in a slide.
  • Documentation updated: docs/reference/markdown-syntax.mdx, docs/reference/block-types.mdx, and authoring guide.

Related

  • docs/reference/contracts.mdx documents comments: string[].
  • packages/core/lib/src/markdown/tag_tokenizer.dart currently treats any @name as a tag (outside fences).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions