Repository navigation
Releases
v1.3.0: Advanced Route Matching, Passthrough & Vitest Migration
🚀 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
/healthendpoint 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
isPatternlogic 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
wranglerto 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
🎉 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 gr8hopperDocker:
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
🚀 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 gr8hopperornpm 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
.envfiles andEnvironmentFilepatterns.
🛠️ Developer Experience (DX)
- Husky Refinement: Properly chained
lint-stagedandtsc. - 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
🚀 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
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
withsyntax. - 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
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
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.