WebDrop Bridge is a sophisticated desktop bridge application that intercepts text-based drag-and-drop operations from embedded web applications and converts them into native file-drag operations recognized by professional desktop applications.
Find a file
claudi 7daec731ca Add internationalization support with English and French translations
- Introduced a new i18n module for managing translations using JSON files.
- Added English (en.json) and French (fr.json) translation files for UI elements.
- Implemented lazy initialization of the translator to load translations on demand.
- Added unit tests for translation lookup, fallback behavior, and available languages detection.
2026-03-10 14:32:38 +01:00
.github update documentation 2026-03-03 08:41:28 +01:00
build installer creation files 2026-03-10 13:27:10 +01:00
docs feat: implement mouse event emulator for Qt WebEngineView to enhance hover effects 2026-03-04 14:49:40 +01:00
resources Add internationalization support with English and French translations 2026-03-10 14:32:38 +01:00
src/webdrop_bridge Add internationalization support with English and French translations 2026-03-10 14:32:38 +01:00
tests Add internationalization support with English and French translations 2026-03-10 14:32:38 +01:00
webapp cleanup 2026-02-19 15:16:05 +01:00
.env.example bump version to 0.8.3 2026-03-10 13:19:29 +01:00
.gitignore feat: Implement default welcome page for missing web application 2026-01-28 12:59:33 +01:00
.gitkeep Add initial project structure and documentation 2026-01-28 10:48:36 +01:00
config.example.json Add enable_checkout configuration option and update drag handling logic 2026-02-25 13:34:37 +01:00
CONFIG_README.md Refactor logging configuration to use AppData directory 2026-02-20 07:45:21 +01:00
CONTRIBUTING.md feat: Implement centralized version management and sync process 2026-01-30 09:16:12 +01:00
DEVELOPMENT_PLAN.md feat: implement package manager support for Windows and macOS, including Chocolatey and Homebrew configurations 2026-03-03 09:33:06 +01:00
LICENSE Add initial project structure and documentation 2026-01-28 10:48:36 +01:00
Makefile Add initial project structure and documentation 2026-01-28 10:48:36 +01:00
pyproject.toml chore: Update repository URLs and author information in README and pyproject.toml 2026-02-18 09:56:03 +01:00
pytest.ini Update pytest configuration to ensure coverage fails under specified threshold 2026-01-28 11:04:06 +01:00
QUICKSTART.md feat: implement package manager support for Windows and macOS, including Chocolatey and Homebrew configurations 2026-03-03 09:33:06 +01:00
README.md fix: standardize profile directory naming from ".webdrop-bridge" and "WebDropBridge" to ".webdrop_bridge" 2026-03-03 09:44:29 +01:00
requirements-dev.txt Add executable versioning support for Windows builds 2026-02-20 08:24:44 +01:00
requirements.txt Add initial project structure and documentation 2026-01-28 10:48:36 +01:00
setup.py Add initial project structure and documentation 2026-01-28 10:48:36 +01:00
test_msi.py Fix WindowsBuilder executable path and enhance MSI linking error reporting 2026-02-18 18:20:57 +01:00
tox.ini Add initial project structure and documentation 2026-01-28 10:48:36 +01:00
webdrop_bridge.code-workspace Add initial project structure and documentation 2026-01-28 10:48:36 +01:00

WebDrop Bridge

Professional Qt-based desktop application for intelligent drag-and-drop file handling between web applications and desktop clients (InDesign, Word, Notepad++, etc.)

Status License Python

Overview

WebDrop Bridge is a sophisticated desktop bridge application that intercepts text-based drag-and-drop operations from embedded web applications and converts them into native file-drag operations recognized by professional desktop applications.

The Problem

Modern web applications can transmit file paths via drag-and-drop, but desktop applications expect native file handles. Traditional solutions fail because:

  • Browsers sandbox cross-origin drag-and-drop
  • Web apps can't access the file system directly
  • Native apps need OS-level file handles (CF_HDROP on Windows, NSFilenamesPboardType on macOS)

The Solution

WebDrop Bridge embeds a web application in a Qt container with full filesystem access, intelligently intercepting and converting drag operations at the OS boundary.

Features

  • Qt-based Architecture - Professional Windows support via PySide6 (macOS support planned)
  • Embedded Web App - QtWebEngine provides Chromium without browser limitations
  • Drag Interception - Converts text paths to native file operations
  • Path Whitelist - Security-conscious file system access control
  • Configuration Management - Profile-based settings with validation
  • Settings Dialog - Professional UI for path, URL, logging, and window configuration
  • Auto-Update System - Automatic release detection via Forgejo API
  • Professional Build Pipeline - MSI for Windows, DMG for macOS
  • Comprehensive Testing - Unit, integration, and end-to-end tests (80%+ coverage)
  • Continuous Testing - GitHub Actions test automation
  • Structured Logging - File-based logging with configurable levels

Quick Start

Requirements

  • Python 3.10+
  • Windows 10/11
  • 200 MB disk space (includes Chromium from PyInstaller)

Option 1: Package Manager (Recommended for most users)

# Windows - Chocolatey
choco install webdrop-bridge
choco upgrade webdrop-bridge  # Update when new version available
# macOS - Homebrew (with custom tap)
brew tap HIM-public/webdrop-bridge https://git.him-tools.de/HIM-public/homebrew-webdrop-bridge.git
brew install webdrop-bridge
brew upgrade webdrop-bridge  # Update to latest version

Option 2: Direct wget (if you know the version)

# Replace VERSION with release tag (e.g., v0.8.0)
wget https://git.him-tools.de/HIM-public/webdrop-bridge/releases/download/VERSION/WebDropBridge_Setup.msi

# Example for v0.8.0:
wget https://git.him-tools.de/HIM-public/webdrop-bridge/releases/download/v0.8.0/WebDropBridge_Setup.msi

Option 3: Automated script (auto-detects platform)

# Windows (PowerShell)
.\build\scripts\download_release.ps1

# macOS / Linux  
./build/scripts/download_release.sh

For more installation options and details, see QUICKSTART.md and PACKAGE_MANAGER_SUPPORT.md

Installation from Source

# Clone repository
git clone https://git.him-tools.de/HIM-public/webdrop-bridge.git
cd webdrop-bridge

# Create and activate virtual environment
python -m venv venv
# venv\Scripts\activate.ps1       # Windows (PowerShell)
# venv\Scripts\activate.bat       # Windows (cmd.exe)

# Install dependencies
pip install -r requirements.txt

# Run application
python -m webdrop_bridge.main

Development Setup

# Install development dependencies
pip install -r requirements-dev.txt

# Run tests
pytest tests -v

# Run all quality checks (lint, type, format)
tox

# Build installers
python build/scripts/build_windows.py --msi    # Windows MSI

Project Structure

webdrop-bridge/
├── src/webdrop_bridge/          # Main application package
│   ├── core/                    # Core logic (drag interception, config)
│   ├── ui/                      # UI components (main window, widgets)
│   ├── utils/                   # Utilities (logging, validation)
│   ├── main.py                  # Entry point
│   └── config.py                # Configuration management
├── tests/
│   ├── unit/                    # Unit tests
│   ├── integration/             # Integration tests
│   ├── fixtures/                # Test data and fixtures
│   └── conftest.py              # Pytest configuration
├── build/
│   ├── windows/                 # Windows-specific build configs
│   └── scripts/                 # Build automation scripts
├── webapp/                      # Embedded web application
├── resources/
│   ├── icons/                   # Application icons
│   └── stylesheets/            # Qt stylesheets
├── docs/                        # Documentation
├── pyproject.toml               # Modern Python packaging
├── pytest.ini                   # Test configuration
├── tox.ini                      # Test automation
└── README.md                    # This file

Architecture

┌────────────────────────────────────────┐
│  Qt Main Window (PySide6)              │
│  ┌──────────────────────────────────┐  │
│  │  QtWebEngineView                 │  │
│  │  ┌────────────────────────────┐  │  │
│  │  │  Web Application (HTML/JS) │  │  │
│  │  │  • Drag with file paths    │  │  │
│  │  │  • Native drag operations  │  │  │
│  │  └────────────────────────────┘  │  │
│  └──────────────────────────────────┘  │
│         ↓ Drag Leave Event             │
│  ┌──────────────────────────────────┐  │
│  │  DragInterceptor                 │  │
│  │  • Validates path (whitelist)    │  │
│  │  • Creates QUrl + QMimeData      │  │
│  │  • Starts native file drag       │  │
│  └──────────────────────────────────┘  │
└────────────────────────────────────────┘
         ↓ Native File Drag
   ┌─────────────────┐
   │ InDesign/Word   │
   │ (receives file) │
   └─────────────────┘

Configuration

WebDrop Bridge supports two configuration methods:

Launch the application and access the Settings menu to configure:

  • Paths Tab - Add/remove allowed root directories
  • URLs Tab - Configure allowed web URLs (whitelist mode)
  • Logging Tab - Set log level and file location
  • Window Tab - Configure window dimensions
  • Profiles Tab - Save/load/export-import configuration profiles

Profiles are saved in ~/.webdrop_bridge/profiles/

2. Environment Variables

Create a .env file in the project root. Available settings:

# Application
APP_NAME=WebDrop Bridge
APP_VERSION=1.0.0

# Paths (comma-separated)
ALLOWED_ROOTS=Z:/,C:/Users/Public

# Web URLs (empty = no restriction, items = kiosk mode)
ALLOWED_URLS=

# Interface
WEBAPP_URL=file:///./webapp/index.html
WINDOW_WIDTH=1024
WINDOW_HEIGHT=768

# Logging
LOG_LEVEL=INFO
ENABLE_LOGGING=true

Testing

WebDrop Bridge includes comprehensive test coverage with unit, integration, and end-to-end tests.

# Run all tests
pytest tests -v

# Run with coverage report
pytest tests --cov=src/webdrop_bridge --cov-report=html

# Run specific test categories
pytest tests/unit -v                    # Unit tests only
pytest tests/integration -v             # Integration tests only

# Run specific test
pytest tests/unit/test_validator.py -v

# Run tests matching a pattern
pytest tests -k "config" -v

Test Coverage:

  • Current target: 80%+
  • Coverage report: htmlcov/index.html

Integration tests cover:

  • Drag-and-drop workflow
  • Update flow and release detection
  • End-to-end application scenarios

Auto-Update System

WebDrop Bridge includes an intelligent auto-update system that:

  • Automatic Detection: Periodically checks Forgejo/GitHub releases API
  • Smart Caching: Avoids redundant network calls with smart caching
  • User Notification: Alerts users of available updates via UI
  • Release Notes: Displays release notes and changes
  • Safe Deployment: Only triggers on newer versions

The update system is fully integrated with the application and runs in the background without blocking the UI.

For technical details, see docs/ARCHITECTURE.md.

Building Installers

Windows MSI Installer

# Build with MSI installer (recommended)
python build/scripts/build_windows.py --msi

# Build with code signing (requires certificate)
python build/scripts/build_windows.py --msi --code-sign

Output:

  • Portable executable: build/dist/windows/WebDropBridge/WebDropBridge.exe (~195 MB)
  • Professional MSI installer: build/dist/windows/WebDropBridge-{version}-Setup.msi
  • SHA256 checksum: build/dist/windows/WebDropBridge/WebDropBridge.exe.sha256

Note on macOS: Build scripts exist for macOS (DMG generation), but have never been built or tested. macOS support is theoretical at this point. The Qt/PySide6 architecture should support macOS, but platform-specific testing and validation would be required.

Creating Releases

For Forgejo/GitHub releases:

# Windows - Create release with MSI installer
powershell -ExecutionPolicy Bypass -File build/scripts/create_release.ps1

Development Workflow

  1. Create feature branch

    git checkout -b feature/my-feature
    
  2. Write tests first

    pytest tests/unit/test_my_feature.py
    
  3. Implement feature

    # Edit src/webdrop_bridge/...
    
  4. Run quality checks

    tox -e lint,type  # Run linting and type checking
    
  5. Submit pull request

Troubleshooting

Application won't start

  • Ensure Python 3.10+ is installed
  • Check logs/webdrop_bridge.log for errors
  • Verify all dependencies: pip list

Drag-and-drop not working

  • Verify paths in .env are valid
  • Check ALLOWED_ROOTS whitelist includes your test directory
  • On macOS, check System Preferences → Security & Privacy → Accessibility

Build errors

  • Clean build directory: rm -rf build/temp build/dist
  • Reinstall dependencies: pip install --force-reinstall -r requirements.txt
  • Check platform-specific requirements (Windows SDK, Xcode for macOS)

Platform Support

Platform Version Status Notes
Windows 10, 11 Full Tested on x64, MSI installer support
macOS 12+ ⚠️ Untested Possible via Qt/PySide6, but never built or tested. Theoretical support only.

Note: WebDrop Bridge is currently developed and tested exclusively on Windows. While the Qt/PySide6 framework supports macOS, we cannot guarantee functionality without actual macOS testing and validation. Contributions for macOS support validation are welcome.

Contributing

We welcome contributions! Please:

  1. Fork the repository
  2. Create a feature branch
  3. Write/update tests
  4. Submit a pull request
  5. Ensure CI passes

See CONTRIBUTING.md for detailed guidelines.

License

MIT License - see LICENSE file for details

Credits

  • Built with PySide6
  • Inspired by professional desktop integration practices
  • Special thanks to the Qt community

Support


Development Phase: Phase 4 Complete | Last Updated: February 18, 2026 | Current Version: 1.0.0 | Python: 3.10+ | Qt: PySide6 (Qt 6)