Releases: jswysnemc/mark-shot
Releases · jswysnemc/mark-shot
v0.1.32
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
docs: sync 0.1.31 release notes and bump version
v0.1.30
fix: drop unsupported clear button on QKeySequenceEdit for arm64 Qt
Mark Shot v0.1.29
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
magnifierScaleconstant 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 dedicatedshot_window_magnifier_drag.cppto 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 usingCompositionMode_Multiplywith 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 consumefilledorcornerRadius.
- 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 throughQSaveFilefor 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
Features & Enhancements
- Configurable Clipboard Image Policy: Added
clipboard.image.modewithimage/png,url, andthresholdmodes, plusthresholdMsize control in megabytes. The default now keeps directimage/pngclipboard data for better paste compatibility. - Shift-Constrained Line Drawing: Holding
Shiftwhile 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.jsonwhen missing and includes clipboard defaults.
v0.1.27
Full Changelog: v0.1.26...v0.1.27
v0.1.26
Full Changelog: v0.1.25...v0.1.26
v0.1.25
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 orcursor-screento freeze only the display containing the cursor.
- Introduced screen freeze scope config (
- Pinned Image Window Architecture Refactor:
- Extracted the massive inline sticker/pinned window logic from
shot_window_pinned_window.cppinto a modular directory structure undersrc/pinned_window/(pinned_image_window.cpp/h, OCR, translation, selection, geometry, and resize controller modules) for better code readability and maintenance.
- Extracted the massive inline sticker/pinned window logic from
- Modularized Startup and Capture Initialization:
- Refactored various initialization routines (environment variable override, configuration parsing, default tools, and Qt portal service disabling) out of
main.cppinto a dedicatedstartup_configmodule. - Relocated session launch logic to a standalone
capture_session_launchermodule, separating viewport calculation, window instantiation, and screen freezing strategies from the main executable entry.
- Refactored various initialization routines (environment variable override, configuration parsing, default tools, and Qt portal service disabling) out of
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).
- Added unit tests for capture freeze scope (
v0.1.24
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 (defaulttrue) with toggle option in the context menu. - Added delayed scheduling (
schedulePinnedWindowRaise) to reliably assert topmost status across different Wayland compositors during window mapping.
- Implemented custom cross-platform topmost management (
- 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.
- Added high-performance native Windows Graphics Capture backend (
- 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-gnomehelper script for reliable window geometry and boundary detection under GNOME.
- Heavy refactoring of the GNOME Shell scroll helper extension (
- Unified Configuration Storage:
- Implemented standard configuration store (
app_config_store.cpp) for atomic preference updates, improving robustness when reading and writing configuration settings.
- Implemented standard configuration store (
- 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.enabledanddebug.logPathtoconfig.jsonwhile maintaining backward compatibility withDEBUGenv vars.
- Added
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.gzmark-shot-v0.1.24-linux-arm64.tar.gzmark-shot_0.1.24_amd64.debmark-shot_0.1.24_arm64.debmark-shot_0.1.24_fedora_x86_64.rpmmark-shot_0.1.24_fedora_aarch64.rpmmark-shot-v0.1.24-linux-x86_64.AppImagemark-shot-v0.1.24-linux-x86_64.flatpak
v0.1.23
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.icoand 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.cppandscreen_capture.cpp) into cohesive submodules to improve maintainability and testability.
Release Artifacts
mark-shot-v0.1.23-linux-x86_64.tar.gzmark-shot-v0.1.23-linux-arm64.tar.gzmark-shot_0.1.23_amd64.debmark-shot_0.1.23_arm64.debmark-shot_0.1.23_fedora_x86_64.rpmmark-shot_0.1.23_fedora_aarch64.rpmmark-shot-v0.1.23-linux-x86_64.AppImagemark-shot-v0.1.23-linux-x86_64.flatpak