Skip to content

Releases: allenk/GeminiWatermarkTool

v0.2.6

26 Mar 05:39

Choose a tag to compare

v0.2.6 - Snap Detection Fix, Standalone Build, Veo Demo

Snap Detection Improvements:

  • Reduced guided_detect coarse scale step from 8 to 4 for finer resolution
  • Replaced sqrt with cbrt size penalty — less over-penalization of small
    watermarks (~28px preview tier from Gemini web UI)
  • Lowered CLI snap min_size from 32 to 16 (both fallback-region and
    explicit-region snap call sites)
  • Added snap_min_size state field and Min Size slider (8-64px) to GUI
    Custom mode alongside existing Max Size slider
  • Standard 48x48 (65%→72%) and 96x96 (91%) snap regression-free
  • Preview 28x28 watermarks now correctly detected at 51% (was 32x32 at 41%)

Standalone Build Fix:

  • Disabled OpenMP to eliminate VCOMP140.DLL runtime dependency
  • MSVC OpenMP runtime (vcomp140.dll) cannot be statically linked
  • Vulkan GPU inference path completely unaffected
  • CPU fallback path runs single-threaded (still functional, slightly slower)
  • Result: true zero-dependency standalone executable on all platforms

Veo Video Watermark Remover (Demo):

Documentation:

  • Pinned Veo demo announcement in README
  • Added gwt-integrations (Claude Code Skill + MCP Server) to README
  • Updated project badges and author notice

v0.2.5

06 Mar 08:16

Choose a tag to compare

v0.2.5 - AI Denoise + Advanced CLI

AI Denoise (FDnCNN + NCNN Vulkan GPU):

  • FDnCNN model (1.3 MB FP16) embedded in executable via ncnn2mem
  • NCNN static build with Vulkan GPU acceleration, CPU fallback
  • Gradient-masked blending: only repairs edge artifacts, preserves background
  • AI Denoise set as default inpaint method (strength=120%, sigma=50)
  • New UI: sigma slider, GPU device info, strength up to 300%
  • Adjustable Snap search range (32-320px) for resized watermarks

Advanced CLI:

  • --region for explicit watermark position (absolute or corner-relative)
  • --fallback-region for search area when standard detection fails
  • --snap with --snap-threshold (default 60%) to reject false positives
  • --denoise ai/ns/telea/soft/off with --sigma, --strength, --radius
  • Smart routing: --fallback-region + --snap skips standard detection
  • Fully backward-compatible: no new flags = identical to previous behavior

Cross-platform CI with NCNN submodule on Windows/Linux/macOS.

New dependencies: NCNN (submodule, BSD-3-Clause), volk (vcpkg, MIT)
AI model: FDnCNN Color from KAIR (MIT License)
Build flag: ENABLE_AI_DENOISE=ON (default in all presets)

v0.2.4

24 Feb 03:49

Choose a tag to compare

v0.2.4 — File Dialog Crash Fix & D3D11 Resize Jitter

Fixes:

  • Fix crash when opening Save/Open file dialog (ImGui NewFrame assert)
    · Win32 modal dialog loop triggers SDL EXPOSED events
    · Event watch callback re-entered mid-frame → double NewFrame()
    · Added reentrant rendering guard to both callback and main loop

  • Fix D3D11 image preview jitter during horizontal window resize
    · Remove Flush() CPU stall before ResizeBuffers
    · Use event-provided pixel dimensions (not stale SDL query)
    · Skip vsync on resize frames to push content before DWM composites
    · Only process PIXEL_SIZE_CHANGED (correct on HiDPI)

v0.2.3

19 Feb 21:26

Choose a tag to compare

v0.2.3 — Software Inpainting, Guided Detection & Rendering Fixes

New Features:

  • Multi-scale guided watermark detection (Snap Engine)
    · Coarse-to-fine NCC template matching in user-drawn search region
    · Variable watermark sizes (24-160px) with scale step refinement
    · Auto-snap on draw/move release, manual re-snap via [Snap] button
    · Dual-box overlay: blue search region + green/yellow/red snap result
    · Process uses snap result (effective_rect) when available

  • Software Inpainting cleanup for residual artifacts
    · Three methods: NS (Navier-Stokes), TELEA, Soft Inpaint
    · Gradient-weighted masks derived from watermark alpha channel
    · Configurable strength, radius, and method in Custom mode UI
    · Addresses images degraded by post-watermark resize/recompression

Rendering:

  • Fix window resize flickering (DXGI_SCALING_NONE replaces STRETCH)
  • Fix D3D11 image preview jitter during horizontal resize
    · Remove Flush() stall, skip vsync on resize frames
    · Use pixel-accurate event dimensions for ResizeBuffers
  • Only process SDL_EVENT_WINDOW_PIXEL_SIZE_CHANGED (HiDPI correct)

v0.2.2

13 Feb 11:04

Choose a tag to compare

v0.2.2 - macOS Compatibility Release

Fixes macOS-specific issues with window sizing, Retina rendering, and
first-run security, plus preview enhancements across all platforms.

  • Fix fullscreen clipping on small displays (e.g. MacBook 1280x800)

    • Root cause: kMinHeight (888) exceeded macOS usable screen height (708)
    • Minimum window size now adapts to 95% of display usable area
  • Retina font clarity: rasterize font atlas at 2x framebuffer resolution
    with FontGlobalScale compensation — pixel-perfect text on HiDPI

  • Ad-hoc code signing in CI — eliminates "app is damaged" error

    • Users can now right-click → Open instead of using xattr command
  • Enable GUI build for both x64 and arm64 architectures

  • Zoom-to-cursor: mouse wheel zooms toward cursor position

  • Zoom buttons and shortcuts zoom toward viewport center

  • Outlined text labels (4-directional dark outline) for readability
    on both light and dark image backgrounds

  • Hold C to temporarily hide all region overlays for clean inspection

  • Updated shortcut table in sidebar and README

  • Fix toolbar separator artifact (stray horizontal line between buttons)
    on all platforms — move Separator to toolbar top as menu/toolbar divider

  • Rewrite DXGI initialization to cooperative mode

    • Factory-first flow, no exclusive flags, no mode switching
    • Resolves mutual exclusion with MPC-HC/BE, games, and other D3D11 apps
  • Lightweight is_available() with zero device creation side effects

  • SetMaximumFrameLatency(1) to reduce GPU present queue footprint

  • Add --banner/--no-banner flags with TTY auto-detection

  • Auto-hide ASCII banner when piped or redirected (AI agent friendly)

  • Add "First Run — OS Security Prompts" guide (macOS / Windows / Linux)

  • Update keyboard shortcuts in README

v0.2.1

11 Feb 03:01

Choose a tag to compare

v0.2.1 - Windows Compatibility Release

This release significantly improves Windows compatibility, especially for
virtualized environments and CJK (Chinese/Japanese/Korean) users.

  • Add D3D11 as the preferred render backend on Windows
  • Automatic WARP (software rasterizer) fallback when no GPU available
  • Works in Hyper-V, Docker, Remote Desktop, and other virtualized environments
  • Cooperative DXGI mode: no exclusive flags, no mode switching
    • Factory-first init: CreateDXGIFactory1 → EnumAdapters → CreateDevice
    • Lightweight is_available() with zero device creation side effects
    • Resolves mutual exclusion with MPC-HC/BE, Forza Horizon 5, and other D3D11 apps
    • SetMaximumFrameLatency(1) to reduce GPU present queue footprint
    • ClearState() + Flush() for clean shutdown
  • Use --backend=opengl to force OpenGL if needed

Tested:

  • NVIDIA RTX PRO 6000 (Hardware D3D11) alongside MPC-BE and Forza Horizon 5

  • Microsoft Basic Render Driver (WARP fallback in Hyper-V)

  • Zoom-to-cursor: mouse wheel zooms toward cursor position

  • Zoom buttons/shortcuts zoom toward viewport center

  • Outlined text labels (4-dir 1px dark outline) for readability on any background

  • Hold C to temporarily hide all region overlays for clean result inspection

  • Updated shortcut table: C (hold), Ctrl +/-, Ctrl 0, Scroll

  • Add --banner/--no-banner flags with TTY auto-detection

  • Auto-hide ASCII banner when piped or redirected (AI agent friendly)

  • --no-banner for scripted/automated usage, --banner to override

  • Fix crash when drag-dropping files with CJK characters (中文/日本語/한국어)

  • Add path_from_utf8() for correct SDL UTF-8 to filesystem path conversion

  • Improve CLI error messages with guidance for CJK path issues

  • Centralize console UTF-8 setup for both CLI and GUI modes

  • Clamp initial window size to 95% of usable screen area

  • Prevent window from being larger than display on small screens

  • Disable imgui.ini generation (unused with viewport-based layout)

  • Add WIL (Windows Implementation Libraries) for D3D11 COM management

  • Add imgui[dx11-binding] for D3D11 ImGui integration

v0.2.0

02 Feb 10:07

Choose a tag to compare

v0.2.0 - GUI Application & Watermark Detection

  • Full graphical desktop application with ImGui + SDL3

    • Drag & drop single image or multiple files for batch processing
    • Drag & drop entire folder to load all supported images
    • Real-time before/after comparison, zoom, pan, fit-to-window
    • Custom watermark mode: draw region interactively with 8-point anchors, WASD fine-tuning
    • Keyboard shortcuts: X (process), V (compare), Z (revert)
    • CJK font support (Chinese/Japanese/Korean filename display)
    • Native file dialogs with Linux fallback (zenity/kdialog)
  • Three-stage NCC detection algorithm — inspired by @dannycreations (#13)

    • Stage 1: Spatial NCC with alpha map correlation (50% weight)
    • Stage 2: Gradient NCC via Sobel edge matching (30% weight)
    • Stage 3: Statistical variance analysis (20% weight)
    • Circuit breaker at 0.25 to short-circuit obvious non-matches
  • Confidence scoring with configurable threshold (default: 25%)

  • CLI: --force to skip detection, --threshold for custom value

  • GUI: interactive threshold slider (0-100%, 5% steps)

  • Thumbnail atlas preview (4-column grid, 220px cells, filename labels)

  • Status overlays per image: OK / SKIP / FAIL

  • Confirmation dialog before overwriting originals

  • Progress bar with scrollable result log

  • Thumbnails refresh after completion

  • Reorganized source into src/core/, src/cli/, src/gui/

  • Core engine shared between CLI and GUI

  • Theme constants extracted to �atch_theme namespace in style.hpp

  • C++ standard updated from C++17 to C++20

  • @dannycreations - Watermark detection concept (#13)

Commits since v0.1.3:

  • 278492b feat(gui): batch processing UX improvements and directory drop support
  • 2da7a83 feat(detection,gui): three-stage NCC detection, CLI batch processing, and UI enhancements
  • b81599b feat(gui): complete UI implementation with CJK support, live resize and UX improvements
  • d21b69d feat(gui): implement ImGui scrollbar-based image panning and fix stability issues
  • 12c865c refactor!: reorganize project structure and relocate files

v0.1.3

28 Jan 03:52

Choose a tag to compare

v0.1.3 - Multiple files support & UTF-8 path fix

  • Multiple files support in simple mode (#12) - Thanks @dannycreations!

    • Drag & drop multiple files onto the executable
    • Process multiple files with single command: GeminiWatermarkTool file1.jpg file2.png file3.webp
    • Summary reporting shows success/failure counts after batch processing
  • Windows UTF-8 path display fix

    • Fixed garbled characters when processing files with non-ASCII names (e.g., Chinese, Japanese, Korean)
    • Paths like "複製.png" now display correctly instead of " ƻs.png"
  • Refactored CLI with unified ProcessResult tracking

  • Extracted process_single helper to reduce code duplication

  • Consolidated result printing across simple and batch modes

  • @dannycreations - Multiple files support (#12)

Commits:

  • 5d3d473 feat(cli): support multiple files in simple mode (#12)
  • c9797eb feat(core): add path_formatter for Windows UTF-8 path display

v0.1.2

14 Dec 23:05

Choose a tag to compare

v0.1.2 - Cross-Platform Release

This release brings full cross-platform support with pre-built binaries for Windows, Linux, and macOS.

  • Cross-platform support: Windows, Linux, macOS

  • macOS Universal Binary (Intel + Apple Silicon)

  • CMakePresets.json for standardized builds

  • GitHub Actions CI/CD for automated releases

  • Windows: Windows 10/11 x64

  • Linux: x64, glibc 2.35+ (Ubuntu 22.04+, Debian 12+)

  • macOS: macOS 11.0+ (Intel or Apple Silicon)

For older Linux systems (Ubuntu 20.04+), build from source using:
cmake --preset linux-x64-Release
cmake --build --preset linux-x64-Release

See README.md for full build instructions.

v0.1.1 - Open Source Release

13 Dec 14:16

Choose a tag to compare

🎉 Open Source Release

This release marks the full open source release of Gemini Watermark Tool. The complete source code is now available!

✨ Features

  • Reverse Alpha Blending - Mathematically accurate watermark removal
  • Auto Size Detection - Automatically detects 48×48 or 96×96 watermark
  • Simple Mode - Just GeminiWatermarkTool.exe image.jpg for in-place edit
  • Batch Processing - Process entire directories at once
  • Standalone Binary - Single .exe, no dependencies

🔧 Build Modes

Mode Command Description
Standalone `cmake -B build Embedded assets, single exe

📐 Watermark Size Rules

Image Size Watermark
W ≤ 1024 or H ≤ 1024 48×48 (32px margin)
W > 1024 and H > 1024 96×96 (64px margin)

🐛 Bug Fixes

  • Fixed: 1024×1024 images now correctly use Small (48×48) watermark
  • Fixed: --force-small / --force-large flags now work correctly
  • Fixed: Output quality improved (JPEG 100, WebP lossless)

📦 Downloads

File Description
GeminiWatermarkTool.exe Windows x64 standalone executable
Source code (zip) Full source code
Source code (tar.gz) Full source code

🛠️ Build Requirements

  • CMake 3.20+
  • C++20 compiler (MSVC 2022, GCC 11+, Clang 14+)
  • vcpkg (for dependencies)

📋 Dependencies

  • OpenCV 4.x
  • CLI11
  • spdlog
  • fmt

⚠️ Disclaimer

Always backup original images before processing. See README for full disclaimer.


Full Changelog: https://github.com/allenk/GeminiWatermarkTool/commits/v0.1.1