Skip to content

Releases: jswysnemc/mark-shot

v0.1.32

27 Jun 16:29

Choose a tag to compare

Features & Enhancements

  • Startup Shortcut Hint Panel: Replaced the centered startup hint pill with a PixPin-style vertical shortcut panel that defaults to the left-bottom corner and moves to the left-top corner when the pointer approaches it.
  • Input Device Hints: Added keyboard, mouse, and mouse-wheel glyphs to the startup shortcut panel so shortcut rows communicate the expected input method more clearly.
  • Window Z-Order Selection: Improved window ordering across GNOME, KDE Plasma, Hyprland, X11, and Windows so region selection prefers the visually topmost matching window.
  • Wayland Fcitx5 Candidate Support: Adjusted layer-shell cursor-rectangle handling so fcitx5 candidate windows appear correctly under Wayland capture overlays.
  • Settings Gear Icons: Redrew the settings toolbar and General settings navigation icons as clearer gear glyphs instead of sun-like radial icons.

Bug Fixes

  • Tray Mode Compatibility: Fixed startup behavior when Mark Shot is launched directly into tray mode on environments without an immediately available system tray.
  • Wayland Text Editor Width: Prevented the annotation text editor from shrinking unexpectedly on fractional-scale Wayland displays.

v0.1.31

24 Jun 02:34

Choose a tag to compare

docs: sync 0.1.31 release notes and bump version

v0.1.30

20 Jun 08:16

Choose a tag to compare

fix: drop unsupported clear button on QKeySequenceEdit for arm64 Qt

Mark Shot v0.1.29

17 Jun 22:56

Choose a tag to compare

Features & Enhancements

  • Independent Magnifier Frame Resize: The magnifier annotation now exposes resize handles on both the inner source viewfinder and the outer lens. Rectangle lenses get 8 corner/edge handles per frame; circular lenses get 4. Resizing either frame keeps magnifierScale constant by scaling the other frame proportionally, so the loupe ratio is preserved no matter which side the user grabs. The drag/translate logic moves into a dedicated shot_window_magnifier_drag.cpp to keep the annotation editing pass small and the resize flow self-contained.
  • Rectangle Highlight & Invert Styles: The rectangle tool gains a style selector with three modes:
    • Stroke: existing outlined or filled rectangle with optional rounded corners.
    • Highlight: marker-pen overlay using CompositionMode_Multiply with a semi-transparent fill, mirroring the highlighter look but bound to a rectangle.
    • Invert: inverts the RGB pixels covered by the rectangle, with the outline stroke kept as a visual cue.
      The fill toggle and corner radius slider are hidden when Highlight or Invert is active, since those styles do not consume filled or cornerRadius.
  • Persisted Annotation Tool Defaults: Tool defaults now survive across sessions through a dedicated state file at ~/.config/mark-shot/annotation-state.json. The persisted snapshot covers active color and opacity, text background color, per-tool widths (pen / shape / number / mosaic block / laser), rectangle fill / corner radius / style, magnifier scale and lens shape, arrow / highlighter / number badge styles, and text font family. Writes go through QSaveFile for atomic commits, triggered immediately after every default-changing entry point so a crash never leaves the file half-written. The state is loaded before UI construction so the toolbar reflects the saved defaults from the very first paint.

Bug Fixes

  • Annotation Width State Consistency: Unified the standard stroke width used by Pen, Line, Arrow, Laser, Rectangle, and Ellipse tools while keeping Highlighter width, Number size, Text size, and Mosaic granularity independent. Mouse wheel and slider adjustments now flow through the same state update path, selected-object width changes persist correctly, and high-frequency width edits are debounced before writing history or disk state.
  • Translation Target Language Controls: Added a target language selector to the OCR result floating panel and the pinned image context menu. The selector now uses a stable custom dropdown affordance, saves translation.targetLanguage, and clears stale pinned-window translation overlays when the target language changes.

Mark Shot 0.1.28

15 Jun 17:32

Choose a tag to compare

Features & Enhancements

  • Configurable Clipboard Image Policy: Added clipboard.image.mode with image/png, url, and threshold modes, plus thresholdM size control in megabytes. The default now keeps direct image/png clipboard data for better paste compatibility.
  • Shift-Constrained Line Drawing: Holding Shift while drawing Line, Arrow, or straight Highlighter annotations now snaps strokes to horizontal, vertical, or 45-degree directions.
  • Updated Demo Video: Replaced the README demo video with the latest GitHub user-attachments asset.

Bug Fixes

  • Default Config Creation: Ensured startup creates a default config.json when missing and includes clipboard defaults.

v0.1.27

11 Jun 12:09

Choose a tag to compare

Full Changelog: v0.1.26...v0.1.27

v0.1.26

10 Jun 12:55

Choose a tag to compare

Full Changelog: v0.1.25...v0.1.26

v0.1.25

09 Jun 14:04

Choose a tag to compare

Features & Enhancements

  • Configure Screen Freeze Scope:
    • Introduced screen freeze scope config (capture.freezeScope / captureFreezeScope) to control which screens are frozen during region selection screenshots in multi-monitor environments.
    • Supports all-screens (default) to capture and freeze all connected outputs or cursor-screen to freeze only the display containing the cursor.
  • Pinned Image Window Architecture Refactor:
    • Extracted the massive inline sticker/pinned window logic from shot_window_pinned_window.cpp into a modular directory structure under src/pinned_window/ (pinned_image_window.cpp/h, OCR, translation, selection, geometry, and resize controller modules) for better code readability and maintenance.
  • Modularized Startup and Capture Initialization:
    • Refactored various initialization routines (environment variable override, configuration parsing, default tools, and Qt portal service disabling) out of main.cpp into a dedicated startup_config module.
    • Relocated session launch logic to a standalone capture_session_launcher module, separating viewport calculation, window instantiation, and screen freezing strategies from the main executable entry.

Tests

  • Added Unit Tests:
    • Added unit tests for capture freeze scope (tests/capture_freeze_scope_test.cpp) and pinned resize controller (tests/pinned_resize_controller_test.cpp).

v0.1.24

08 Jun 21:07

Choose a tag to compare

Features & Enhancements

  • Wayland Pinned Window Topmost Support (Always on Top):
    • Implemented custom cross-platform topmost management (pinned_window_top.cpp) for pinned image windows.
    • Added native support for Wayland LayerShell Top protocol role, with dynamic role switching and fallback strategies.
    • Introduced configurable "alwaysOnTop" preference for pinned windows (default true) with toggle option in the context menu.
    • Added delayed scheduling (schedulePinnedWindowRaise) to reliably assert topmost status across different Wayland compositors during window mapping.
  • Windows Graphics Capture (WGC) Backend:
    • Added high-performance native Windows Graphics Capture backend (screen_capture_windows_wgc.cpp) for smooth, hardware-accelerated screen capturing on Windows 10/11.
    • Enabled borderless window capture mode to strip shadow margins and window borders for clean screenshot outputs.
    • Resolved MinGW compatibility and runtime dependency issues for MSYS2/UCRT64 toolchains.
  • GNOME Shell Extension & Window Detection Refactor:
    • Heavy refactoring of the GNOME Shell scroll helper extension (extension.js) to improve GNOME Wayland compatibility.
    • Introduced mark-shot-window-detection-gnome helper script for reliable window geometry and boundary detection under GNOME.
  • Unified Configuration Storage:
    • Implemented standard configuration store (app_config_store.cpp) for atomic preference updates, improving robustness when reading and writing configuration settings.
  • Improved Annotation Workflows:
    • Added support for multiple number stamp sequences and numbering styles (Arabic, Alphabetic, Roman, Chinese, and Heavenly Stems) with sequence reset button.
    • Smart automatic repositioning of the text annotation editor based on remaining boundary space to prevent input panels from clipping.
    • Enabled native input method (IME) support for the text editor and ensured text cursor visibility during long multi-line inputs.
  • Configurable Debug Logging:
    • Added --debug, --no-debug, and --debug-log <path> CLI options for configurable troubleshooting.
    • Added debug.enabled and debug.logPath to config.json while maintaining backward compatibility with DEBUG env vars.

Bug Fixes

  • Windows Scroll & Capture Artifacts:
    • Fixed scroll preview positioning and visibility issues in multi-monitor setups.
    • Added exclusionary logic in Windows hook routines to filter out scroll preview overlays from capture frames.
  • Windows Thread Affinity:
    • Corrected Windows affinity configuration logic during system API integration.
  • Wayland Overlay Handling:
    • Improved screen overlay placement and coordinate translations under Wayland LayerShell environments.

CI & Build

  • Windows Build Pipeline:
    • Configured CI workflows to provision required C++ WinRT headers, allowing successful automated builds on Windows runner environments.

Release Artifacts

  • mark-shot-v0.1.24-linux-x86_64.tar.gz
  • mark-shot-v0.1.24-linux-arm64.tar.gz
  • mark-shot_0.1.24_amd64.deb
  • mark-shot_0.1.24_arm64.deb
  • mark-shot_0.1.24_fedora_x86_64.rpm
  • mark-shot_0.1.24_fedora_aarch64.rpm
  • mark-shot-v0.1.24-linux-x86_64.AppImage
  • mark-shot-v0.1.24-linux-x86_64.flatpak

v0.1.23

07 Jun 23:57

Choose a tag to compare

Features & Enhancements

  • Windows Build Support & Tray Integration: Added support for compiling on Windows (MSYS2/UCRT64) with Qt 6. Implemented system tray icon support, global hotkey registration, native system fonts, and virtual screen geometry calculations for multi-monitor Windows setups.
  • App Icon & Tray Default Configuration: Added application icon mark-shot.ico and updated default tray settings.
  • Supporting Documentation & Code Comments: Added detailed in-code documentation and comments for core modules to make the system architecture clearer.

Bug Fixes

  • Windows Screen Capture Configuration: Expose virtual screen geometries on Windows builds and ensure default config creation at startup to avoid runtime launch issues.

Refactoring

  • Source Code Restructuring: Split oversized source files (such as shot_window.cpp and screen_capture.cpp) into cohesive submodules to improve maintainability and testability.

Release Artifacts

  • mark-shot-v0.1.23-linux-x86_64.tar.gz
  • mark-shot-v0.1.23-linux-arm64.tar.gz
  • mark-shot_0.1.23_amd64.deb
  • mark-shot_0.1.23_arm64.deb
  • mark-shot_0.1.23_fedora_x86_64.rpm
  • mark-shot_0.1.23_fedora_aarch64.rpm
  • mark-shot-v0.1.23-linux-x86_64.AppImage
  • mark-shot-v0.1.23-linux-x86_64.flatpak