|
1 | 1 | # Changelog |
2 | 2 |
|
3 | | -All notable changes to this project will be documented in this file. |
4 | | -The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). |
5 | | -This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 3 | +Alle nennenswerten Änderungen an diesem Projekt werden hier dokumentiert. |
| 4 | +Format orientiert sich an [Keep a Changelog](https://keepachangelog.com/de/), |
| 5 | +Versionierung nach [SemVer](https://semver.org/lang/de/). |
6 | 6 |
|
7 | | -## [Unreleased] |
| 7 | +## [0.1.0] — 2026-05-19 |
8 | 8 |
|
9 | | -## [1.0.0] — 2026-05-19 |
| 9 | +### Hinzugefügt |
| 10 | +- Initialer Public Release |
| 11 | +- Single-File-PHP-Gateway mit Pfad-Traversal-Schutz |
| 12 | +- Endungs-Whitelist |
| 13 | +- Optimistic Locking via `If-Match`-Header (SHA-256) |
| 14 | +- Single-File-Snapshots mit content-adressierter Deduplikation |
| 15 | +- Atomare Batch-Deploys |
| 16 | +- Rate-Limiting (global + per IP), file-basiert |
| 17 | +- Audit-Log (append-only) |
| 18 | +- Binary-Upload-Helfer für Dateien > 800 KB |
| 19 | +- Status-Block, What-works, Known-limitations in README |
10 | 20 |
|
11 | | -Initial public release. Extracted and anonymized from a production deployment that has been running on All-Inkl shared hosting since April 2026. |
| 21 | +### Im Einsatz seit |
| 22 | +- April 2026 unter netzhandwerker.de — rund 500 Deploys/Woche |
12 | 23 |
|
13 | | -### Added |
14 | | -- Single-file PHP gateway with `ping`, `read`, `write`, `write_b64`, `list`, `delete`, `snapshot`, `snapshots`, `rollback`, `deploy_batch` actions |
15 | | -- Path traversal protection (null byte, `..`, `.`, dangerous extension blocklist) |
16 | | -- Writable extension allowlist (configurable) |
17 | | -- Optimistic locking via `If-Match: <sha256>` header |
18 | | -- Single-file snapshots for individual writes (memory-efficient) |
19 | | -- Full-site snapshots for batch operations |
20 | | -- Content-addressed object store with automatic deduplication |
21 | | -- Garbage collection of unreferenced snapshot objects |
22 | | -- Rate limiting: 30 requests/minute global, 10/minute per IP (file-based, no Redis) |
23 | | -- Append-only audit log with key fingerprint + IP + path + byte count |
24 | | -- Python client class with conflict-aware `read → edit → write` pattern |
25 | | -- Bash deployment example with `--data-urlencode` |
26 | | -- GitHub Actions workflow for push-to-deploy |
27 | | -- Companion `bin-upload.php` helper for large binary uploads via `php://input` |
28 | | - |
29 | | -### Security |
30 | | -- Dangerous extensions (`.phar`, `.phtml`, `.php3-7`, `.pht`, `.inc`) explicitly blocked from writes |
31 | | -- API key never logged in plaintext; only first 8 chars of sha256 fingerprint appear in audit log |
32 | | -- IP addresses hashed before being used as rate-limit-bucket filenames |
33 | | - |
34 | | -### Known limitations |
35 | | -- Single API key per gateway instance (no multi-tenant support) |
36 | | -- No built-in 2FA / time-based key rotation |
37 | | -- Snapshots stored on the same disk as the deploy target (no off-host backup) |
38 | | -- HTTP only — relies on the host's TLS termination |
| 24 | +### Bekannte Grenzen |
| 25 | +- API-Key hat vollen Schreibzugriff (kein Multi-Tenant) |
| 26 | +- Audit-Log-Rotation manuell |
| 27 | +- Snapshots werden nicht automatisch extern gesichert |
0 commit comments