Small UI cleanup, auto-refresh, and per-kind artifact routes
- Remove redundant "manage scripts" button and pipeline sidebar from Fleet page - Bump log tail default 200 -> 1000 lines - Auto-refresh (5s) on deployments list/detail, betas list, server detail, and artifact detail - Drift ignores dedicated.cfg (Plutonium MP config; regenerates if deleted) - Extract ArtifactDetail component; mount under /scripts/[id], /configs/[id], /plugins/[id] so configs and plugins no longer land on /scripts URLs Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -26,6 +26,11 @@ import { allServers, getServer, listServers } from './servers.js';
|
||||
// Baseline shares the config destination — one physical dir, two logical kinds.
|
||||
const DRIFT_DESTS: ReadonlyArray<ArtifactKind> = ['script', 'config', 'plugin'];
|
||||
|
||||
// Filenames we never treat as drift. dedicated.cfg is placed by Plutonium for
|
||||
// multiplayer and regenerates if deleted; we manage dedicated_sp.cfg (zombies)
|
||||
// via config-compose instead.
|
||||
const DRIFT_IGNORE_FILENAMES = new Set(['dedicated.cfg']);
|
||||
|
||||
// Two flavors of drift:
|
||||
// 'untracked' — file on disk that inventory doesn't know about (delete it)
|
||||
// 'missing' — artifact promoted for this server's scope, but file is gone
|
||||
@@ -61,6 +66,7 @@ async function walkFiles(root: string): Promise<string[]> {
|
||||
return;
|
||||
}
|
||||
for (const e of entries) {
|
||||
if (DRIFT_IGNORE_FILENAMES.has(e.name)) continue;
|
||||
const abs = join(dir, e.name);
|
||||
if (e.isDirectory()) await recur(abs);
|
||||
else if (e.isFile()) out.push(toPosix(relative(root, abs)));
|
||||
|
||||
Reference in New Issue
Block a user