Multi-host phase 1: API tokens, auto TLS with pinned fingerprints, hub-side node manager + reverse proxy (WebSockets included), machine switcher in the rail, Machines page
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
fc42675e9f
commit
7dcdb5dc98
+3
-2
@@ -7,15 +7,16 @@ import { Spinner } from './ui'
|
||||
export interface Group { id: string; label: string; icon: ReactNode; soon?: boolean; page?: boolean }
|
||||
|
||||
interface Props {
|
||||
groups: Group[]; terms: Term[]; active: string | null; view: string; creating?: boolean
|
||||
groups: Group[]; terms: Term[]; active: string | null; view: string; creating?: boolean; header?: ReactNode
|
||||
onSelect: (id: string) => void; onView: (id: string) => void; onNew: () => void
|
||||
onRename: (t: Term) => void; onClose: (t: Term) => void
|
||||
}
|
||||
|
||||
export default function Rail({ groups, terms, active, view, creating, onSelect, onView, onNew, onRename, onClose }: Props) {
|
||||
export default function Rail({ groups, terms, active, view, creating, header, onSelect, onView, onNew, onRename, onClose }: Props) {
|
||||
const [open, setOpen] = useState<string>('terminal')
|
||||
return (
|
||||
<nav className="rail">
|
||||
{header}
|
||||
{groups.map((g) => {
|
||||
const expanded = !g.page && open === g.id
|
||||
const isPage = !!g.page && view === g.id
|
||||
|
||||
Reference in New Issue
Block a user