Renderer Bug Fixes — 2026-05-29

Three rendering bugs were fixed in both the desktop browser renderers (notes-browser/notes_browser.py, notes-browser/notes_browser_runnable.py) and the web renderer (notes_web.py). All fixes are in git commit 2d97730.

Bug 1: Newlines in para text not rendered as line breaks

Inline strings containing \n (e.g. bullet lists stored as a single para with newline-separated items) rendered as a single line because HTML collapses whitespace.

Fix: Added text.replace('\n', '<br>') in _render_markup_text (browsers) and _md_inline (web).

Bug 2: Dict list items rendered as raw key:value dump

List items that were dicts ({"para": [...]}, {"link": {...}}, {"bold": "..."}) fell through to a generic key:value formatter, showing raw Python repr in the page.

Fix: In _render_list (browsers) and _render_list_item (web), check for para, link, code, bold, and href keys before falling back to the generic formatter.

Bug 3: bold inline element not handled

{"bold": "text"} within a para inline list was not handled in _render_inline_list — only link and code were covered.

Fix: Added elif 'bold' in item: result.append(f'<b>{self._escape(item["bold"])}</b>') in both browser files. (The web renderer already handled it correctly in _render_inline.)

Bug 4: runnable field shown in metadata footer

The document-level runnable flag was included in the metadata footer rendered at the bottom of every page, even though it is a behavioural flag already shown in the browser's native metadata bar.

Fix: Added 'runnable' to the skip set in _meta_html / meta_pairs in all three renderers.

version 1  ·  created 2026-05-29