Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,20 @@ All notable changes to BlazeServe 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).

## [0.4.0] - 2026-09-11

### Added
- **Machine-Readable CLI Outputs**: Added opt-in `--json` mode to `blaze doctor` (reporting structured path, port, and optimization checks) and single-run `blaze benchmark` (reporting normalized base URL, byte counts, elapsed seconds, and throughput in MiB/s) while preserving default Rich terminal formatting.
- **Local Contributor Smoke Flow**: Added `scripts/contributor_smoke.py` as an activation-free local smoke command verifying authenticated static GET, byte-range slicing, file upload and readback, and liveness/readiness probes with clean lifecycle teardown.
- **Live IPv6 Loopback Coverage**: Added capability-aware live IPv6 integration testing on `[::1]:0` and socket-family preservation across dual-stack resolution.
- **Offline Deployment Configuration Validation**: Added a dedicated, read-only CI job and contributor reproduction workflow verifying Docker Compose, Kubernetes manifests, reverse-proxy configs, Linux kernel tuning syntax, Prometheus alerting rules, and systemd service unit integrity.
- **Compatibility and Deprecation Policy**: Published a normative compatibility policy (`COMPATIBILITY.md`) defining public surfaces, support evidence matrix, deprecation stages, and exception standards.
- **Extended Protocol Integration Tests**: Added deterministic tests covering Cross-Origin Resource Sharing (CORS) header sets and representation-aware `Vary` dimensions across uncompressed, gzip precompressed, and range requests.

### Security
- **Path Traversal Barrier Enforcement**: Strengthened path canonicalization and barrier guards across upload and ZIP endpoints, ensuring resolved targets strictly remain within the configured root.
- **HTTP Response Splitting Sanitization**: Sanitized dynamic attachment filenames in the `Content-Disposition` header to prevent CRLF injection and response splitting.

## [0.3.1] - 2026-09-05

### Added
Expand Down
2 changes: 1 addition & 1 deletion blazeserve/__init__.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
__all__ = ["__version__"]
__version__ = "0.3.1"
__version__ = "0.4.0"
2 changes: 1 addition & 1 deletion blazeserve/ui.py
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ def render_directory_index(
<div class="container">
<header>
<h1>⚡ {title}</h1>
<span>BlazeServe 0.3.1</span>
<span>BlazeServe 0.4.0</span>
</header>
{upload_ui}
<input type="text" id="search" class="search-box" placeholder="Filter files in directory..." autofocus>
Expand Down
2 changes: 1 addition & 1 deletion deploy/k8s/deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ spec:
type: RuntimeDefault
containers:
- name: blazeserve
image: ghcr.io/whoisjayd/blazeserve:v0.3.1
image: ghcr.io/whoisjayd/blazeserve:v0.4.0
imagePullPolicy: IfNotPresent
args: ["serve", "/data", "--host", "0.0.0.0", "--port", "8000", "--log-json"]
ports:
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "blazeserve"
version = "0.3.1"
version = "0.4.0"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nitpick: The 0.4.0 release is not listed as supported in SECURITY.md; its supported-version table still marks only 0.3.x, so users of the current release are incorrectly told that their version is unsupported.

Triggers: When users consult the security policy after upgrading to 0.4.0.

Suggested fix: Update SECURITY.md to include 0.4.x as the supported release range and adjust the older-version entry accordingly.

description = "⚡ Ultra-fast HTTP file server with advanced performance optimizations, real-time metrics, and production-ready architecture — supports byte-range/multi-range downloads, TLS, Basic Auth, throttling, uploads, streaming ZIP, CORS, and a polished CLI."
readme = { file = "README.md", content-type = "text/markdown" }
requires-python = ">=3.10"
Expand Down
2 changes: 1 addition & 1 deletion tests/integration/test_operational_endpoints.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ def test_version_endpoint(server: tuple[str, int]):
assert resp.status == 200
data = json.loads(resp.read())
assert data["name"] == "blazeserve"
assert data["version"] == "0.3.1"
assert data["version"] == "0.4.0"
assert "python" in data
assert "platform" in data
finally:
Expand Down
4 changes: 2 additions & 2 deletions tests/unit/test_version.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,5 @@

@pytest.mark.unit
def test_version_string():
assert __version__ == "0.3.1"
assert blazeserve.__version__ == "0.3.1"
assert __version__ == "0.4.0"
assert blazeserve.__version__ == "0.4.0"
2 changes: 1 addition & 1 deletion uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading