Releases: Drew-Chase/minipx
Release list
Release 1.0.1
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[1.0.1] - 2025-09-17
Changed
- Bumped project version to
1.0.1in preparation for release.
Fixed
- Gracefully handle corrupted configuration files by backing them up and falling back to default configuration.
Release 1.0.0
Minipx v1.0.0
Release Title: v1.0.0 - Major Subroute Feature Release
Tag: v1.0.0
Release Notes:
Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
[1.0.0] - 2025-09-14
Added
- Major Feature: Subroute Support - Path-based routing within domains
- New
addsubCLI command for adding subroutes to existing routes - Support for
subroutesarray in configuration files - Path-based overrides that route specific URL prefixes to different backend ports
- Automatic path stripping when proxying to backend services
- WebSocket support for subroutes with dynamic path and port handling
- New
- Enhanced CLI with
addsubcommand for managing subroutes - Comprehensive subroute documentation with examples and constraints
- Improved logging for subroute rewrites and WebSocket upgrade detection
Enhanced
- WebSocket Handling - Improved WebSocket support with dynamic upstream path and port adjustment
- Request Handler - Refactored to support subroute path matching and URI rewriting
- Documentation - Expanded README with detailed subroute examples, constraints, and usage patterns
- Code Quality - Addressed Clippy lint issues and improved code readability
Removed
- Code Cleanup - Removed unused modules and dead code from:
command_line_arguments.rsconfig.rsreverse_proxy.rs
- Deleted outdated structs, commands, and helper functions
- Cleaned up legacy features and redundant imports
Changed
- Configuration Documentation - Enhanced clarity and consistency in route and config documentation
- Standardized terminology, replacing
protocolwithssl_enable - Improved descriptions and formatting for route command flags and global settings
- Development configuration updates for improved development workflow
Technical Details
-
Subroute Constraints:
- Ports 80 and 443 are reserved and cannot be used for subroutes
- Subroute ports must differ from parent route ports
- Duplicate subroute paths are rejected
- Paths are normalized (trailing slashes trimmed)
-
Path Matching Behavior:
- Prefix matching with first-match-wins for multiple subroutes
- Matched prefix is stripped before proxying to backend
- Query strings are preserved during path rewriting
- Fallback to parent route when no subroute matches
What's New in v1.0.0:
This major release introduces subroutes - a powerful feature that allows you to route different URL paths within the same domain to different backend services. Perfect for microservice architectures where you want example.com/api to go to one service and example.com/admin to go to another.
Key highlights:
- 🎯 Path-based routing within domains
- 🔄 Automatic path rewriting for clean backend URLs
- 🌐 WebSocket support for subroutes
- 🧹 Major code cleanup removing unused functionality
- 📚 Comprehensive documentation with examples
Breaking Changes: None - this release is backward compatible with existing configurations.
This release represents a significant milestone for Minipx, adding advanced routing capabilities while maintaining simplicity and performance. The subroute feature makes it much easier to manage complex application architectures with a single proxy instance.
Release 0.2.2
minipx 0.2.2
A polish-and-UX release focused on clearer CLI output, simpler error handling, and small internal cleanups.
Highlights
- Color-coded, clearer CLI route display for easier scanning
- Simpler error handling paths and tidier formatting across the codebase
- Configuration serialization made more consistent
- Minor dead-code and import cleanups
What’s Changed
Features & Behavior
- CLI: Enhanced route display formatting with color-coded output for improved readability
Refactors
- Simplified error handling in several paths and improved general formatting
- Updated configuration serialization for consistency
- Codebase cleanup: improved comments, fixed lint issues, and removed unused code
- Removed unused
get_full_urlmethod from the configuration code - Removed an unused
Displaytrait import in CLI argument handling
Tooling & Ops
- Added IntelliJ run configurations for common Cargo commands
Versioning
- Bumped crate version to 0.2.2
Upgrade Notes
- No breaking configuration changes. This is a safe, drop-in patch upgrade.
- If you depend on minipx as a library and were using the previously unused
get_full_urlhelper, note that it has been removed.
Screenshot
Contributors
- Changes by: Drew Chase
As always, please report any issues or feedback to help improve minipx.
Release 0.2.1
Release notes: minipx 0.2.1
A feature-packed update focused on broader protocol support, HTTPS/TLS improvements, and configuration ergonomics.
Highlights
- New protocol support: TCP/UDP forwarding and WebSocket proxying
- TLS support via hyper-tls
- Per-route custom listener ports with
listen_port - Config and HTTPS server refactors for robustness and clarity
Added
- TCP/UDP forwarding and WebSocket proxy support in the reverse proxy
- Per-route custom listener ports via
listen_port - TLS support by introducing the
hyper-tlsdependency
Changed
- Refactored HTTPS server to improve connection handling and parameter usage
- Refactored
Config:- Added getters for previously private fields
- Improved path resolution behavior
Removed
- Unused
get_full_urlmethod fromConfig
Dependency and version updates
- Bumped
minipxto0.2.1 - Introduced
hyper-tls = 0.5.0 - Prior maintenance bump to
0.1.1
Compatibility notes
- Config path resolution changes may slightly alter how relative paths are interpreted; review deployments that rely on implicit path resolution.
- The introduction of
listen_portis additive and opt-in; existing routes continue to work without change.
Thanks
- All changes authored by Drew Chase
As always, please report any issues or feedback to help improve minipx.
Release 0.1.1
minipx 0.1.1
A quality-and-ergonomics release with better config handling, clearer logging, and a few usability refinements.
Highlights
- More flexible configuration deserialization and consistent path formatting
- Clearer, more structured logging across SSL supervisor and proxy paths
- IPC endpoint renamed for clarity
- CLI argument handling streamlined and delegated for maintainability
- Installer now starts the service with an explicit config_path
- README updates, including a video tutorial
What’s Changed
Features & Behavior
- Improved deserialization flexibility and enforced consistent path formatting across the app
- IPC: Renamed the local socket to a clearer, versioned name for discoverability
Refactors
- Reverse proxy logic refactored for readability and consistency
- SSL server supervisor refactored for improved readability and logging consistency
- CLI: Argument handling now delegated to MinipxArguments::handle_arguments for cleaner command flow
Tooling & Ops
- install.sh updated to include config_path in the service start command for deterministic startup behavior
Documentation
- README updated with new features, CLI commands, and IPC details
- Added a tutorial section linking to a YouTube video
Versioning
- Bumped crate version to 0.1.1
Upgrade Notes
- If you have external tooling that connects to the IPC socket, update it to the new socket name introduced in this release.
- After upgrading via the install script, the service will be started with an explicit config_path to ensure consistent configuration discovery.
Contributors
- Changes by: Drew Chase
As always, please report any issues or feedback to help improve minipx.
Release 0.1.0
minipx 0.1.0
This is the first stable 0.x release focusing on ergonomics, tooling integration, and simpler operations.
Highlights
- IPC support to dynamically discover the active configuration path from a running instance
- Optional config_path with smart resolution (auto-detect via IPC when available)
- New CLI subcommands for route and configuration management
- Simplified reverse proxy server logic and streamlined configuration structure
- Improved installation behavior: service now restarts on upgrades
What’s Changed
Features
- IPC: Added local IPC channel enabling tools and CLI to fetch the current config path from a running minipx instance
- Optional config_path: You can now run without explicitly passing a config path; minipx detects it automatically when possible
- New subcommands:
- show-path: Displays the resolved configuration path (uses IPC when available)
- Route/Config management commands: Manage routes and configuration directly from the CLI
Improvements
- Simplified reverse proxy server logic and configuration structure for maintainability and clarity
- Expose Config::path for better programmatic access and tooling
- install.sh now restarts the minipx systemd service on update for a cleaner upgrade experience
Versioning
- Bumped crate version to 0.1.0
CLI Notes
- You can now introspect the active configuration path via:
- minipx show-path
- Route and configuration management commands are available to add, update, or inspect routes without manually editing the file
Upgrade Notes
- If previously relying on a mandatory --config flag, it’s now optional. minipx will:
- Use IPC to discover the active config path when a daemon is running
- Fall back to default resolution when no instance is active
- After upgrading via the install script, the service will be restarted automatically. If needed:
- sudo systemctl daemon-reload
- sudo systemctl restart minipx
Contributors
- Changes by: Drew Chase (Home)
If you encounter issues or have feedback on the new IPC and CLI workflows, please open an issue.
Alpha 0.0.2
minipx 0.0.2-alpha (pre-release)
This pre-release focuses on stability, smarter redirect behavior, and a smoother developer/ops experience.
Highlights:
- Fixes an infinite loop in the file watcher
- Smarter HTTP→HTTPS redirects when TLS is available
- Improved config change handling and dev run configurations
- Installer script improvements and clearer Linux install/uninstall docs
What’s Changed
Added
- Ensure HTTP requests are redirected to HTTPS when appropriate (only when TLS is available for the host)
Fixed
- Resolved an infinite loop issue in the configuration file watcher
Improved
- More robust config change handling with additional event checks to reduce false restarts
- Run configuration updated to use the
devbuild profile for a better development experience
Dev/Tooling
- Added IntelliJ run configurations for development and help commands
- Removed unused methods from
ConfigandProxyRouteto keep the codebase clean
Installer and Ops
- install.sh now:
- Uses GitHub’s API for release retrieval
- Passes
-vwflags toExecStartin the systemd unit for clearer logging and watch support
- README updated with Linux installation and uninstallation instructions
Versioning
- Bumped crate version to
0.0.2-alpha
Installation/Upgrade Notes
- Linux users can install or upgrade via the script:
- Install:
sudo bash -c "$(curl -sSL https://raw.githubusercontent.com/Drew-Chase/minipx/master/install.sh)" < /dev/tty - Uninstall:
sudo curl -sSL https://raw.githubusercontent.com/Drew-Chase/minipx/master/install.sh | bash -s -- --uninstall
- Install:
- If you’re using systemd and previously installed minipx, you may need to:
sudo systemctl daemon-reloadsudo systemctl restart minipx
Acknowledgements
- Changes by: Drew Chase (Home, Work)
Note: This is an alpha pre-release intended for testing and feedback. Please report issues and suggestions—thank you!
Alpha 0.0.1
minipx v0.0.1-alpha
Pre-release Alpha - Initial development version
🎉 What's New
This is the first alpha release of minipx, a high-performance reverse proxy written in Rust with automatic Let's Encrypt SSL certificate management.
✨ Key Features
- 🚀 High-Performance Reverse Proxy: Built with Rust, Tokio, and Hyper for excellent performance and memory safety
- 🔒 Automatic SSL/TLS: Integrated Let's Encrypt support with automatic certificate provisioning and renewal via ACME (TLS-ALPN-01)
- 🌐 Multi-Domain Support: Serve multiple domains with individual SSL certificates
- 🔁 Smart HTTP→HTTPS Redirects: Per-route redirects that only activate when TLS is actually available for the host
- 📝 JSON Configuration: Simple, readable configuration with hot-reload support
- 🧩 Configuration Hot-Reload: Live configuration updates with graceful server restarts when needed
- 🔧 Flexible Routing: Support for wildcard host matching and custom backend protocols
- 📊 Comprehensive Logging: Configurable logging levels with structured output
🛠️ Technical Highlights
- Dynamic Port Binding: Automatic rebinding when configuration changes
- Graceful Shutdown: Proper cleanup and connection handling
- Configuration Watching: Optional file system monitoring for config changes
- Error Resilience: Robust error handling and recovery mechanisms
- Rust 2024 Edition: Built with the latest Rust features and best practices
📋 Configuration
Simple JSON-based configuration supporting:
- Global SSL toggle
- Per-route HTTPS redirects
- Custom backend protocols (HTTP/HTTPS)
- Flexible path routing
- Let's Encrypt email configuration
- Certificate caching
🚀 Quick Start
bash
# Download and run with default config
./minipx
# Run with custom config and hot-reload
./minipx --watch --verbose --config ./config.json
⚠️ Alpha Release Notes
This is a pre-release alpha version intended for:
- Early testing and feedback
- Development environments
- Feature evaluation
Not recommended for production use until stable release.
🔧 Requirements
- Port 80 access for HTTP traffic
- Port 443 access for HTTPS traffic and ACME validation
- Valid email address for Let's Encrypt registration
- Domain(s) that resolve to the server
📦 Dependencies
- Rust 1.86.0+
- tokio (async runtime)
- hyper (HTTP implementation)
- rustls-acme (Let's Encrypt integration)
- serde (JSON configuration)
- clap (CLI interface)