- Backup/restore: per-stack tar.gz incl. named-volume snapshots (helper container), upload restore with rename/overwrite/conflict detection. - Notifications: ntfy/Discord/Slack/Gotify/generic webhooks, per-event subscriptions; wired into the update checker and stack lifecycle. - Settings page: update-check interval, webhook CRUD + test, user management (with last-admin safeguards). - Audit log page (searchable, paginated). - Mobile-responsive sidebar/layout. Multi-host agents and remote backup destinations (SFTP/S3) deferred. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
18 lines
668 B
TypeScript
18 lines
668 B
TypeScript
import { Construction } from "lucide-react";
|
|
import { Card } from "@/components/ui";
|
|
|
|
export function Placeholder({ title, phase }: { title: string; phase: string }) {
|
|
return (
|
|
<Card className="flex flex-col items-center gap-3 py-16 text-center">
|
|
<Construction className="h-10 w-10 text-slate-400" />
|
|
<h2 className="text-lg font-semibold">{title}</h2>
|
|
<p className="max-w-md text-sm text-slate-500">
|
|
This section is part of {phase}. The backend foundation is ready — the UI
|
|
lands in an upcoming build phase.
|
|
</p>
|
|
</Card>
|
|
);
|
|
}
|
|
|
|
export const Networks = () => <Placeholder title="Networks" phase="a future phase" />;
|