Repository navigation
Releases
v0.2.1
What's Changed
- feat: add install script for macOS and Linux by @ryanlewis in #104
- docs: trim the diagrams and maths features; fix: delete stale mermaid cache temp files by @ryanlewis in #105
- fix: read a graphics reply that comes after DA1, as in herdr by @ryanlewis in #106
- chore: release 0.2.1 by @ryanlewis in #107
- feat: let Back return from a link to a heading in the same note by @ryanlewis in #108
Full Changelog: v0.2.0...v0.2.1
v0.2.0
smd no longer needs Node.js or a browser to draw diagrams. It can now show SVG images and tick task checkboxes.
Diagrams without mermaid-cli
Mermaid diagrams are now drawn inside smd by merman. You no longer need to install mermaid-cli (mmdc), Node.js or a headless browser. A diagram takes about 40 ms to draw, where mmdc took about 660 ms, so a note full of diagrams opens much faster the first time.
- Labels use Trebuchet MS or Verdana on macOS, and DejaVu Sans or Liberation Sans on Linux.
- Labels in Chinese, Japanese and other scripts outside those fonts, and emoji in labels, show as boxes for now.
- merman follows mermaid closely but not exactly. To keep using mermaid-cli, set
mermaid = "mmdc"in~/.config/smd/config.toml. - The binary is larger, about 25 MB instead of 7.5 MB, as the diagram renderer is built in.
SVG images
A local .svg or .svgz image, such as , is now shown like a PNG. Images an SVG links to are read from its folder. SVGs that colour themselves with CSS variables, as many made for web pages do, use the fallback colours.
Tick task checkboxes
Task list items, - [ ] buy bread, can now be ticked and unticked:
- Tab and Shift-Tab stop at checkboxes as well as links.
- Enter or
xticks or unticks the selected checkbox, and so does clicking it. - smd changes only the character between the brackets, in place. If the file changed on disk since smd read it, nothing is written and the new version is shown instead.
- Checkboxes in files smd cannot write to are passed over. Set
tasks = "read_only"in the config if smd should never write to your notes.
Upgrading
brew upgrade ryanlewis/tap/smdIf you installed mermaid-cli only for smd, you can now remove it.
Pull requests
- feat: draw mermaid diagrams with merman, built in, instead of mmdc (#100)
- feat: show SVG images (#101)
- feat: tick and untick task checkboxes (#102)
- chore: release 0.2.0 (#103)
Full changelog: v0.1.0...v0.2.0
v0.1.0
What's Changed
- chore: scaffold the Rust crate with CI and Renovate by @ryanlewis in #11
- feat: parse markdown and show it as scrollable text by @ryanlewis in #13
- feat: reload the view when the file changes on disk by @ryanlewis in #14
- docs: spike kitty Unicode-placeholder images in a herdr pane by @ryanlewis in #15
- ci: lint and test all targets by @ryanlewis in #17
- feat: place images in the text flow with kitty placeholders by @ryanlewis in #18
- feat: render display maths as images by @ryanlewis in #19
- feat: render mermaid blocks as inline images by @ryanlewis in #20
- feat: draw tables as text boxes and over-wide ones as images by @ryanlewis in #22
- feat: plain-text fallback without kitty graphics by @ryanlewis in #21
- feat: render headings as images at real sizes by @ryanlewis in #23
- fix: kill mmdc's whole process group on timeout by @ryanlewis in #29
- fix: recover from panics in image jobs and the app by @ryanlewis in #30
- feat: cap the mermaid disk cache by @ryanlewis in #31
- fix: keep the view in place when images arrive by @ryanlewis in #32
- fix: keep image shape when fitting to a few rows by @ryanlewis in #33
- build(deps): update latex-rust to 3.0.1 by @ryanlewis in #35
- feat: show local GIF (first frame) and JPEG images by @ryanlewis in #36
- fix: build the tables example with --all-targets by @ryanlewis in #37
- feat: draw code blocks on a panel shaded from the background by @ryanlewis in #38
- feat: colour code blocks by their fence language by @ryanlewis in #39
- ci: add a report-only coverage job by @ryanlewis in #41
- docs: public README, MIT OR Apache-2.0 licences and package metadata by @ryanlewis in #42
- refactor: split the markdown builder into smaller steps by @ryanlewis in #43
- refactor: split render's contents into a function per kind of block by @ryanlewis in #44
- docs: drop the table module's reference to a deleted spike note by @ryanlewis in #45
- test: cover start-up glue and list every default key in --help by @ryanlewis in #46
- fix: keep the checkbox on a task item in a loose list by @ryanlewis in #48
- fix: draw Mermaid and math fences as figures whatever their case or attributes by @ryanlewis in #49
- test: cover kitty's start-up query by @ryanlewis in #47
- refactor: make the run loop and link hand-off testable, and pin them with tests by @ryanlewis in #50
- docs: add demo notes, README recording and screenshots by @ryanlewis in #51
- refactor: strip fence attributes once when parsing, and share the frame-below-top lookup by @ryanlewis in #52
- test: cover raster::decode and the PNG encoder by @ryanlewis in #53
- refactor: split table parsing into a builder by @ryanlewis in #54
- refactor: split inline unit building and word placement in render by @ryanlewis in #57
- test: cover vault::follow's link forms and heading::colours by @ryanlewis in #55
- fix: keep the images of notes Back and Forward lead to, so going back shows them at once and lands where the reader was by @ryanlewis in #60
- fix: show images and note embeds in a table cell as a paragraph does by @ryanlewis in #59
- fix: keep waiting for the terminal's replies when a signal interrupts the probe by @ryanlewis in #56
- fix: wait a little longer for DA1 once a terminal has started to answer by @ryanlewis in #58
- fix: keep a percent escape with a sign in it as written by @ryanlewis in #61
- fix: go to the heading when a block reference follows it in a link by @ryanlewis in #62
- fix(deps): update rust crate pulldown-cmark to v0.13.5 [security] by @renovate[bot] in #40
- docs: recommend Ghostty and drop the Rex mention by @ryanlewis in #63
- fix: link a wiki link with an alias in a table cell to its note by @ryanlewis in #64
- fix: treat an image embed with a #fragment as an image, not a note by @ryanlewis in #65
- fix: read a link's block reference and heading after decoding and trimming by @ryanlewis in #67
- fix: keep words joined by a no-break space on one line by @ryanlewis in #66
- fix: leave out links that draw nothing, so Tab cannot select them by @ryanlewis in #70
- refactor: share how an image tag is read, and read a wiki name without spaces or the escape before its alias by @ryanlewis in #72
- fix: keep no-break spaces in headings drawn as images by @ryanlewis in #73
- fix: key image files on their path from the note, so notes in different folders do not share a picture of the same name by @ryanlewis in #71
- refactor: share the shown note's document with Back and Forward, and keep no images for the Forward notes a new link drops by @ryanlewis in #75
- refactor: move main's decisions into small tested functions by @ryanlewis in #78
- docs: hand-recorded demo GIF, scripts to record it, and recording script fixes by @ryanlewis in #68
- refactor: read a link's name by one rule, and build an image's src only when it is used by @ryanlewis in #77
- docs: add a heading and a sentence above each screenshot by @ryanlewis in #80
- refactor: read key names through a modifier strip and a table of named keys by @ryanlewis in #81
- test: cover mmdc that cannot be started and mmdc that fails with nothing on stderr by @ryanlewis in #84
- docs: call smd a sexy markdown reader for the terminal by @ryanlewis in #83
- fix: load an image whose path carries a #fragment or ?query for the web, when no file has that name by @ryanlewis in #79
- fix: ignore terminal replies that arrive as keys after the start-up probe gave up by @ryanlewis in #76
- fix: break a table cell at any breaking space, not only U+0020, measured by its width by @ryanlewis in #85
- test: cover stray HTML and footnote references reaching the document builder by @ryanlewis in #86
- test: write mermaid's stand-in scripts from a child process, so running them cannot fail as text file busy by @ryanlewis in #88
- fix: match a control letter whatever case the terminal sends it in by @ryanlewis in #89
- fix: keep a note on the way back or forward when it cannot be read for the moment by @ryanlewis in #90
- test: pin following each kind of link, and Forward being dropped by a new link unless its note cannot be read by @ryanlewis in #91
- fix: draw the space between words in a table cell as an ordinary space, so a tab shows by @ryanlewis in #92
- fix: leave out a README's logo meant for the other theme's background by @ryanlewis in #93
- refactor: give Key one constructor, so config keys and key presses lowercase control letters the same way by @ryanlewis in #95
- docs: show one snippet and one screenshot per feature in the README by @ryanlewis in #94
- feat: select, click and follow links inside tables by @ryanlewis in #96
- fix: leave out an inline logo meant for the other theme's background by @ryanlewis in #97
- chore: prepare the repository to go public by @ryanlewis in #98
- ci: release macOS and Linux builds with GoReleaser and publish a Homebrew cask by @ryanlewis in #99
New Contributors
- @ryanlewis made their first contribution in #11
- @renovate[bot] made their first contribution in #40
Full Changelog: https://github.com/ryanlewis/smd/commits/v0.1.0