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
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).
Summary
Introduce a first-class Markdown directive for speaker notes (e.g.
@notesor@comment) that compiles intoslide.comments.Today, any
@somethingtoken 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
@comment/@notesfor presenter notes.slide.comments: string[]).Proposed solution
Option A (preferred):
@notes(no options)Option B:
@commentSame semantics as
@notes.Multi-note behavior
@notesblocks per slide.slide.comments.Backwards compatibility
@commentis currently parsed as a generic tag and could already be used as a widget shorthand if a deck registers a widget namedcomment. Making it reserved may be breaking.@notesis less likely to collide with existing widget names.Acceptance criteria
@notescontent is captured as speaker notes and compiled intoslide.comments.@notesblocks in a slide.docs/reference/markdown-syntax.mdx,docs/reference/block-types.mdx, and authoring guide.Related
docs/reference/contracts.mdxdocumentscomments: string[].packages/core/lib/src/markdown/tag_tokenizer.dartcurrently treats any@nameas a tag (outside fences).