Skip to content

Latest commit

 

History

History
108 lines (89 loc) · 3.5 KB

File metadata and controls

108 lines (89 loc) · 3.5 KB

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.

Added

  • Reusable library mode via package koryxserv
  • NewHandler(config, logger) API to mount static serving in another Go http server
  • Server.Handler() API to expose the configured handler chain without starting a dedicated listener

Changed

  • Project layout now separates CLI and library:
    • CLI entrypoint moved to cmd/koryx-serv/main.go
    • Core implementation stays at module root as reusable package
  • Build and runtime tooling updated to point to ./cmd/koryx-serv (Makefile, Dockerfile)
  • Tests reorganized to keep CLI tests under cmd/koryx-serv and library tests at module root
  • Documentation updated (README.md, README.pt-BR.md, CONTEXT.md) with new layout and library usage examples

Planned

  • HTTP/2 support
  • Brotli compression
  • WebDAV support
  • Let's Encrypt integration
  • Prometheus metrics
  • Graceful configuration reload

1.0.0 - 2026-02-26

Added

  • Initial release
  • Static file serving
  • HTTP and HTTPS support
  • Basic authentication
  • CORS support with configurable origins
  • Rate limiting per IP address
  • IP whitelist and blacklist
  • Path traversal protection
  • Hidden file blocking
  • Gzip compression with configurable levels (1-9)
  • ETag support for efficient caching
  • Cache-Control headers
  • Custom HTTP headers
  • Directory listing with beautiful HTML template
  • SPA (Single Page Application) mode
  • Custom index files
  • Custom error pages
  • Colored console logging
  • Multiple log levels (debug, info, warn, error)
  • Access and error logs
  • File logging support
  • JSON configuration file support
  • Command-line flag support
  • Configuration validation
  • Graceful shutdown handling
  • Security headers (X-Content-Type-Options, X-Frame-Options, X-XSS-Protection)
  • Cross-platform compilation support
  • GitHub Actions workflow for automated releases
  • Comprehensive documentation (README in English and Portuguese)
  • Developer documentation (CONTEXT.md)
  • Example configuration file
  • Makefile for easy building
  • MIT License

Security

  • Constant-time comparison for authentication (prevents timing attacks)
  • Path traversal protection with filepath.Clean
  • Hidden file blocking for sensitive files (.env, .git, etc.)
  • Rate limiting to prevent DDoS attacks
  • IP filtering for access control
  • Security headers by default
  • HTTPS/TLS support

Performance

  • Gzip compression reduces bandwidth usage
  • ETags reduce unnecessary file transfers
  • Configurable cache headers
  • Efficient streaming file serving (doesn't load files into memory)
  • Token bucket rate limiting algorithm
  • Automatic cleanup of rate limiter entries

Release Notes

v1.0.0 - Initial Production Release

This is the first production-ready release of Serve, a static file server written in Go.

Highlights:

  • Complete security features for production use
  • High performance with compression and caching
  • Flexible configuration via JSON or command-line
  • Beautiful logging with colors
  • Cross-platform support (Linux, Windows, macOS, ARM)
  • Single binary with no dependencies

Download: See Releases

Documentation: See README.md