Subj : src/syncterm/scripts/ui_markdown.wrensrc/syncterm/Wren.adoc src/syncte To : Git commit to main/sbbs/master From : Deuc¨ Date : Mon May 04 2026 11:26:55 https://gitlab.synchro.net/main/sbbs/-/commit/3b482030a400bbdeac8cef99 Added Files: src/syncterm/scripts/ui_markdown.wren Modified Files: src/syncterm/Wren.adoc src/syncterm/scripts/auto/connected/capture_menu.wren src/syncterm/scripts/sftp_app.wren sftp_queue.wren syncterm.wren ui_help.wren ui_help_test.wren ui_list_test.wren ui_pane.wren ui_popup.wren ui_style.wren src/syncterm/wren_bind_conn.c wren_bind_fs.c Log Message: SyncTERM: markdown help renderer + UIFC popup padding Help body strings (and any pane.helpText) are now parsed as a small CommonMark + Pandoc subset by ui_markdown.wren Ä # / ## / ### headings, - bullets, **bold**, `code`, Pandoc def-lists (term \n : desc), and trailing-2-space hard breaks. Layout reflows on width, descriptions in def-lists wrap inside the description column, and headings render as a UIFC-style blue-on-cyan reverse bar. Help dialog placement matches UIFC: full cterm height minus the status row, 2-cell horizontal margin, 1-cell text padding inside the frame on every side except the scrollbar column. The frame [X] now dismisses (handle() falls through to Pane). ESC/Enter, Up/Down/Page, Home/End, wheel, and scrollbar drag all still work. Pane gains contentBounds Ä innerBounds inset by 1 cell Ä and the Popup family (Alert/Confirm/Prompt/PopStatus) lays itself out inside that. Buttons anchor against the bottom frame, leaving the row above them as a natural visual separator. Style roles: help body bright white on blue (was dim grey, now matches UIFC lclr); help.bold and help.code both yellow (UIFC hclr); help.heading.{1,2,3} blue on cyan reverse bar. Host.downloadDir also returns null when DownloadPath doesn't exist on disk Ä funnels the configured-but-missing case through the same null gate that callers already check. dir_check reorders the existence test before the dead-flag test so the misleading "ancestor's Directory.delete invalidated it" message no longer eats the real "backing directory no longer exists" cause. SFTP queue ETA floors to integer seconds before formatting (avoids %g scientific notation for sub-second values). Co-Authored-By: Claude Opus 4.7 (1M context) --- þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net .