This commit is contained in:
Mateusz Gruszczyński committed 2026-10-06 11:56:10 +02:00
1 parent 52cc137c73
commit 464ff42cfd
40 files changed
+208 -126

No files matched your search

+8
View File
@@ -399,6 +399,14 @@ pub(super) static READER_DOCUMENTS: &[(&str, &str, &str)] = &[
"/docs/V0.25.1_AUDIT.md"
)),
),
(
"docs/V0.26.5_IMPLEMENTATION.md",
"technical",
include_str!(concat!(
env!("CARGO_MANIFEST_DIR"),
"/docs/V0.26.5_IMPLEMENTATION.md"
)),
),
(
"docs/V0.26.4_IMPLEMENTATION.md",
"technical",
+1 -1
View File
@@ -2,7 +2,7 @@
"openapi": "3.0.3",
"info": {
"title": "RustProxy Administration API",
"version": "0.26.4",
"version": "0.26.5",
"description": "Administration API for the active panel origin. Sign in through the panel; the same-origin HttpOnly cookie authenticates all private operations. Mutations also require the exact Origin, X-RustProxy-Request: 1 and a session-bound X-CSRF-Token. Loopback HTTP is the default; Settings can enable HTTPS before using a non-loopback administration bind. This document contains no live configuration or credentials. Object schemas marked extensible are summaries: full configuration validation is authoritative in Rust."
},
"servers": [
+1 -1
View File
@@ -6,7 +6,7 @@ function renderSettings() {
if (!settingsDirty.has("response-form")) {
const server = config.server_header || {}, compression = config.compression || {}, diagnostics = config.diagnostic_headers || {};
$("expose-request-id").checked = !!diagnostics.request_id;
$("server-mode").value = server.mode || "preserve"; $("server-value").value = server.value || "RustProxy/v0.26.4";
$("server-mode").value = server.mode || "preserve"; $("server-value").value = server.value || "RustProxy/v0.26.5";
for (const name of ["gzip", "br", "zstd", "deflate"]) $(`compress-${name}`).checked = !!compression[name];
$("compress-min").value = compression.min_bytes ?? 1024; syncServerMode();
}
+3 -3
View File
@@ -1877,7 +1877,7 @@
<option data-i18n="serverCustom" value="custom">Replace / add custom value</option>
</select>
<label data-i18n="serverValue" for="server-value">Custom Server value</label><input
id="server-value" maxlength="256" placeholder="RustProxy/v0.26.4"
id="server-value" maxlength="256" placeholder="RustProxy/v0.26.5"
spellcheck="false" />
<h3 class="subheading" data-i18n="diagnosticHeaders">Diagnostic headers</h3>
<div class="switch-grid">
@@ -2676,7 +2676,7 @@
</section>
</div>
</section>
<footer class="page-footer"><span>RustProxy <b>0.26.4</b></span><span id="footer-status">API - /
<footer class="page-footer"><span>RustProxy <b>0.26.5</b></span><span id="footer-status">API - /
dropped: 0</span></footer>
</div>
</main>
@@ -3387,7 +3387,7 @@ max_execution_time = 30</code></pre>
<article class="card about-card">
<div class="about-product">
<span aria-hidden="true" class="brand-mark">r<span>/</span>p</span>
<div><span class="small-label">RustProxy</span><strong>0.26.4</strong></div>
<div><span class="small-label">RustProxy</span><strong>0.26.5</strong></div>
</div>
<dl class="about-meta">
<div>
+1 -1
View File
@@ -176,7 +176,7 @@
} catch (error) { toast(error.message, true); }
});
$("stream-new").addEventListener("click", () => { window.rustProxyDrafts.prepare(); load(); });
$("stream-listener-add").addEventListener("click", () => { window.rustProxyDrafts.prepare(); load(); });
$("stream-listener-add").addEventListener("click", () => { setPanel("settings"); window.rustProxySettings?.select("listeners"); });
$("stream-search").addEventListener("input", render);
$("stream-close").addEventListener("click", closeEditor);
$("stream-reset").addEventListener("click", async () => { if (await allowDiscard()) load(editing ? structuredClone((envelope?.config.streams || []).find(item => item.id === editing) || defaults()) : defaults()); });
+30 -14
View File
@@ -72,6 +72,13 @@
--traffic-h1: var(--chart-accent);
--traffic-h2: var(--chart-secondary);
--traffic-h3: var(--chart-tertiary);
--ui-scale: 1;
--ui-field-font-size: 12px;
--ui-field-pad-y: 6px;
--ui-field-pad-x: 8px;
--ui-field-min-height: 27px;
--ui-check-size: 15px;
--ui-range-height: 18px;
--mono: ui-monospace, SFMono-Regular, Consolas, monospace;
--sans: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif
}
@@ -782,9 +789,10 @@ textarea {
background: var(--field-bg);
border: 1px solid var(--field-line);
border-radius: 3px;
padding: 11px 12px;
padding: var(--ui-field-pad-y) var(--ui-field-pad-x);
color: var(--text);
font-size: 12px;
font-size: var(--ui-field-font-size);
min-height: var(--ui-field-min-height);
min-width: 0
}
@@ -802,10 +810,10 @@ input::placeholder {
input[type="checkbox"],
input[type="radio"] {
display: inline-block;
width: 15px;
height: 15px;
min-width: 15px;
min-height: 15px;
width: var(--ui-check-size);
height: var(--ui-check-size);
min-width: var(--ui-check-size);
min-height: var(--ui-check-size);
padding: 0;
margin: 0;
accent-color: var(--green);
@@ -3002,9 +3010,9 @@ main {
input:not([type="checkbox"]):not([type="radio"]),
select,
textarea {
padding: 6px 8px;
font-size: 12px;
min-height: var(--ui-control)
padding: var(--ui-field-pad-y) var(--ui-field-pad-x);
font-size: var(--ui-field-font-size);
min-height: var(--ui-field-min-height)
}
@@ -9354,7 +9362,16 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline {
stroke-linejoin: var(--chart-linejoin);
}
/* Toolbar filters stay aligned with their tallest action button. */
/* Compact toolbar fields use one scaled box model, so native selects and inputs stay aligned. */
.backend-table-tools,
.vhost-list-tools,
.docker-toolbar,
.log-tools,
.file-logs-filter,
#panel-settings .settings-filter {
--toolbar-control-height: min(var(--button-min-height), var(--ui-field-min-height));
}
.backend-table-tools input,
.backend-table-tools select,
.vhost-list-tools input[type="search"],
@@ -9365,8 +9382,7 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline {
.file-logs-filter select,
#panel-settings .settings-filter input {
box-sizing: border-box;
height: var(--button-min-height);
min-height: var(--button-min-height);
padding-top: 2px;
padding-bottom: 2px
height: var(--toolbar-control-height);
min-height: var(--toolbar-control-height);
padding-block: 0
}