Skip to content

Add notify primitive, rework the docs - #160

Merged
ll-nick merged 17 commits into
mainfrom
add-notify
Sep 21, 2026
Merged

ll-nick merged 17 commits into
mainfrom
add-notify

Conversation

@ll-nick

@ll-nick ll-nick commented Sep 21, 2026 •

Copy link
Copy Markdown
Owner

#159 introduced a new mechanic: Notification messages that run orthogonal to the log messages that the presenter already had. The latter are connected to a slide rebuild and shows log messages per build, the prior is connected to a presenter button click by the user.

This PR turns the ad-hoc solution of the previous PR into a new primitive. notify is now available for messages sent to one or all clients, independent of the rebuild machinery and the logs system. The UI got a new button that shows the full message history as the messages themselves automatically dismiss after some time, so you can still look at them after without them clobbering the interface.
The logs have now been renamed to "diagnostics" as that should be more self-explanatory and hopefully prevents confusion between the two message types.

NOTE: This changes one keyboard shortcut's meaning: m used to open the log messages, now it opens the notification message history. Diagnostics are now under d

EDIT: Two commits slipped in here that I had planned for a separate PR. One fixes some factual errors in the existing docs, one restructures the docs into smaller, more readable chunks.

ll-nick and others added 17 commits September 20, 2026 21:20
Six claims in the guides did not match the code.
A reader copying any of them would hit an error.

- `Slide(style=...)` is not a parameter, it is `extra_style`.
- A bare `str` in `style` / `extra_style` is a *path*, not literal CSS.
  `load_style` only treats `Inline(...)` as content, so
  `Deck(style='text { ... }')` tried to open a file with that name.
- Transition `easing` does not default to `None`.
  It is an `Easing` with a concrete default per type.
- The `inkflow` namespace URI is `urn:inkflow`, not `https://inkflow.dev/ns`.
- The docs-embedding recipe referenced a `poe` task; the project uses mise.
- `Image(fit=...)` and `SlideIn(direction=...)` took raw strings
  where the rest of the docs use the enums.

Also narrows the "available for every palette token" claim about the
`inkflow-fill-*` / `inkflow-stroke-*` classes: `link`, `heading` and
`blockquote` are palette tokens with no utility class.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q1Ni7BiNGgd2taCCHTgjXb
"Guides" was a bucket rather than a path through the material.
The worst of it was a 734-line "Authoring slides" page holding four
separate topics, so a reader wanting a bulleted slide had to find
section 9 past animations, triggers and video playback.

Replace it with four task-named sections. No page is over 300 lines now.

  Authoring    Slides · Markdown content · Steps · Animations ·
               Transitions · Morph in depth · Working in Inkscape
  Layouts and themes
               Layouts · Overlays · Themes · Fonts · Built-in theme
  Presenting   Presenting a deck · Presenter panel ·
               Multi-window sync · Export
  Reference    unchanged

Splits worth naming:

- Steps is now one page. The step model was explained in three places
  (animation triggers, markdown reveals, code-block stages) plus a
  fourth on combining them, though it is one concept with three
  authoring surfaces.
- Morph keeps its entry among the transitions and links to a page for
  the matching rules, since it is the one transition that depends on
  how the slides were drawn.
- Working in Inkscape collects sync, label2id, colorize, palette and
  verify, which were scattered across three guides.

Fills gaps for features that had no guide at all: most of the presenter
(overview, picker, laser, curtain, zoom, blackout, theme toggle, touch),
`slide:` links, custom transitions and the auto-loaded `scripts.js`,
`inkflow verify`, `inkflow layouts`, and `Slide.visible`.

Also fixes `notes=Path(...)` in the presenter page: `Content` is
`str | Inline | None` and `load_notes` always renders Markdown,
so the documented "any other extension is read as-is" was wrong.

Cuts prose that explained features by negating something that no longer
exists, and drops the AI-generated-draft disclaimer from the home page.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q1Ni7BiNGgd2taCCHTgjXb
@ll-nick ll-nick self-assigned this Sep 21, 2026
@ll-nick ll-nick added the enhancement New feature or request label Sep 21, 2026
@ll-nick
ll-nick merged commit 6ca2f15 into main Sep 21, 2026
5 checks passed
@ll-nick ll-nick added the documentation Improvements or additions to documentation label Sep 21, 2026
@ll-nick ll-nick changed the title Add notify primitive Add notify primitive, rework the docs Sep 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant