Repository navigation
v0.1.130: Preview pane — Markdown/HTML live, .ipynb viewer, SQL cells; site layout fixes - #42
Merged
Merged
Conversation
Build/test commands, architecture map (Qt app, Rust core via FFI, MCP sidecar), test-registration rules and the bug-shipping gotchas, pointing at AGENTS.md and MAINTAINING.md rather than repeating them. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…; site layout fixes A Preview pane beside the editor tabs (View > Preview Pane, Ctrl+Shift+V, toolbar Preview button). Markdown and HTML render live; .ipynb files show as read-only notebooks with outputs; .sql files split on -- %% run cell by cell against a temporary scratch database or any saved connection (read-only until Allow writes). Full builds render HTML in WebEngine with scripts, remote loads and navigation disabled. Additive: the pane lives in a new inner splitter wrapping the tab widget, so the outer splitter keeps its three children and the AI dock, fullscreen and function-list code are untouched. Two new suites (test_notebook_render, test_preview_pane); 81/81 green on Full, 78/78 on Lite. Website: FAQ headings no longer wrap one word per line (shared card grid assumed an icon); tables scroll inside wrappers; flavour and release cards fit phones; docs top bar wraps. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Same behaviour; the for-loop counter was being advanced inside the body, which CodeQL flags. test_notebook_render still 49/49. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The focus hand-off into the AI dock is asynchronous under offscreen Qt; the Linux ARM runner needed more than the single 30 ms wait, which made the vacuity guard fail while every functional assertion passed. Poll up to 3 s instead. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
With no Ollama reachable the model dropdown reads "(Ollama offline)" and AIPanel disables the chat input; QWidget::setFocus on a disabled widget is a no-op, so the vacuity guard in section k could never pass on CI. Fall back to any enabled, focusable child of the panel. Reproduced and fixed locally with the test run inside an empty network namespace. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…indows CI)
qtbase v5.15.2's QTextMarkdownImporter marks inline code with
setFont(systemFont(FixedFont)) only; the fixed-pitch flag the preview
renderer keyed on arrived in 5.15.3. Windows CI pins 5.15.2, so inline
code lost its background tint there and test_notebook_render failed
("inline code gets Colors::codeBg") on that platform alone.
isCodeCharFormat() now accepts the fixed-pitch flag OR the system fixed
font family. Four assertions pin it, including a hand-built 5.15.2-shaped
format; flag-only detection turns exactly that one red.
Lite suite 78/78, WebEngine tree preview tests green, stale-text 66/66.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Ctrl+Shift+V, or the new Preview toolbar button. Follows the current tab; placeholder on tabs it cannot preview; hidden by default and not saved in the session..ipynb: the file still opens as JSON; the pane shows a read-only notebook (markdown cells,In [n]code cells, stream / text / HTML / PNG outputs, tracebacks with ANSI stripped). nbformat 4..sqlfiles split on-- %%run cell by cell through the existingDbConnections::runQuerypath on a worker thread, against a temporary scratch SQLite (DuckDB in Full) or any saved connection. Saved connections are read-only until Allow writes is ticked.Ctrl+Returnruns the cell under the cursor only while the pane shows a SQL notebook. The AI and MCP SQL gates are untouched.CLAUDE.md.Why it is additive
The pane lives in a new inner
QSplitterthat wraps the tab widget, so the outer splitter keeps its three children (editor group, AI dock host, function list) and the AI-dock sizing, fullscreen and function-list code paths are unchanged. Session save/restore, tab handling and the MCP bridge are not touched.runQuery, the SQL classifier,ai_toolsandmcp_bridgeare not modified.Affected platforms
Linux, macOS, Windows. Lite and Full flavours (Full adds the WebEngine HTML renderer and the DuckDB scratch).
Commands run
Red-state checks: scratch DB switched to
:memory:→test_preview_panefails fast on cross-cell persistence;setSourceremoved from the tab-switch hook → fails fast on the placeholder section. Both restored.GUI verified on an isolated Xvfb display with the real binary in Light, Dark and Monokai: Markdown, HTML (Lite engine and WebEngine, relative image loads, page script does not run), notebook with image and traceback, SQL cells run in order with persisted state, placeholder, pane off/on, Ctrl+Return scoping.
Tests
test_notebook_render(49 assertions, pure renderers)test_preview_pane(62 assertions, real MainWindow offscreen)Release
Version bumped to 0.1.130 in CMake,
notepatra-mcp/Cargo.toml,Cargo.lockand the.mcpbmanifest. Release notes, CHANGELOG, README, docs page and website cards updated. Download-size figures are carried over from v0.1.129 and get corrected by the post-publish size step as usual.🤖 Generated with Claude Code