lvwerra's picture
lvwerra HF Staff
Add demo mode: hide current sessions behind a settings toggle
40f8c9b
Raw
History Blame Contribute Delete
1.51 kB
// Demo mode: a pure view filter. Activating snapshots the session and group IDs
// that exist right now and hides them from the sidebar/overview, so the Space
// reads like a fresh install (empty workspace + welcome). Nothing is deleted —
// tmux sessions keep running, logins and secrets stay valid — and anything
// created *after* activation shows through (it isn't in the snapshot).
// Deactivating clears the snapshot and every real session reappears untouched.
import fs from 'fs';
import path from 'path';
import { DATA_DIR } from './config.js';
const FILE = path.join(DATA_DIR, 'demo.json');
let state = { active: false, sessions: [], groups: [] };
export function init() {
try {
const p = JSON.parse(fs.readFileSync(FILE, 'utf8'));
state = { active: !!p.active, sessions: p.sessions || [], groups: p.groups || [] };
} catch { /* no file yet → inactive */ }
}
function persist() {
try { fs.writeFileSync(FILE, JSON.stringify(state)); }
catch (e) { console.error('[demo.persist]', e && e.message); }
}
export const active = () => state.active;
export const hiddenSessions = () => new Set(state.sessions);
export const hiddenGroups = () => new Set(state.groups);
// Snapshot the currently-visible sessions/groups as the hidden set.
export function activate(sessionIds, groupIds) {
state = { active: true, sessions: [...sessionIds], groups: [...groupIds] };
persist();
}
export function deactivate() {
state = { active: false, sessions: [], groups: [] };
persist();
}