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 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MMsgSXoK4Bph2vU6fSBkAH
This commit is contained in:
135 files changed
+1425
-1064
No files matched your search
@@ -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;
|
||||
|
||||
@@ -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,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;
|
||||
|
||||
@@ -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,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 {
|
||||
|
||||
@@ -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,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,
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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.
|
||||
Reference in new issue
Block a user