Skip to content

Releases

v1.3.0: Advanced Route Matching, Passthrough & Vitest Migration

Choose a tag to compare

@dima6312 dima6312 released this 09 Jan 17:47
9792f07

🚀 New Features

  • Advanced Route Matching: Support for globstars (**), wildcards (*), and parameterized paths (:id, {id}) for highly flexible routing patterns.
  • Query Parameter Passthrough: Automatically append source query parameters (like UTM tags) to destination URLs with a simple toggle.
  • Pattern Performance: Implemented pattern memoization to ensure high-performance matching at the edge.
  • Health Monitoring: New /health endpoint for infrastructure monitoring and container health checks.

🛠 Improvements & Refactoring

  • Vitest Migration: Migrated entire test suite to Vitest for superior developer experience and better coverage.
  • Shared Utilities: Extracted isPattern logic into a shared utility to ensure consistency across the stack.
  • Admin UI Updates: Enhanced routing management interface with better pattern previews and UX refinements.
  • Dependency Upgrades: Updated wrangler to v4.58.0 and optimized Docker configurations.

🛡 Security & Stability

  • Improved Route ID validation and sanitization logic.
  • Robust pattern index management in KV storage.
  • Refined Docker health check logic for better reliability.

v1.2.1

Choose a tag to compare

@dima6312 dima6312 released this 04 Jan 17:05
f016572

🎉 What's New

Docker Image Publishing

  • Automated Docker image publishing to GitHub Container Registry (GHCR)
  • Multi-platform support: linux/amd64 and linux/arm64 (Apple Silicon compatible)
  • Pull pre-built images: docker pull ghcr.io/dima6312/gr8hopper:latest

Documentation Improvements

  • Enhanced security documentation for Docker deployment
  • Clear warnings that ADMIN_USERNAME and ADMIN_PASSWORD are required
  • Container fails gracefully with helpful error messages if credentials are missing

📦 Installation

npm:

npm install -g gr8hopper

Docker:

docker pull ghcr.io/dima6312/gr8hopper:latest
docker run -d --restart unless-stopped \
  -p 3000:3000 \
  -e ADMIN_USERNAME=your-username \
  -e ADMIN_PASSWORD=your-secure-password \
  -v gr8hopper-data:/app/data \
  --name gr8hopper \
  ghcr.io/dima6312/gr8hopper:latest

🔐 Security

  • Container requires ADMIN_USERNAME and ADMIN_PASSWORD environment variables
  • No default credentials - fails immediately if not provided
  • Username cannot be 'admin' for security reasons

Full Changelog: v1.2.0...v1.2.1

v1.2.0: NPM Distribution & Security Hardening

Choose a tag to compare

@dima6312 dima6312 released this 04 Jan 13:59
678b5e5

🚀 Gr8hopper v1.2.0: Now on NPM!

This major update transforms Gr8hopper from a repository-only tool into a globally distributable package, while significantly hardening security for Docker and VPS deployments.


📦 NPM Package Distribution (New!)

  • CLI Support: New binary entry point allows running via npx gr8hopper or npm install -g.
  • Lightweight: Optimized package context (approx. 41KB).
  • Easy Setup: Running the command automatically initializes a local routes.json.

🛡️ Security & Container Hardening

  • Non-Root Execution: Docker containers run as user gr8hopper (UID 1001).
  • Named Volumes: Shifted to named volumes (gr8hopper-data) for cleaner persistence.
  • Environment Validation: Fail-early validation for ADMIN_USERNAME/ADMIN_PASSWORD.
  • Zero-Exposure Config: Standardized on .env files and EnvironmentFile patterns.

🛠️ Developer Experience (DX)

  • Husky Refinement: Properly chained lint-staged and tsc.
  • Storage Infrastructure: Fully asynchronous JsonFileAdapter.

🔄 Comparison: v1.1.2 vs v1.2.0

Feature v1.1.2 v1.2.0
Installation Git Clone only NPM / NPX / Global CLI
Docker User root gr8hopper (UID 1001)
Data Persistence Bind Mount (./data) Named Volumes (Safer)
Admin Setup Default placeholders Required Env Variable Validation

v1.1.2

Choose a tag to compare

@dima6312 dima6312 released this 04 Jan 12:47

🚀 Production Docker Support

• Added robust Docker and Docker Compose configurations for VPS deployments.
• Implemented non-root user security in containers.
• Added pre-configured writable data volumes for persistence.

🛡️ Security & Performance

• Refactored Storage: JsonFileAdapter is now fully asynchronous, improving efficiency on Node.js/Bun.
• Improved Initialization: More robust storage initialization and error reporting.
• Secure Defaults: Removed 'admin' as a default username from documentation and examples.

🛠️ Developer Experience (DX)

• Documentation: Modernized npm flag examples (using --omit=dev).
• Automation: Integrated Husky and lint-staged for automated pre-commit quality checks.
• Cleanup: Unified .dockerignore and refined build processes.

🐛 Bug Fixes

• Fixed Docker build failure caused by husky prepare script running with --omit=dev flag by adding --ignore-scripts to npm ci commands in Dockerfile and documentation examples.

v1.1.1: Mobile Admin UI Overhaul and Optimizations

Choose a tag to compare

@dima6312 dima6312 released this 03 Jan 21:27
6747c92

What's New in v1.1.1 🚀

This release brings a complete overhaul of the Admin UI with a focus on mobile-first design, improved accessibility, and developer experience.

✨ Major Features & Enhancements

  • Admin UI Overhaul: A more modern, responsive, and mobile-friendly interface for managing your redirects.
  • Improved Route Management:
    • Routes are now sorted by newest-first for easier access.
    • New interactive toggle switches for quick route status updates.
    • Better modal interactions and layout optimizations.
  • Copy to Clipboard: Enhanced copy buttons for sample URLs with instant visual feedback ("Copied!" state).
  • Version Tracking: Real-time display of the app version in the admin footer.

🛠 Technical Improvements

  • Optimized Admin API: Switched to partial update (PATCH) behavior for more efficient route management.
  • Persistence & Performance: Ensured asynchronous JSON file persistence and improved overall system responsiveness.
  • Stricter Type Safety: Added explicit return types to handlers and middleware, improving codebase maintainability.
  • Updated Syntax: Migrated JSON module imports to the modern with syntax.
  • Quality Control: Enforced zero-warning linting standards across the project.

🐛 Bug Fixes & UX Polishing

  • Resolved unexpected modal closures when selecting text or links.
  • Improved overlay click behaviors for a more intuitive user experience.

v1.1.0

Choose a tag to compare

@dima6312 dima6312 released this 02 Jan 21:35
af7625f

What's New

Features

  • Import/Export: Backup and restore routes via JSON files from the admin UI
  • Bulk KV Operations: Faster imports with parallel KV writes

Security

  • Block dangerous URL schemes (javascript:, data:, etc.) at redirect time
  • CRLF injection prevention via URL sanitization
  • Route ID collision detection to prevent silent overwrites
  • Settings backup/restore during import rollback

Improvements

  • Non-blocking toast notifications (replaces disruptive alerts)
  • Proper TOML parsing for wrangler config
  • File extension blocklist to improve domain detection heuristic
  • Shared validation module for maintainability

v1.0.0 - Initial Release

Choose a tag to compare

@dima6312 dima6312 released this 02 Jan 16:52

Gr8hopper v1.0.0

Lightweight URL redirect service with admin UI.

Features

  • 🔗 Template-based URL redirects with {placeholder} support
  • 🎛️ Admin UI for managing routes and settings
  • ⚡ Aggressive 301 caching for minimal compute costs
  • 🌐 Dual platform: Cloudflare Workers + Node.js/Bun
  • 🔒 Required credentials (no insecure defaults)
  • 🧹 Cache purge support (Cloudflare)

Deployment Options

  • Cloudflare Workers - Global edge network, KV storage
  • Node.js/Bun - VPS/self-hosted, JSON file storage
  • Docker - Container deployment with examples

Getting Started

See README for installation and usage.