Skip to content

Releases: devjgm/keynot

keynot 0.5.0

Choose a tag to compare

@devjgm devjgm released this 10 Jul 20:24

Added

  • Press s during a show to peek at the current slide's speaker
    notes in an overlay; any key closes it.

Changed

  • Code windows lost their traffic-light dots: just the rounded frame
    and the language label now.

Fixed

  • An emoji shortcode at the start of a line (:crab: A Ferris Talk)
    no longer parses as definition-list syntax, which ate the colon,
    bolded the previous line as a "term", and indented the text. Known
    shortcodes at line starts are now replaced before markdown parsing;
    code fences and unknown names are untouched.

keynot 0.4.0

Choose a tag to compare

@devjgm devjgm released this 08 Jul 20:27

Added

  • Dynamic shell completions: register once (one line, or a drop-in
    completion file for fish/bash) and keynot pl<TAB> completes from
    the live CLI -- subcommands, flags, and values.
  • Press e during a show to open the deck in $VISUAL/$EDITOR at
    the line you are looking at (the highlighted block, or the top of
    the scrolled view); exiting the editor reloads from disk and
    resumes where you were. Knows the line-jump syntax for the vi/emacs
    family, VS Code, Sublime, and TextMate; falls back to vi
    (notepad on Windows).
  • GFM tables render with rounded borders, bold headers, and per-column
    alignment; columns size to their content and word-wrap when the
    table is wider than the slide.
  • GFM alerts (> [!NOTE] and friends) render a colored, labeled bar
    with an upright body; plain quotes stay italic.
  • Footnotes: [^1] references become accent markers, with the notes
    collected at the end of their slide or column.
  • Definition lists render bold terms with indented definitions.
  • Heading attributes ({#id}) parse and no longer show as literal
    braces.
  • Emoji shortcodes: :crab: and friends (GitHub's names) become real
    emoji in prose; unknown names and anything in code stay literal.
  • keynot --help links to the crate page.
  • Overflowing slides scroll: on a slide taller than the terminal,
    walking the line highlight (down/up) moves the view to follow the
    bar, with dim markers showing how many lines are hidden past each
    edge. Esc (or changing slides) returns to the top.
  • keynot check reports the tallest slide and its height at a
    reference 80 columns; run in a terminal, it also says whether every
    slide fits that terminal's real size.

keynot 0.3.0

Choose a tag to compare

@devjgm devjgm released this 08 Jul 17:57

Added

  • Background gradients: colors.background accepts
    { gradient: ['#hex', ...], direction: vertical | horizontal | radial }
    in addition to a solid color. The dark theme's default background is
    now a slate gradient (#2d2d30 down to #181818).
  • Code blocks render as small terminal windows: a rounded border with
    traffic-light dots, the language name in the bottom edge, and a panel
    darker than any background. code_style: plain restores the bare
    panel; the frame color is themeable as colors.code_border.
  • The speaker line highlight is column-aware: down/up walk lines within
    a column, left/right move between columns, and moving past the
    slide's edge changes slides (so single-column decks behave exactly as
    before).
  • keynot check errors on unknown frontmatter keys, listing each with
    its line number and the valid keys; keynot play ignores them so a
    deck written for a newer keynot still opens on an older one.
  • Error reports are colorized on a terminal (respecting NO_COLOR);
    piped output stays plain.
  • FORMAT.md documents every frontmatter default, enforced by tests that
    fail when the docs drift from the code.

Changed

  • The dark theme's code panel darkened to #141414 so it stands out
    against the gradient background.

Fixed

  • Reloading with r no longer freezes the show while URL images
    re-fetch; decodes happen on a worker thread and the network is never
    touched from the draw path.
  • A highlight begun during a slide transition no longer lands on an
    arbitrary line of the incoming slide.

keynot 0.2.0

Choose a tag to compare

@devjgm devjgm released this 08 Jul 14:12

Full Changelog: v0.1.0...v0.2.0

keynot 0.1.0

Choose a tag to compare

@devjgm devjgm released this 07 Jul 22:22

Initial release of keynot: terminal slide presentations from a single markdown file.

  • Marp-style .keynot format: YAML frontmatter, slides separated by ---, HTML comments as speaker notes
  • Markdown rendering with ratatui: headings, emphasis, lists, task lists, blockquotes, links, syntax-highlighted code (VS Code Dark+ by default)
  • Images via kitty/iTerm2/sixel graphics with a half-block fallback; local files or URLs
  • Slide transitions (push, coalesce, fade, sweep), a speaker line highlighter, outline view with type-a-number navigation, live reload, and a ! shell escape
  • Theming via frontmatter color overrides; built-in dark and light themes
  • keynot new skeletons, keynot check validation, --start-slide resume

Install: cargo install --locked keynot

Published on crates.io: https://crates.io/crates/keynot