All checks were successful
Build & Publish / build_publish (push) Successful in 3m14s
115 lines
3.9 KiB
Markdown
115 lines
3.9 KiB
Markdown
# 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.1.0/),
|
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
|
## [1.1.0] - 2026-01-25
|
|
|
|
### Added
|
|
|
|
- Shared HTML footer template injected into all pages.
|
|
- Structured log file handler with rotation, append-only writes, and stats parsing support.
|
|
- Upload size guard using `MAX_ASSET_SIZE_BYTES`.
|
|
- Unit tests for core storage and rate limiting behavior.
|
|
|
|
### Changed
|
|
|
|
- Asset storage cleanup and capacity checks are now race-safe.
|
|
- Stats aggregation now reads from the structured log file helper.
|
|
|
|
## [1.0.1] - 2026-01-16
|
|
|
|
### Fixed
|
|
|
|
- Asset addition logging now displays immediately instead of being buffered (changed `print!` to `println!`).
|
|
- Upload functionality blocked after first successful upload - users can now only upload once per page session.
|
|
- Paste, drag & drop, and file selection disabled after successful upload to prevent confusion.
|
|
- JavaScript syntax errors in event listener registration that prevented copy/paste functionality.
|
|
- Removed nested and duplicated event listeners that caused unexpected behavior.
|
|
|
|
### Changed
|
|
|
|
- Added `uploadCompleted` flag to track upload state and prevent multiple uploads per session.
|
|
- Reset button now properly clears the `uploadCompleted` flag to allow new uploads.
|
|
|
|
## [1.0.0] - 2026-01-14
|
|
|
|
### Added
|
|
|
|
- UI error banner for failed uploads, including retry timing.
|
|
- `retry_after_seconds` in the upload error response to inform clients when to retry.
|
|
- Server-side duration clamping for uploads (1-60 minutes).
|
|
|
|
### Changed
|
|
|
|
- Upload throttling now tracks active assets per user using asset expiration times.
|
|
- Upload error responses are consistently JSON.
|
|
|
|
### Removed
|
|
|
|
- `Retry-After` response header on upload limit errors.
|
|
|
|
## [0.3.0] - 2026-01-13
|
|
|
|
### Added
|
|
|
|
- Favicon set and web manifest for site branding.
|
|
- Syntax-highlighted rendering for code-like text content in the viewer.
|
|
- Startup log rotation that archives the previous log with a timestamp.
|
|
|
|
### Changed
|
|
|
|
- Access logs now write to `data/logs/log.txt` instead of `access.log`.
|
|
|
|
## [0.2.0] - 2026-01-11
|
|
|
|
### Added
|
|
|
|
- Default implementation for the asset model to simplify log parsing fallbacks.
|
|
- Basic UI polish for the stats page (background glow and hover highlight on recent activity).
|
|
|
|
### Changed
|
|
|
|
- Asset logging now records serialized values without cloning asset content.
|
|
- Release workflow uses tag-based versioning and caches Rust/toolchain artifacts.
|
|
|
|
## [0.1.1] - 2026-01-09
|
|
|
|
|
|
|
|
## [0.1.0] - 2026-01-09
|
|
|
|
### Added
|
|
|
|
- **Statistics Dashboard** (`/stats.html`) with real-time metrics:
|
|
- Active assets count
|
|
- Total uploads and deletions
|
|
- Storage usage
|
|
- Image vs text breakdown
|
|
- Average server response time
|
|
- Total request count
|
|
- Recent activity feed (last 20 events)
|
|
- Auto-refresh every 30 seconds
|
|
- **Statistics API** (`GET /api/stats`) returning JSON metrics
|
|
- **Enhanced logging** for asset events:
|
|
- Upload events with uploader IP, MIME type, size, duration, timestamps
|
|
- Delete events with full asset metadata
|
|
- Request timing (`dur_ms`) in access logs
|
|
- **Uploader IP tracking** stored with each asset for audit purposes
|
|
- Stats link in index page footer
|
|
- Ephemeral image and text sharing with configurable TTL (1-60 minutes)
|
|
- Drag/drop, paste, and file picker upload support
|
|
- Base64 encoding for images, raw text for plain text
|
|
- UUID-based asset storage as JSON files
|
|
- Background cleanup task (every 60 seconds)
|
|
- Dark theme UI with zoom overlay
|
|
- View page for shared content
|
|
- Access logging with timing, IPs, and user agent
|
|
- Docker and docker-compose support with Traefik labels
|
|
- Environment variables for bind address and port
|
|
- Access logging with timing, IPs, and user agent
|
|
- Docker and docker-compose support with Traefik labels
|
|
- Environment variables for bind address and port
|