Misc features - #21
Merged
Merged
Conversation
- resolve file:// URIs and relative asset paths against active workspace root - convert blob/http sources to data URIs for direct silent saving into Downloads folder - emit app:download-complete and app:toast across all media and diagram downloads - report exact written byte sizes to SQLite export history
Route all media, diagram, table, and file downloads through ExportManager. Unify hover popovers with icons, translucent 1px vertical dividers, and dark glassmorphic styling across Tables, Mermaid, Excalidraw, Draw.io, Images, and Links.
- Target diagram SVG in MermaidBlock instead of Lucide pencil icon - Fix table popover text color for theme contrast - Support plaintext/urlencoded data URLs in ExportManager for CSV export - Add XHTML tag sanitization and vertical buffer to table image export - Expand table action bar with direct Download Image/CSV buttons
… paths - Move link action popover to pure CSS wrapper to eliminate flickering - Resolve non-markdown file links and decode URI paths for downloads - Handle missing export file sources gracefully in ExportManager
- Centralize export handling in ExportManager with SQLite history persistence - Add PDF, Web HTML, note package, and ZIP workspace export pipelines - Support high-DPI image and CSV exports for tables and diagrams - Add Downloads page, titlebar popover, and Ctrl+J shortcut - Fix pathToFileURL import, duplicate toast notifications, and .notes-app exclusion
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.
feat(export): standardized export engine, downloads manager & audit remediations
Summary
Refactors the export system into a centralized
ExportManagerwith persistent SQLite history tracking, adds direct image/CSV exports for diagram and table components, introduces a full Downloads & Export History UI view, and addresses all findings identified during the branch audit.Key Changes
1. Backend & IPC Infrastructure (
electron/)ExportManager.cjs): Standardized execution pipeline for PDF, Note Package (.nly), Workspace ZIP archives, and media/diagram exports.exportHistoryStore.cjs): Workspace-isolated.notes-app/export-history.dbdatabase with WAL mode, indexing, and case-insensitive path uniqueness.exportHistoryIpc.cjs): Exposedexports:*IPC suite and removed legacydocuments:download-pdfhandler.2. Frontend Services & Downloads UX (
src/)DownloadsPage.jsx,DownloadsPopover.jsx): Added searchable/filterable export history view, TitleBar popover widget, andCtrl+Jglobal shortcut.exportUtils.js,tableUtils.js): Support high-DPI PNG rendering (svgElementToPngDataUrl,tableElementToPngDataUrl) and CSV generation for tables and diagrams.renderUtils.js): Replaced React portal link popover with pure CSS.markdown-link-popover.3. Audit Remediations & Bug Fixes
ReferenceError: saveToDownloads is not definedinMediaPreviewPane.jsx..notes-appfolder is strictly excluded when "Include .notes-app metadata" is unchecked during workspace ZIP export.pathToFileURLimport inExportManager.cjs.Verification