Skip to content

v4.4.2

Latest

Choose a tag to compare

@github-actions github-actions released this 07 Aug 09:35

A feature release that adds a built-in updater, a reworked PDF viewer, detachable view windows, and a Gitee release mirror on top of VNote 4.3.0:

  • In-app updates (new, Windows x64, Qt 6 build): VNote can now update itself
    • Downloads only what changed — a release publishes a signed file manifest plus an optional delta package, and the client resolves a delta chain before falling back to the full package
    • Every manifest is verified against a compiled-in Ed25519 key; an unsigned or unverifiable release is refused (fail-closed), and hosts are allow-listed per release source
    • Files are staged inside the install directory and swapped in under a durable write-ahead journal at exit, with automatic rollback and crash recovery on the next launch
    • A machine-wide lease serializes updates across sessions; Microsoft Store and Program Files installs are detected and directed to their own update channel
    • Surfaces as an Update dialog (Update / Skip This Version / Later / Restart Now) and a startup notification with inline progress
    • Update source setting (Settings › General) to fetch updates from either GitHub or Gitee
    • The Windows 7 (Qt 5.15) build publishes no update packages; there the check simply points at the release page
  • PDF viewer
    • Upgraded the bundled pdf.js from 3.1.81 to 3.11.174 (the last v3 release; v4+ requires Chrome 125+, which the Qt 5.15 / Windows 7 build cannot provide), and vendored the previously-missing web/standard_fonts/ so PDFs relying on non-embedded Helvetica/Times/Courier render correctly
    • The PDF's embedded outline (bookmarks) now populates the Outline dock and a new per-window Outline toolbar popup, with click-to-jump
    • Fix the external file path not resolving for drag-and-dropped PDFs
  • Views & windows
    • Detach a view window into a separate top-level window from the tab context menu
    • New --detached-view CLI option to open files directly in a detached split
    • Ctrl+G, X closes the focused dock or, when the editor has focus, the current tab
    • The Console dock activation shortcut is now configurable
  • Notifications: attention routing, incident de-duplication, and a toast surface, so repeated failures (image upload, auto-save, sync) collapse into one actionable entry with a Details view
  • Editor & Markdown
    • Offer to migrate a note's legacy vx_images pictures into its assets folder, with an inline banner and a Don't Ask Again choice
    • Edit-mode Copy Link action for headings
  • United Entry: new task entry to find and run tasks, a popup sized from the UI font and clamped to the screen, and a readable selected task row
  • Settings: a Quick Note scheme can now use a note template
  • macOS: capture selected text from any app as a note through a system Service
  • Tags: Esc clears the selection in the Tags explorer
  • Fixes
    • Recover from a partially-installed bundled resource set instead of leaving stale data behind
    • Keep the frameless title bar out of Qt's menu-bar slot eviction
    • Fix the export dialog not remembering the last-used theme (#2389)
    • Fix enable-sync failing on macOS when opening a remote notebook (#2718)
    • Stop duplicating legacy attachments during VNote3 migration
    • UTF-8-safe .vswp backup path (#2721)
    • Bundle the MSVC CRT for toolsets newer than CMake's redistributable list
    • Use Git Bash explicitly in init.cmd instead of relying on WSL bash
    • Remove the version-specific config override logic
  • Internals
    • core_services no longer links VTextEdit or Qt Widgets
    • Inline chrome is themed through the stylesheet instead of hardcoded colors, with a test gate that fails the build on literal colors in setStyleSheet()
  • Infrastructure: code and releases are mirrored to Gitee, keeping the two most recent releases
  • Packaging (Windows): the release ZIP is now flat — VNote-<ver>-win64/vnote.exe instead of VNote-<ver>-win64/bin/vnote.exe. The bin/ level was unintended (src/CMakeLists.txt asked for a flat install, but a submodule's include(GNUInstallDirs) seeded the CMake cache first) and it is incompatible with the incremental updater, which strips exactly one level from a full package
  • Translations: updated Simplified Chinese and Japanese translations