v0.35.1: performance, AGPL licensing and documentation overhaul

- Web Server reads static files inline; proxy middleware chain flattened
- About window with license summary and project links; AGPL-3.0-or-later
- Rewritten documentation: feature list, screenshots, performance guide
- Fix false spikes in per-Vhost request-rate charts
This commit is contained in:
gru committed 2026-11-05 18:29:56 +01:00
1 parent d3b492874b
commit eba9f89283
135 files changed
+1425 -1064

No files matched your search

+1 -3
View File
@@ -1,6 +1,4 @@
/* Theme palettes and appearance tokens. Runtime preference variables remain writable by JavaScript.
* Order is defined in manifest.json; responsive rules are centralized in 70-responsive.css.
*/
/* Theme palettes and appearance tokens */
:root {
color-scheme: dark;
+39 -8
View File
@@ -1,6 +1,4 @@
/* Shared reset, typography, controls, forms, tables, cards and overlay primitives.
* Order is defined in manifest.json; responsive rules are centralized in 70-responsive.css.
*/
/* Shared reset, typography, controls, forms, tables, cards and overlay primitives */
* {
box-sizing: border-box;
@@ -1304,8 +1302,9 @@ body[data-density=compact] .page-footer {
}
.about-dialog {
width: calc(min(560px, 100vw - 24px));
overflow: hidden;
width: calc(min(640px, 100vw - 24px));
max-height: calc(100vh - 24px);
overflow: auto;
}
.about-dialog .window-heading button {
@@ -1370,6 +1369,38 @@ body[data-density=compact] .page-footer {
line-height: 1.65;
}
.about-license {
display: grid;
gap: 8px;
padding: 12px 14px;
border: 1px solid var(--line);
background: var(--panel);
}
.about-license h3 {
margin: 0;
}
.about-license p {
margin: 0;
line-height: 1.6;
}
.about-license ul {
display: grid;
gap: 4px;
margin: 0;
padding-inline-start: 18px;
color: var(--muted);
line-height: 1.5;
}
.about-links {
display: grid;
grid-template-columns: minmax(0, 1fr);
gap: 6px;
}
.about-repository {
justify-content: space-between;
gap: 12px;
@@ -1381,7 +1412,9 @@ body[data-density=compact] .page-footer {
.about-repository span:last-child {
color: var(--muted);
font: 10px var(--mono);
overflow-wrap: anywhere;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
html[data-table-density=compact] :is(table th, table td) {
@@ -1479,7 +1512,6 @@ html[data-table-density=ultra] :is(table th, table td) {
align-items: center;
}
/* Keep generated ACL instructions in the original metrics-example code style. */
.path-permissions {
min-width: 0;
}
@@ -1506,7 +1538,6 @@ html[data-table-density=ultra] :is(table th, table td) {
max-width: 260px;
}
/* Permission guidance belongs to its generated command block, not the path inputs. */
#certificate-external-acl-example.path-permissions {
margin-top: 20px;
border-top: 1px solid var(--line);
+1 -3
View File
@@ -1,6 +1,4 @@
/* Application startup, authentication, navigation, page chrome and draft dock.
* Order is defined in manifest.json; responsive rules are centralized in 70-responsive.css.
*/
/* Application startup, authentication, navigation, page chrome and draft dock */
html.app-loading .shell {
visibility: hidden;
+2 -5
View File
@@ -1,6 +1,4 @@
/* Overview metrics, charts, dashboard density, inline layout controls and presets.
* Order is defined in manifest.json; responsive rules are centralized in 70-responsive.css.
*/
/* Overview metrics, charts, dashboard density, inline layout controls and presets */
html[data-theme=ultra_dark] :is(.card, .stat, dialog) {
box-shadow: 0 6px 24px rgba(0, 0, 0, .18);
@@ -76,8 +74,7 @@ html[data-theme=cream] :is(.card, .stat, dialog) {
stroke-dasharray: var(--chart-grid-dash, 2 5);
}
/* Optional X/Y scale readouts do not change SVG coordinates or chart ranges.
* Labels are HTML, not distorted SVG text under preserveAspectRatio="none". */
/* Axis labels are HTML overlays, not stretched SVG text. */
.rp-chart-axis-host {
position: relative;
display: flow-root;
+1 -3
View File
@@ -1,6 +1,4 @@
/* Shared service editors: Vhosts, backends, Web Server, Streams, routing and ACL pickers.
* Order is defined in manifest.json; responsive rules are centralized in 70-responsive.css.
*/
/* Shared service editors: Vhosts, backends, Web Server, Streams, routing and ACL pickers */
.host-chip-editor.field-invalid,
.listener-choices.field-invalid {
+2 -4
View File
@@ -1,6 +1,4 @@
/* Settings, certificates, integrations and Docker agent/service management.
* Order is defined in manifest.json; responsive rules are centralized in 70-responsive.css.
*/
/* Settings, certificates, integrations and Docker agent/service management */
.settings-tabs button.has-unsaved:after {
content: "";
@@ -1205,7 +1203,7 @@ html[data-dashboard-density=normal] #panel-overview .stat>span,
width: 100%;
min-width: 0;
}
/* 0.34.13: global security policy forms, grouped with clear control boundaries. */
/* Global security policy forms */
.global-policy-form .global-policy-section {
display: grid;
gap: 10px;
+1 -3
View File
@@ -1,6 +1,4 @@
/* Traffic, cache, transformations, live/stored logs and configuration history.
* Order is defined in manifest.json; responsive rules are centralized in 70-responsive.css.
*/
/* Traffic, cache, transformations, live/stored logs and configuration history */
.certificate-card .pill,
.cache-miss-key,
+3 -5
View File
@@ -1,6 +1,4 @@
/* Responsive rules. Each viewport, container and reduced-motion condition is declared once.
* Historical overrides were resolved before consolidation; preserve the documented order.
*/
/* Responsive rules */
@media (min-width:1201px) {
#panel-overview .stats-grid {
@@ -1052,7 +1050,8 @@
}
.named-listener-row .vh-grid,
.about-meta {
.about-meta,
.about-links {
grid-template-columns: 1fr;
}
@@ -1388,7 +1387,6 @@
letter-spacing: -2px;
}
/* The standalone auth heading keeps its later, unconditional font size. */
.login-section h1:where(:not(.auth-main h1)) {
font-size: 40px;
}
-6
View File
@@ -91,9 +91,3 @@ When replacing a previously built checkout with a source ZIP, include the root
the [generated-CSS recovery steps](../../../../scripts/README.md#missing-generated-css-during-rust-compilation).
Source preflight does not generate Cargo outputs. The build tracks the generated
bundle as well as its inputs, and rejects a missing or empty output.
The optional [dashboard browser regression runner](../../../../tools/dev/README-dashboard-css.md)
assembles the actual HTML and JavaScript against synthetic API fixtures and
compares a supplied baseline stylesheet with the built candidate. It includes
breakpoint/container boundaries and dynamic editor states. Its dependencies are
development-only; they are not part of the application build or deployment.