Skip to content

Releases: Drew-Chase/minipx

Release 1.0.1

Choose a tag to compare

@Drew-Chase Drew-Chase released this 17 Sep 13:57

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.1 in preparation for release.

Fixed

  • Gracefully handle corrupted configuration files by backing them up and falling back to default configuration.

Release 1.0.0

Choose a tag to compare

@Drew-Chase Drew-Chase released this 15 Sep 00:56

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 addsub CLI command for adding subroutes to existing routes
    • Support for subroutes array 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
  • Enhanced CLI with addsub command 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.rs
    • config.rs
    • reverse_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 protocol with ssl_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

Choose a tag to compare

@Drew-Chase Drew-Chase released this 28 Aug 20:45

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_url method from the configuration code
  • Removed an unused Display trait 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_url helper, note that it has been removed.

Screenshot

image

Contributors

  • Changes by: Drew Chase

As always, please report any issues or feedback to help improve minipx.

Release 0.2.1

Choose a tag to compare

@Drew-Chase Drew-Chase released this 28 Aug 20:03

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-tls dependency

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_url method from Config

Dependency and version updates

  • Bumped minipx to 0.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_port is 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

Choose a tag to compare

@Drew-Chase Drew-Chase released this 16 Aug 19:30

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

Choose a tag to compare

@Drew-Chase Drew-Chase released this 16 Aug 03:36

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

Alpha 0.0.2 Pre-release
Pre-release

Choose a tag to compare

@Drew-Chase Drew-Chase released this 15 Aug 22:27

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 dev build profile for a better development experience

Dev/Tooling

  • Added IntelliJ run configurations for development and help commands
  • Removed unused methods from Config and ProxyRoute to keep the codebase clean

Installer and Ops

  • install.sh now:
    • Uses GitHub’s API for release retrieval
    • Passes -vw flags to ExecStart in 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
  • If you’re using systemd and previously installed minipx, you may need to:
    • sudo systemctl daemon-reload
    • sudo 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

Alpha 0.0.1 Pre-release
Pre-release

Choose a tag to compare

@Drew-Chase Drew-Chase released this 14 Aug 18:43

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)