github dheerajshenoy/lektra 0.7.7
v0.7.7

2 hours ago

New Features

  • Update MuPDF to 1.28.2 (from 1.27.2) release history
  • EXIF metadata in File Properties: Image files now show EXIF tags (camera, lens, ISO, shutter, aperture, date, GPS, etc.) in the existing File Properties dialog. Uses a runtime probe of libexif.so.12 (Linux/macOS) or libexif-12.dll (Windows) — no build-time dependency, and silently skips if libexif isn't installed. Thumbnail IFD is filtered out to avoid duplicate entries; values are truncated at 200 characters.
  • Donate / Support dialog: A new "Donate / Support" entry in the Help menu (also available via the donate command) opens a dialog with links to Ko-fi, Liberapay, and GitHub Sponsors. The dialog is shown once on first run (tracked via a sentinel file in the app data directory).

New Features

  • Crash reporter: When Lektra crashes, a dialog displays the crash log and offers a one-click button to open a pre-filled GitHub issue. The crash handler is installed at startup via CrashHandler::install(). On Linux/macOS, fatal signals (SIGSEGV, SIGABRT, SIGFPE, SIGILL, SIGBUS) are caught; on Windows, SetUnhandledExceptionFilter is used. A stack trace is written to ~/.local/share/lektra/crashes/crash_latest.log (Linux/macOS) or %TEMP%\lektra_crash.log (Windows). A forked/spawned clean process then shows the CrashReporterDialog with the log, a "Copy to Clipboard" button, and a "Report on GitHub" button. Stack traces include function names and file/line numbers when built with RelWithDebInfo or Debug; release builds show addresses only.

Bug Fixes

  • Fix crash (SIGSEGV) when cancelling the file dialog opened via "Open File in VSplit / HSplit": OpenFilesInVSplit and OpenFilesInHSplit passed an empty file list to the file dialog and then unconditionally accessed qfiles[0] after it returned. When the user cancelled the dialog, qfiles was empty and the index access caused a segmentation fault. Fixed by returning early when qfiles is empty after the dialog closes.

  • Fix page gaps disappearing after scrolling in PDFs where the first page differs in size from the content pages: cachePageStride() is called at open time when only page 0's dimensions are known; all other pages fall back to m_default_page_dim (page 0's size). If the cover or title page is a different height than the body pages, the precomputed strides are wrong and content pages overflow into the gap below them once they render. Fixed by comparing each rendered page's true stride against m_page_offsets in renderPageFromImage(); if a mismatch greater than 0.5 px is detected, m_page_layout_stale is set. On the next renderPages() pass, cachePageStride() + repositionPages() + updateSceneRect() are re-run before visible pages are computed. For uniform-page-size documents the check is a no-op; for mixed-size PDFs it triggers at most once per newly discovered page dimension.

Don't miss a new lektra release

NewReleases is sending notifications on new releases.