Compare commits

...

2 Commits

5 changed files with 13 additions and 13 deletions
+4
View File
@@ -262,3 +262,7 @@ Roughly in priority order:
`v0.16.68` is a quick follow-on to v0.16.67: the Audit log's new table had no surrounding card, so it sat flush against the tab content instead of appearing inside the same bordered, elevated "tile" every other tab-hosted table uses -- Backup history's `dashboard-panel backup-history-section` wrapper on the Backups tab being the closest match. The Audit log's table markup is now wrapped in an equivalent `dashboard-panel audit-log-section` with an "Audit log" eyebrow above the existing heading, matching Backup history's structure exactly (search/filter row and table unchanged). Purely a wrapper/markup change -- no new CSS, no data or behavior changes.
`v0.16.69` closes a gap flagged after reviewing the ZimaOS compose file: `compose.yaml`, `compose.release.yaml`, and `compose.zimaos.yaml` all documented `DATA_DIR_LIMIT_GB` and the `mem_limit`/`cpus`/`cpuset` resource-panel options in README/install.html but never actually carried them as commented-optional entries the way the marketing site's install guide showed -- someone copying a real compose file instead of the docs page got none of that guidance. All three now include the same commented-out block (env-var style in the two static compose files, `${VAR}`-substituted and wired through `.env.example` in `compose.release.yaml`). This also folds in the marketing site's `install.html`, which had drifted out of sync with an already-updated draft and was missing the same options on the user's machine -- resynced so the published guide matches what ships in the repo.
`v0.16.70` fixes the Access Logs table (Administration > Logs, "Access requests"), the last page still on its own pre-unification CSS: `.log-table` pinned the Status and Duration columns with `position:sticky` and drew a divider `box-shadow` on each -- a horizontal-scroll affordance none of the other log-type pages use -- and left the Request column at a fixed width instead of stretching to fill the panel, so wide viewports showed an empty gap past Duration. Both are removed: the two trailing columns are back in normal table flow, and Request now takes `width:auto` to absorb the remaining space, matching how Gateway Events, Backup history, and the Audit log already size their last column. Purely a CSS change -- no markup, data, or behavior changes.
`v0.16.71` fixes a Gateway Events / Audit log message that slipped past v0.16.66: the Hosted Site file-upload route ("Replace files") still wrote the old, un-prefixed `Files replaced for "<name>".` line instead of the `Hosted site "<name>" ...` convention every other Hosted Site action uses (created, enabled/disabled, deleted, and the field-level update summaries). It lived in its own route separate from the four `PATCH` handlers v0.16.66 touched, so it was missed at the time and only noticed once a user pointed out the log entry gave no way to tell which route type it belonged to. Now reads `Hosted site "<name>" files replaced.`, matching the rest.
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "site-gateway",
"version": "0.16.69",
"version": "0.16.71",
"private": true,
"description": "Site Gateway: simple self-hosted website publishing, reverse proxying, and automatic HTTPS.",
"type": "module",
+2 -2
View File
@@ -8,7 +8,7 @@
<title>Site Gateway</title>
<meta name="description" content="Host sites, proxy services, and manage HTTPS from one simple dashboard.">
<link rel="icon" type="image/png" href="/site-gateway-icon-approved.png">
<link rel="stylesheet" href="/styles.css?v=0.16.69">
<link rel="stylesheet" href="/styles.css?v=0.16.71">
</head>
<!-- ================================================================
@@ -451,6 +451,6 @@
<div id="toast" class="toast" role="status"></div>
<div id="update-banner" class="update-banner hidden" role="status"><span>A new version of Site Gateway is available.</span><div class="update-banner-actions"><button id="update-banner-refresh" class="button primary">Refresh</button><button id="update-banner-dismiss" class="text-button">Dismiss</button></div></div>
<!-- App scripts: core (app.js) then extended views/admin (features.js) -->
<script src="/app.js?v=0.16.69" defer></script><script src="/features.js?v=0.16.69" defer></script><script src="/select-enhance.js?v=0.16.69" defer></script>
<script src="/app.js?v=0.16.71" defer></script><script src="/features.js?v=0.16.71" defer></script><script src="/select-enhance.js?v=0.16.71" defer></script>
</body>
</html>
+5 -9
View File
@@ -487,25 +487,21 @@ dialog{max-height:calc(100vh - 28px);overflow:auto}
#app .upstream-diagnostics summary{padding:0;color:var(--blue);font-size:var(--font-size-xs);font-weight:700;border:0}
#app .upstream-diagnostics .upstream-detail{margin:6px 0 0}
/* Log table layout & column widths */
/* Log table layout & column widths -- matches the .event-table/.performance-table
pattern used by Gateway Events, Backup history, and the Audit log: sticky header
only (no pinned/divided trailing columns), and the Request column absorbs the
remaining width instead of leaving a gap on wide panels. */
.log-table-wrap{max-height:min(52vh,620px);overflow:auto}
.log-table-wrap .log-table thead th{position:sticky;top:0;background:var(--panel);z-index:1}
.log-section-heading{margin:20px 0 10px}
.log-section-heading h2{margin:0;font-size:1.05rem}
.log-section-heading p{margin:var(--space-1) 0 0;font-size:.76rem}
@media(min-width:761px){#dashboard>aside{position:sticky;top:0;height:100vh;max-height:100vh;overflow-y:auto;align-self:start}}
.log-table th:nth-last-child(2),.log-table td:nth-last-child(2),.log-table th:last-child,.log-table td:last-child{position:sticky;background:var(--panel);z-index:2}
.log-table th:nth-last-child(2),.log-table td:nth-last-child(2){right:104px;min-width:104px}
.log-table th:last-child,.log-table td:last-child{right:0;min-width:104px}
.log-table th:nth-last-child(2){box-shadow:-1px 0 0 var(--line)}
.log-table td:nth-last-child(2){box-shadow:-1px 0 0 var(--line)}
.log-table-wrap{overflow-x:hidden;overflow-y:auto}
.log-table{table-layout:fixed}
.log-table th:nth-child(1),.log-table td:nth-child(1){width:190px}
.log-table th:nth-child(2),.log-table td:nth-child(2){width:220px}
.log-table th:nth-child(4),.log-table td:nth-child(4),.log-table th:nth-child(5),.log-table td:nth-child(5){width:104px}
.log-table th:nth-child(3),.log-table td:nth-child(3){white-space:normal;overflow-wrap:anywhere}
.log-table th:last-child,.log-table td:last-child{box-shadow:-1px 0 0 var(--line)}
.log-table th:nth-child(3),.log-table td:nth-child(3){width:auto;white-space:normal;overflow-wrap:anywhere}
@media(max-width:900px){.log-table th:nth-child(1),.log-table td:nth-child(1){width:150px}.log-table th:nth-child(2),.log-table td:nth-child(2){width:170px}}
.log-table th:nth-child(4),.log-table td:nth-child(4),.log-table th:nth-child(5),.log-table td:nth-child(5){text-align:center}
#access-dialog .dialog-heading .close-dialog{display:none}
+1 -1
View File
@@ -2192,7 +2192,7 @@ app.post("/api/sites/:id/files", upload.single("files"), async (req, res, next)
if (!req.file) return res.status(400).json({ error: "Choose a ZIP file or index.html." });
await installUpload(site, req.file);
await syncCaddy();
recordActivity(`Files replaced for “${site.name}.`);
recordActivity(`Hosted site “${site.name}” files replaced.`);
res.json(publicSite(site));
} catch (error) { next(error); }
});