Skip to content

Make bold visible, grow the callout set, and release 0.1.10 - #9

Merged
dsaad68 merged 4 commits into
mainfrom
fix/bold-rendering
Aug 9, 2026
Merged

Make bold visible, grow the callout set, and release 0.1.10#9
dsaad68 merged 4 commits into
mainfrom
fix/bold-rendering

Conversation

@dsaad68

@dsaad68 dsaad68 commented Aug 9, 2026

Copy link
Copy Markdown
Owner

Summary

Two rendering fixes and the callout vocabulary they exposed, plus the 0.1.10 release bump.

  • Bold was invisible. **bold** emitted a bare ESC[1m and nothing else, so whether it read as emphasis came down to whether the font shipped a bold face — under tmux, or with a font that has none, bold prose looked identical to the text around it. Strong runs now carry a strong foreground from the theme alongside the weight (near-white on the dark themes, near-black on light / solarized-light, Solarized's own base2 where a flat white would clash). Bold that already has a colour — a heading, a link, a callout title, an inline code span — keeps it.
  • A callout printed its own tag twice. The [!NOTE] marker was matched for its colour and then rendered again as part of the body, so every callout read ● NOTE over [!NOTE] Body text. Parsing now lives in Callout and the header consumes the marker. Blank rows between a callout's paragraphs keep the bar too, instead of being dropped and running the paragraphs together.
  • Ten more tags, custom titles, unknown tags. Alongside GitHub's five: INFO, TODO, ABSTRACT, SUCCESS, EXAMPLE, QUESTION, DECISION, FAILURE, DANGER, BUG. Tags match case-insensitively, text after the tag becomes the title (carrying inline markup), and a tag this build has no colour for is still a callout in the plain quote colour rather than leaking [!MYTAG] into the prose.

Docs

README feature list, CHANGELOG.md, a new examples/callouts.md (linked from examples/index.md), and the showcase.md section renamed from "GitHub alerts" — with the wikilink that pointed at that heading followed along.

Tests

CalloutTests (28) covers parsing, aliases, titles, nesting, source spans, footnotes and the width invariant for both prose and the blocks after the opening paragraph; a callouts snapshot fixture pins the rendering. AnsiRendererTests covers the strong colour, the runs that must keep their own, and --no-color. ThemeTests asserts every theme gives strong and alertAbstract a distinguishable value.

just check is clean: 609 tests, 0 lint violations.

Release

appVersion0.1.10 with the changelog dated to match, so pushing v0.1.10 after the merge passes the workflow's tag check.

🤖 Generated with Claude Code

dsaad68 and others added 4 commits August 9, 2026 23:11
Bold was emitted as a bare ESC[1m and nothing else, so whether it read as
emphasis came down to whether the font shipped a bold face — inside tmux,
or with a font that has none, bold prose was indistinguishable from the
text around it. Strong runs now carry a `strong` foreground from the theme
alongside the weight, but only where the run has no colour of its own, so
bold inside a heading, link or code span keeps what it had.

Callouts grow from GitHub's five tags to thirteen, matched case-insensitively
so an Obsidian vault in lowercase renders like a README in caps. Tags that
mean the same thing share a colour, keeping the palette a legible six.
Whatever follows the tag on the first line becomes the title, as markup
rather than a string, so it carries inline styling. An unrecognised tag is
still a callout — plain quote colour, titled with its own name — instead of
falling back to a blockquote with the marker sitting in the prose.

Along the way, two things the old alert path got wrong: it matched the
marker for its colour and then rendered it again as body text, so every
callout printed its own tag twice, and it dropped the blank rows between a
callout's blocks, running the paragraphs together. Callouts had no fixture
at all, which is how both survived; they have one now, plus unit coverage
for nesting, lists, spans, link columns and --no-color.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Both reuse an existing colour rather than growing the palette: QUESTION
takes the warning yellow, following Obsidian, and DECISION the important
mauve. That keeps the six colours a reader can still tell apart, and the
title text is what distinguishes tags that share one.

DECISION is termdown's own — Obsidian has no equivalent — for notes and
plans that record a decision and the reasoning behind it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The width sweep only exercised paragraphs, so the two-column narrowing that
`restBlocks` applies to a code card or a table inside a callout was unverified —
a card that ignored it would fit its own box and still overhang the row.

Bold inside a callout title is the alert case the strong-colour fallback names
but never tested, and `--no-color` had nothing asserting the new foreground
disappears with the weight rather than leaking a bare SGR into plain text.

Also: the README's inline-styles bullet now says bold carries a colour, and the
changelog's bold entry loses the blank line that split the Fixed list in two.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The release workflow verifies the pushed tag against `appVersion`, so the bump
and the changelog date land together, before the tag exists.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@dsaad68
dsaad68 merged commit b03235e into main Aug 9, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant