active Profile activeProfile : string
confirm Delete confirmDelete : ( name : string ) => Promise < void >
confirm Reset confirmReset : ( name : string ) => Promise < void >
create create : () => Promise < void >
delete Candidate deleteCandidate : string | null
duplicate duplicate : ( source : string ) => Promise < void >
move move : ( name : string , delta : -1 | 1 ) => Promise < void >
new Profile Name newProfileName : string
profile Error profileError : string
profiles profiles : string []
refresh refresh : () => Promise < void >
rename rename : ( from : string ) => Promise < void >
rename Drafts renameDrafts : Record < string , string >
request Delete requestDelete : ( name : string ) => void
request Reset requestReset : ( name : string ) => void
reset Candidate resetCandidate : string | null
set New Profile Name setNewProfileName : ( name : string ) => void
set Rename Draft setRenameDraft : ( name : string , draft : string | null ) => void
switch To switchTo : ( name : string ) => Promise < void >
All state + actions the Profiles tab needs. Action methods surface failures through
profileErrorrather than throwing, so the UI can show inline messages without try/catch.