# Podcast rundown: a custom plugin sample

A working split editor with participant completion, section durations, interactive
checkboxes and separate supporting documents. The sample uses fictional people
and content in Italian, and starts with exactly one five-minute duration tag.

Open [the interactive sample](podcast.md). Read [the implementation guide](docs/podcast.md)
for the grammar, AST, source files, customization and tests.



| Source | Meaning |
|---|---|
| `@Nora`, `@Elio`, `@Vera` | Configured participants, rendered as badges |
| `[](time:5:00:00)` | Five planned minutes for a section |
| `[](time:05:00)` | The two-field minutes:seconds form |
| `[scheda](Gobbo Vera)` | A separate supporting document, identified by name |
| `[ ]` / `[x]` | An incomplete/completed task, including outside a list |
| `_text_` | Underline in this preset; `*text*` is italic and `**text**` bold |

Options of `podcast({ … })` extend the grammar for an application that already
has rundowns in a richer form (every default keeps the sample's behavior):

| Option | Adds |
|---|---|
| `durations: 'clock'` | `[titolo](time:04:30)`, `1:05:00` (h:mm:ss), `5m`, `90s`, `2m30s`, from 1 s to 10 h; the chip shows the title and a clock |
| `tags: { mentions: 'any', hashtags: true, colors }` | Every `@name` and `#topic` as a coloured chip: a fixed colour from `colors`, else `#name(color:green)` written in the text, else a hue hashed from the name (`tagColor`, `tagColors`, `cssColor`) |
| `lineBlocks: true` | One source line = one block (no setext headings, no indented code); lines inside a tight list item stay in it, one per row |
| `looseTasks: true` | `[]`, `[ x ]`, a box without a following space, `-[]` / `1.[]` list markers glued to a box |

Titles are accepted in every time tag (`[intro](time:5:00:00)`) and
`[titolo](doc:name)` links a document with any title; `[scheda](name)` still works.
Tasks and timers know their source line and ordinal on it (`line`, `box` /
`index`); blocks that hold tasks get `podcastTasks` and `podcastDone`.

The episode total sums every recognized time tag in its main rundown, including
completed items. Linked documents are separate inputs and do not contribute.
Escapes, code, image alt text and link labels do not produce custom controls or
durations. Invalid complete duration tags remain visible and are reported.

Ordinary Markdown links always open in a new browser tab (`target="_blank"`,
`rel="noopener noreferrer"`), preserving the core URL safety policy.
The custom `[scheda](…)` control opens its document inside the editor.

