This commit is contained in:
Mateusz Gruszczyński committed 2026-10-15 23:29:15 +02:00
1 parent 162e986d37
commit f462ca7194
26 files changed
+980 -710

No files matched your search

+28 -14
View File
@@ -37,20 +37,36 @@ Open **Settings → Certificate API** (`/settings?tab=certificate-api`) to manag
The existing **Generate / rotate token** form still creates new Key IDs (and retains its previous ability to rotate a Key ID by supplying it). Use **Edit settings** to modify settings without rotating, and **Regenerate token** to rotate without changing any settings. See [API](API.md) and [access control](API_ACCESS.md).
## Dashboard presets (0.33.7)
**Dashboard presets** on Overview and under **Settings → Appearance → Dashboard layout**
opens the same account-scoped preset manager. Enter a name to save the current
Dashboard density, card order, visibility and custom widths. A saved preset can be
loaded later in one preferences update or deleted. Saving an existing name updates
that preset. Up to 20 presets are retained per administrator.
The preset manager no longer duplicates card editing. Use **Unlock layout** on
Overview for drag-and-drop, hide/show and width changes, or use the existing
visibility/order controls in Settings. Presets use the existing `/api/preferences`
document; they do not add a database migration, status polling or proxy-path work.
Overview chart titles use the same monospace font family as **CONNECTION ACTIVITY**.
This is typography-only and does not change chart scales, samples or telemetry.
## Compact Overview card controls (0.32.6 development branch)
**Settings → Appearance → Dashboard layout** now puts Dashboard density on a
compact row and gives the Overview card controls the full width of the section.
The card selector is a single horizontally scrollable strip by default, with
left/right browsing buttons and accessible keyboard focus. **Show all cards**
expands the same 62 visibility/reorder controls into a wrapped grid. Use the
existing visual layout editor for drag-and-drop arrangement. Reordering and
expands the same 62 visibility/reorder controls into a wrapped grid. Use
**Unlock layout** on Overview for drag-and-drop arrangement. Reordering and
visibility still save through `/api/preferences` per account; this UI-only
change does not alter server polling, proxy routing or backend metrics.
### Overview controls and density (0.32.7 development follow-up)
**Refresh now**, **Arrange Overview**, **Unlock layout**, **Visual Overview editor** and **Show all cards** inherit the same Normal/Compact button size rules as other buttons. Responsive placement still adapts to narrow screens, but no independent font-size, padding or height override applies. Dashboard density more clearly adjusts numeric tile sizing, inline chart height and the padding/title size of non-table Overview panels; the common tile gutters are unchanged. Button style and dashboard density remain independent per-account preferences.
**Refresh now**, **Dashboard presets**, **Unlock layout** and **Show all cards** inherit the same Normal/Compact button size rules as other buttons. Responsive placement still adapts to narrow screens, but no independent font-size, padding or height override applies. Dashboard density more clearly adjusts numeric tile sizing, inline chart height and the padding/title size of non-table Overview panels; the common tile gutters are unchanged. Button style and dashboard density remain independent per-account preferences.
### Overview header actions (0.32.8)
@@ -581,9 +597,9 @@ Under **Settings → Appearance → Dashboard layout**, the existing Show/Hide a
## Full Overview layout and additional metrics (0.32.3)
Open **Overview -> Arrange cards visually** (or **Settings -> Appearance -> Dashboard layout -> Visual layout editor**) to change **all 49** dashboard blocks: 30 previous tiles, 12 new optional charts, three large live charts, three diagnostic panels and the backend table. Drag tiles/sections, use arrow buttons for keyboard access, or hide and re-enable individual blocks. Large sections retain their own original charts, controls and live data after being moved. The responsive six-column desktop view scales to narrower widths. Visibility and order are account-scoped; they never alter backend behavior.
Use **Overview -> Unlock layout** to change the Dashboard blocks directly: drag cards/sections, use arrow buttons for keyboard access, resize supported cards, or hide and re-enable individual blocks. The same visibility/order controls remain available under **Settings -> Appearance -> Dashboard layout**. Large sections retain their original charts, controls and live data after being moved. The responsive desktop grid scales to narrower widths. Visibility, order and widths are account-scoped; they never alter backend behavior.
**Default view** loads the factory order and visibility into the editor **without saving**; **Save layout** applies it. **Reset layout** asks for confirmation, then persists the same default order and visibility in one preferences write. **Cancel** preserves the current layout. All 12 added charts are hidden until explicitly enabled and use a maximum of 30 status samples without additional HTTP polling. They cover process CPU/RSS/file descriptors, connections, WebSocket tunnels, TLS handshake failure and request-error rates, cache HIT share and HOT RAM usage, incoming HTTP/2 request share, mean response duration, and unhealthy backends. Unknown and first-delta measurements show `-`; response time is a mean, not a percentile, and HTTP/2 share is **frontend** traffic rather than negotiated upstream ALPN.
From 0.33.7, **Dashboard presets** replaces the older duplicated visual-editor modal. The modal saves or loads named snapshots of the current density, order, visibility and widths; it does not provide a second card-editing surface. All optional charts continue to use bounded histories without additional HTTP polling. Unknown and first-delta measurements show `-`; response time is a mean, not a percentile, and HTTP/2 share is **frontend** traffic rather than negotiated upstream ALPN.
## HTTP backend Overview cards (0.32.3)
@@ -620,15 +636,13 @@ and capacity rejections, and Hyper client-generation rotations and age. Rotation
are **not TLS handshake counts**. Rates are based on per-member positive counter
differences; newly added or reset members cannot create arbitrary spikes.
To arrange the actual Overview cards visually, click **Arrange cards visually**
on Overview or **Visual layout editor** in Settings -> Appearance -> Dashboard
layout. The modal displays copies of the existing telemetry cards; drag to
reorder, or use the move arrows for keyboard-only input. Hide/show tiles in
the modal and select **Save layout** once to persist order and visibility in
the existing `dashboard_widgets` and `dashboard_hidden_widgets` preferences.
Cancel/Escape discards the draft. The existing Appearance visibility and move
buttons remain available. No extra API endpoint, refresh loop, or database
migration is needed.
To arrange the actual Overview cards, click **Unlock layout** on Overview. Drag
the real cards or use the move/resize/hide controls, then save and lock the
layout. The existing Appearance visibility and move controls remain available.
Use **Dashboard presets** only to save, inspect and load named snapshots of the
current layout. Presets reuse `dashboard_widgets`, `dashboard_hidden_widgets`,
`dashboard_widget_sizes` and Dashboard density in the existing preferences
document. No extra status refresh loop or database migration is needed.
TLS ALPN selects H2 or H1 only when opening a **new TLS connection**, not for
each request. Hyper already pools reusable connections per compiled backend;
+51 -34
View File
@@ -1,44 +1,61 @@
# RustProxy 0.33.6 - verification report
# RustProxy 0.33.7 - verification report
## Scope (2026-10-15)
Additional 0.33.6 chart/UI changes:
- All 14 full-width Overview and Web Server plots retain a fixed 125px SVG
height, regardless of viewport width and dashboard density.
- Grid lines are mapped to the actual plotting range rather than approximate
horizontal positions.
- Transform and Compression activity (plus other unbounded unit series) use
sane zero-based minimum ranges and monotonic, rounded range expansion, so
low values do not look like maximum utilization and spikes remain visible.
- Full Cache and Transform live charts keep an 180px plot height and the same
stable per-second range policy. Compact percent sparklines stay 0-100%.
0.33.7 changes the Dashboard UI without changing proxy traffic handling or
telemetry collection:
Previous 0.33.5 regression scope:
Correct the Overview **System and process CPU** widget:
- Use a fixed 0-100% vertical range, not the measured-history peak.
- Map 25%, 50% and 75% to the horizontal grid lines.
- Clip plotted CPU values above 100% at the top without modifying their measured values in the legend or summary.
- Fix only this plot's CSS height at 125px, independent of viewport width, dashboard density and CPU samples.
- Leave other chart scales, plot dimensions, status sampling and dashboard preferences unchanged.
- Replace the duplicated **Arrange Overview** editor modal with an account-scoped
**Dashboard presets** manager. A named preset stores Dashboard density, card
order, visibility and optional custom widths; presets can be saved/updated,
loaded and deleted through the existing administrator preferences document.
- Keep actual Dashboard editing in the existing inline **Unlock layout** flow and
Settings visibility/order controls.
- Use the same monospace font family as **CONNECTION ACTIVITY** for Overview chart
titles, including compact chart cards and wide charts.
- No SQLite schema migration, new telemetry polling loop or proxy-path change is
introduced.
## Checks completed
- **PASS:** `python scripts/tests/dashboard_stable_scales_0336_browser_test.py`
with real bundled HTML/CSS/JS in simulated Chromium at 320, 375, 768,
1440 and 1920px and all three density modes. Covered 14 large plots,
125/180px plot heights, quarter-grid alignment, 0-100% CPU mapping,
steady low/high traffic plotting, minimum count/rate/latency/memory scales,
sticky expanded scales, reset and non-clipped live operation-rate labels.
- **PASS:** `python scripts/tests/dashboard_cpu_fixed_scale_0335_browser_test.py` against the actual bundled HTML/CSS/JS in simulated Chromium, at 320, 375, 768, 1440 and 1920px, in normal/compact/ultra densities. Checked low and high CPU histories, missing samples, new status revisions, clipping above 100%, actual percentage labels, consistent grid positions, fixed plot height and no sample-dependent changes to the CPU/adjacent Connection Activity cards' heights.
- **PASS:** All 11 prior `scripts/tests/*browser_test.py` simulated-browser regressions (including the 0.33.5 CPU test) and the new 0.33.6 browser regression: chart headers, resized widths, dashboard grid/modal resizing, sidebar, progress bars, System RAM, Web observability and Web Server metrics. No live RustProxy server was used.
- **PASS:** `node scripts/tests/overview_samples_0330_ui_test.mjs`, `node scripts/tests/dashboard_resume_rate_charts_ui_test.mjs` and `node scripts/tests/dashboard_metric_visuals_ui_test.mjs`.
- **PASS:** `./dev.sh doctor` and `python scripts/preflight.py` (source layout).
- **PASS:** All eight `migrations/*.sql` applied successfully in two successive cycles to a disposable, in-memory SQLite database. This verifies SQL script execution/idempotency in this context, not an upgrade of production data.
- **PASS:** Parsed `scripts/deploy/upgrade.py --help` and `scripts/migration/migrate_npm.py --help`; did not run a live upgrade or migration against an external database or service.
- **PASS:** `python scripts/tests/dashboard_presets_0337_browser_test.py` against
the real bundled HTML/CSS/JS with a simulated preferences API at 320, 375,
768 and 1440px. Covered save/update snapshot data, load, delete, responsive
modal layout, removal of the former duplicated editor controls, and chart-title
font parity with **CONNECTION ACTIVITY**.
- **PASS:** `python scripts/tests/dashboard_modal_0333_browser_test.py` after the
0.33.7 preset conversion at 320, 375, 550, 620, 800, 900, 960, 1158, 1440 and
1920px with no horizontal viewport overflow.
- **PASS:** updated `dashboard_layout_0331_browser_test.py` and
`dashboard_resizing_0333_browser_test.py`; inline editing still covers
add/hide/reorder/resize, live refresh, cancel/save and persisted custom widths,
while opening/closing the preset modal does not mutate the active layout.
- **PASS:** all 13 current `scripts/tests/*browser_test.py` simulated-browser
regressions, including chart heading/width/fixed CPU/stable scale coverage,
progress bars, sidebar, RAM, Web observability and Web Server live metrics.
The obsolete CPU autoscale regression was removed because 0.33.5 intentionally
replaced that behavior with a fixed 0-100% CPU scale and has its own current
regression test.
- **PASS:** `node scripts/tests/overview_samples_0330_ui_test.mjs`,
`node scripts/tests/dashboard_resume_rate_charts_ui_test.mjs` and
`node scripts/tests/dashboard_metric_visuals_ui_test.mjs`.
- **PASS:** JSON parsing for `src/admin/openapi.json`, `langs/en_US.json` and
`langs/pl_pl.json`; JavaScript syntax checks for the changed preferences/preset
files; Python syntax checks for changed browser tests; `python scripts/preflight.py`.
- **PASS:** `./dev.sh doctor` reports the source layout as OK and confirms that a
C compiler and Python are available.
- **PASS:** all eight `migrations/*.sql` applied successfully in two successive
cycles to a disposable in-memory SQLite database. This verifies SQL script
execution/idempotency in this context, not a production-data upgrade.
- **PASS:** parsed `scripts/deploy/upgrade.py --help` and
`scripts/migration/migrate_npm.py --help`; no live external upgrade/migration
was performed.
## Not verified in this environment
- `./dev.sh check` and `./dev.sh test` both exit 127: Cargo/rustc are unavailable. Therefore no Rust compilation, unit/integration suite, actual proxy runtime, real SSE feed, production database upgrade or live load test has been verified.
- The real-runtime acceptance gate remains open until Rust builds and runs against representative test traffic.
- `./dev.sh check` and `./dev.sh test` exit 127 because Cargo/rustc are not
installed. Therefore Rust compilation, Rust unit/integration tests, an actual
RustProxy process, real SSE traffic, production database upgrade and live load
testing are not verified here.
- The real-runtime acceptance gate remains open until Rust builds and runs against
representative test traffic.