This commit is contained in:
Mateusz Gruszczyński committed 2026-10-13 21:29:57 +02:00
1 parent bb025dcf44
commit b0f211555a
74 files changed
+6089 -556

No files matched your search

+35 -5
View File
@@ -3,6 +3,40 @@
> Operator-facing release history. Historical engineering notes are kept in
> [`docs/CHANGELOG_TECHNICAL_ARCHIVE.md`](docs/CHANGELOG_TECHNICAL_ARCHIVE.md).
## 0.32.3
- Fix unequal heights and ragged Overview rows after customization. Replace absolute-positioned masonry/snapped bands with the original CSS Grid geometry for every layout, grouping numeric tiles, normal charts, large charts, extended diagnostics and the backend table into uniform rows. Each row has equal-height blocks and the same density-aware gutters; order can be customized within a size group without mixing short cards with tall panels. Preserve all 62 widgets, existing persisted settings, Hide/Restore, Default/Reset, theme and version **0.32.3**.
- Snap customized Overview tiles to shared pixel-aligned rows and **balanced horizontal bands**. Short cards can stack alongside tall diagnostics and, when their combined height is close enough, share the same bottom baseline with consistent density-sensitive gutters. Keep the factory six/three symmetrical rows, prevent stretching a single short tile to a tall panel, preserve drag/save/reset settings and all 62 widgets; version stays 0.32.3.
- Keep the RustProxy **logo shape fixed** across all Corner rounding presets. The unlocked Dashboard’s × Hide button inherits the same rounding as the adjacent arrow controls (including Square mode).
- Preserve the **original symmetric Overview by default** (six metric cards / three large panels, density-aware gutters), while packing **only user-reordered layouts** on wider canvases: shorter graphs keep their natural height and can stack next to tall diagnostics. At narrow widths, retain the original row layout. Measure grid spans in CSS layout pixels so UI zoom 90–130% cannot cause collisions; no preference schema or version changes.
- Restore a clean **Settings → Appearance** Overview selector: no block-type badges among the visibility/reorder controls. The modal visual editor and the unlocked Dashboard retain their type labels. Move/Hide/Show controls stay right-aligned.
- Open **Appearance** on a first visit to Settings, reopen the last selected Settings tab on later visits (remembered locally), and always honor explicit `/settings?tab=...`, `/configuration` and `/logging` navigation.
- Add an account-scoped **Corner rounding** selector with Original, Square, Subtle, Rounded and Extra rounded options. Original retains the established corners in all four themes; other presets apply to cards, fields, dialogs, buttons and panels consistently, including login. Preserve older preference documents with the default preset and reject unknown values.
- Restore the RustProxy logo's original coral/soft-green mark accents in Ultra Dark without changing the near-black surfaces or global chart/button palette. Preserve version 0.32.3 and existing dashboard layouts.
- Restore the original strictly aligned **default** Overview row layout in response to uneven masonry spacing: six equal numeric cards and three equal diagnostic panels per desktop row, with consistent original `--ui-gap` gutters. Customized orders can now opt into independently sized stacking without changing the default geometry. All 62 blocks retain drag-to-order, hide/restore, reset and saved preferences; version stays 0.32.3.
- Add six opt-in compact charts (HTTP requests/s, active exchanges, H1/H3 shares, cache MISS/s and in-flight backend requests) and seven opt-in full-size multi-series charts (HTTP protocol rates, system/process CPU, process/cache memory, cache HIT/MISS, connections/WebSockets, backend availability and response/probe latency). All read existing status snapshots with bounded browser histories; unknown counters remain unavailable and resets do not create negative rates. The shared registry/API now offers **62 blocks**, retaining the preceding 49 IDs and their saved settings.
- In the visual block selector and unlocked inline editor, place the block-type badge before the action buttons; keep Move/Hide/Show controls aligned to the right even when names vary in length. Keep the release version **0.32.3**.
- Add optional **Ultra dark** (AMOLED-style black) and **Warm cream** (subdued ivory) admin themes. Persist both via existing per-user Appearance preferences and preserve the original Dark/Light choices, login preview, and default `dark` value.
- Add **× Hide from Dashboard** to each block while editing the unlocked real Overview. Restore any numeric card, chart, panel or backend table from the collapsible **Hidden blocks** list; Cancel discards the draft, Save persists visibility and order with one preference update. No registry records or backend metrics are deleted.
- Add an **Unlock layout** button on the real Overview canvas. Only the drag handles start movement; keyboard-friendly arrow buttons also reorder number tiles, charts and whole panels. Changes are previewed locally, committed in one existing preferences PUT by **Save and lock**, or discarded by **Cancel** or navigation. The original live widget DOM and callbacks are preserved.
- Classify all 49 blocks in the shared registry as numeric, numeric+chart, chart, diagnostic panel or table. Show localized block-type labels in the visual editor while keeping Appearance compact, with a filter for hidden widgets. Retain default visibility, account preferences, all existing metrics and version 0.32.3.
- Extend the visual Overview editor to all dashboard content, including existing live charts, three diagnostic panels and the backend table. Restore the original ordering by default; allow any registered block to be moved or hidden without losing its live DOM handlers.
- Add twelve opt-in, bounded-history metric charts based on existing process, cache, frontend, TLS, HTTP/2 and backend-health counters; unknown data stays neutral. All 49 cards/panels share one registry, the previous settings arrays and the same account-scoped endpoint.
- Add **Default view** draft preview and a confirmed **Reset layout** action; both preserve non-dashboard preferences. Keep the 0.32.3 version and upstream protocol configuration unchanged.
- Restore `http2` backward compatibility: HTTPS offers H2/H1 via ALPN as it did in 0.32.2, while cleartext uses H2C prior knowledge. The new `h2` value is strict on HTTPS, with no H1 downgrade. `http1` and `auto` retain their prior semantics; no request replay or extra retry loop.
- Extend the Origin selector to four clearly described choices (H1, Auto, HTTP/2 compatible, H2 only), keeping existing saved JSON untouched. Preserve separate WebSocket HTTP/1.1 Upgrade and H2 Extended CONNECT paths.
- Share a validated Overview Cards registry between Rust and JavaScript. Retain the original 16 widgets and saved order/hidden choices. Unknown identifiers do not invalidate a whole saved profile. No SQLite migration.
- Expand to fourteen opt-in HTTP origin cards: keep health, activity, errors/s, probe RTT, traffic, configured modes, requests/s and capacity, and add 5xx, timeouts, DNS/TCP/TLS/I/O errors, retries, queue pressure and client-pool rotations. No extra probes/polls; all new widgets default hidden. Protocol counts describe configuration rather than actual ALPN results.
- Synchronize the authenticated Dashboard OpenAPI preference enums, maximum array sizes and visibility defaults with all 30 registry entries.
- Add a visual Overview layout dialog with draggable metric previews, keyboard reorder and hide/show list; settings remain account scoped and Save uses one existing preferences PUT. Cancel makes no changes.
- Document that HTTPS ALPN runs once per new TLS connection; Hyper pools and reuses negotiated connections. Keep configured per-backend recycling rather than adding unsafe protocol locks, timers or probing traffic.
- Add real-peer Rust tests for compatible HTTPS H1/H2 negotiation, strict H2, H2C, request-version safety and WebSocket isolation, plus UI/source preference regression checks. Cargo/runtime acceptance and benchmarks remain pending.
## 0.32.2
- Fix Web Server shared-cache revalidation: browser `no-cache`, `max-age=0` and freshness-constrained requests now supply stored origin validators. Honor local origin `304 Not Modified` by refreshing the same cached body and preserving/incrementing `X-Cache-Hits`, matching the existing Reverse Proxy behavior.
@@ -23,7 +57,6 @@
- Add optional TCP Connect and conservative UDP response-matched probes with configurable interval, timeout and rise/fall, globally bounded concurrency and cancellation. Never label an unverified UDP connect as Healthy.
- Add bounded per-backend observations to existing status/SSE and opt-in detailed Prometheus metrics; preserve global `include_streams`, stream-level basic counters and traffic direction meanings.
- Extend existing Appearance dashboard card visibility/order with four opt-in Stream cards. Reuse account preferences, existing status updates, translations, style/responsive layout and in-memory browser charts. Migrate older 12-widget layouts to hidden Stream cards.
- Update Streams editor, OpenAPI, Settings documentation and regression coverage. No new public routes, scheduler or database format. Backend changes remain restart-required. **Cargo and live TCP/UDP integration gate remain open** until verified.
### 0.32.0 Overview layout and Vhosts hint correction
@@ -54,7 +87,6 @@
## 0.31.8
- Consolidate 28 numbered Rust unit-test fragments into seven existing `tests.rs` suites (Admin, Balance, Config, Web Server and three Cache suites). Preserve the tests, remove obsolete fragment directories, and exempt Rust test sources (not production modules) from the 500-line check. Fix the test fixture's relative `login-keys.json` include path. No runtime functionality changes.
- Fix Docker VHosts startup status: a missing first observation is WAITING, not a connection failure. Read cached agent status when opening the page (including with Live view off) and briefly retry while the first background check is pending. Display an error only after a failed agent check; omit the configured certificate SHA-256 from generic failure details because it is not a diagnosed failure cause. A configured pin alone does not mark the agent connected. Keep agent polling, certificate validation, manual refresh and persisted settings unchanged.
- Add server-side Stored Logs sorting by visible columns, including numeric and discovered nested fields; preserve sorting over the complete bounded scan before pagination. Column and direction persist with account preferences, with no SQLite schema change.
- Add matching dark HTML built-in pages for HTTP 200, 400, 408, 410, 413, 500 and 502. Align the remaining generic HTML status template with the established RustProxy appearance. Preserve administrator-configured responses, status codes, protocol headers and bodyless responses.
@@ -74,7 +106,6 @@
- Add spacing between the HTTP/2 and HTTP/3 listener tuning links. Collapse ACL profile **Attached to** by default without hiding its contents or changing profile attachment rules.
- Correct `update.sh` retention cleanup (mtime-sort key was previously included in the removal path) and retain **two** installed releases, including the active release. Preserve **three** private stopped-service backups for rollback. Preserve Cargo fingerprints, compiled deps and executables; only expired incremental build state may be removed, after a successful update and only while Cargo's profile lock is available.
- Confirm managed-update marker is created before `systemctl stop` and read on shutdown, triggering best-effort HOT→COLD persistence even when `cold_on_shutdown=false` if cold storage is enabled. Add completion diagnostics counting successful persisted objects (including zero), not merely attempted writes; no claim of a successful runtime flush without testing.
- Retain SQLite schema 9, COLD format 3 and existing H3/mobile fixes. Compiler/live upgrade acceptance pending.
## 0.31.6
@@ -127,8 +158,7 @@
## 0.31.0
- Harden BAN/PURGE with scheme/host/vhost isolation, unambiguous headers and bounded background cache-maintenance workers (shared with authenticated admin purge/invalidation); audit BAN-rule removals before mutation. Add a localized curl-examples tooltip to Settings → Cache. See the [0.31.0 API and panel security review](docs/SECURITY_AUDIT_0.31.0.md) for assessed controls and remaining runtime security gates.
- Harden BAN/PURGE with scheme/host/vhost isolation, unambiguous headers and bounded background cache-maintenance workers (shared with authenticated admin purge/invalidation); audit BAN-rule removals before mutation. Add a localized curl-examples tooltip to Settings → Cache.
- Add browser-negotiated Zstd/Brotli/gzip compression for panel HTML and static assets, configurable under Settings → Administration without an extra environment variable; cached representations and `Vary: Accept-Encoding` work with or without a reverse proxy (subject to forwarded headers).
- Add strictly opt-in, IP/CIDR-gated HTTP `PURGE` (exact URL) and `BAN` (lazy URL prefix) on public vhost listeners, using the existing invalidation engine, ACL/rate limits, audit and CIDR validation. Empty allowlist keeps the feature disabled; no DB or cache-format migration.
- Align the System information manual Refresh control directly next to the API badge.