The WebKit HTML preview previously rendered fenced code blocks
monochrome. Wire the existing tokenizer into the HTML renderer so code
blocks are highlighted like GitHub, and extend language coverage.
- markdown.c: accumulate each code block's text, tokenize it on block
leave, and emit <span class="pl-*"> per token with HTML-escaped gaps
and token text; unknown languages fall back to plain escaped text.
- Add GitHub Primer syntax colors (light/dark) for keywords, constants,
strings, and comments.
- code_highlight.c: tokenize comments (//, /* */, #), which were
previously skipped and left uncolored.
- Add languages: javascript, kotlin, and bash (aliases js, kt, sh,
shell). Bash uses a dedicated scanner whose '#' comments are
word-position aware so $#, x=$#, and a.com#frag are not comments.
- Create the code_comment tag so the source editor colors comments too.
- README: document the highlighted languages.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- CI: install WebKit dev packages in the deb/rpm jobs so the build links
against webkit2gtk-4.1 (previously only GTK headers were installed, so
compilation would have failed). Verified both jobs end-to-end in
ubuntu:22.04 and fedora:40 containers.
- Server-side window decorations: replace the CSD GtkHeaderBar with a
plain in-window toolbar so the window manager (e.g. KDE/KWin) draws
full window controls.
- About popover: link the SeeMD title to the repo and the ViewMD mention
to upstream; fix the "fork of SeeMD" text back to ViewMD.
- Replace the About text button with an eye-glyph icon button.
- Focus the document on startup instead of the Open toolbar button.
- README: use the assets/seemd.png screenshot and add an eye glyph to the
title.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
markyd_app_open_file() invalidates the current path string, so calling
it with the pointer from markyd_app_get_current_path() works the first
time but causes a use-after-free on subsequent reloads. Copy the path
with g_strdup() before passing it to open_file, and free it afterwards.