diff --git a/VERSION b/VERSION
index 297b2ec..3954434 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.0.134
+0.0.135
diff --git a/frontend/static/app.js b/frontend/static/app.js
index c4b2ca3..349671b 100644
--- a/frontend/static/app.js
+++ b/frontend/static/app.js
@@ -139,6 +139,16 @@ function ensureVersionEl() {
aside.appendChild(d);
}
}
+function ensureFooter() {
+ // футер 22px снизу — только на страницах с основной раскладкой (не на login)
+ if (document.querySelector("footer.app-footer") || !document.querySelector(".layout")) return;
+ const f = document.createElement("footer");
+ f.className = "app-footer";
+ f.innerHTML = `CoRE.Vision` +
+ `` +
+ ``;
+ document.body.appendChild(f);
+}
async function refreshStats() {
const el = document.getElementById("sys-stats");
try {
@@ -148,6 +158,8 @@ async function refreshStats() {
` Диск ${s.disk.used_gb}/${s.disk.total_gb} GB`;
const v = document.getElementById("app-version");
if (v && s.version) v.textContent = "v" + s.version;
+ const fv = document.getElementById("footer-version");
+ if (fv && s.version) fv.textContent = "v" + s.version;
} catch (e) { /* нет связи / 401 — молчим */ }
}
// ограничение подменю раскладок (режим 16+) — на любой странице с .subnav
@@ -2037,6 +2049,7 @@ document.addEventListener("DOMContentLoaded", async () => {
startClock();
bindLogout();
ensureVersionEl();
+ ensureFooter();
refreshStats(); setInterval(refreshStats, 5000);
applyGridMenuLimit();
const page = document.body.dataset.page;
diff --git a/frontend/static/style.css b/frontend/static/style.css
index 26a8d43..fdeae51 100644
--- a/frontend/static/style.css
+++ b/frontend/static/style.css
@@ -14,6 +14,7 @@
--warn: #f59e0b;
--err: #ef4444;
--header-h: 48px;
+ --footer-h: 22px;
--sidebar-w: 240px;
}
@@ -47,7 +48,16 @@ nav a.active { background: var(--accent); color: #fff; }
.clock { font-variant-numeric: tabular-nums; color: var(--text); }
/* ── Раскладка ── */
-.layout { display: flex; height: calc(100% - var(--header-h)); }
+.layout { display: flex; height: calc(100% - var(--header-h) - var(--footer-h)); }
+
+/* ── Футер ── */
+footer.app-footer {
+ height: var(--footer-h); display: flex; align-items: center; gap: 14px;
+ padding: 0 14px; background: var(--panel); border-top: 1px solid var(--border);
+ font-size: 11px; color: var(--text-dim);
+}
+footer.app-footer .brand { font-size: 12px; }
+footer.app-footer #footer-version { font-variant-numeric: tabular-nums; }
aside {
width: var(--sidebar-w); background: var(--panel); border-right: 1px solid var(--border);
display: flex; flex-direction: column; overflow: hidden;