Entracte (TypeScript)
    Preparing search index...

    All state + actions the Profiles tab needs. Action methods surface failures through profileError rather than throwing, so the UI can show inline messages without try/catch.

    type UseProfiles = {
        activeProfile: string;
        confirmDelete: (name: string) => Promise<void>;
        confirmReset: (name: string) => Promise<void>;
        create: () => Promise<void>;
        deleteCandidate: string | null;
        duplicate: (source: string) => Promise<void>;
        move: (name: string, delta: -1 | 1) => Promise<void>;
        newProfileName: string;
        profileError: string;
        profiles: string[];
        refresh: () => Promise<void>;
        rename: (from: string) => Promise<void>;
        renameDrafts: Record<string, string>;
        requestDelete: (name: string) => void;
        requestReset: (name: string) => void;
        resetCandidate: string | null;
        setNewProfileName: (name: string) => void;
        setRenameDraft: (name: string, draft: string | null) => void;
        switchTo: (name: string) => Promise<void>;
    }
    Index

    Properties

    activeProfile: string
    confirmDelete: (name: string) => Promise<void>
    confirmReset: (name: string) => Promise<void>
    create: () => Promise<void>
    deleteCandidate: string | null
    duplicate: (source: string) => Promise<void>
    move: (name: string, delta: -1 | 1) => Promise<void>
    newProfileName: string
    profileError: string
    profiles: string[]
    refresh: () => Promise<void>
    rename: (from: string) => Promise<void>
    renameDrafts: Record<string, string>
    requestDelete: (name: string) => void
    requestReset: (name: string) => void
    resetCandidate: string | null
    setNewProfileName: (name: string) => void
    setRenameDraft: (name: string, draft: string | null) => void
    switchTo: (name: string) => Promise<void>