pub enum Msg<'a> {
Show 391 variants
WelcomeBannerLine1,
WelcomeBannerLine2,
WelcomeOptionCodingPlan,
WelcomeOptionCodingPlanHint,
WelcomeOptionConfigureManually,
WelcomeOptionConfigureManuallyHint,
WelcomeOptionSkip,
WelcomeOptionSkipHint,
CodingPlanSetupFailed {
error: &'a str,
},
CpReauthAfter401,
ChatAuthExpired,
CpSetupHeader,
CpLoggedIn {
who: &'a str,
username: &'a str,
email: &'a str,
},
CpStepSkipped {
reason: &'a str,
},
CpLoginFailed {
error: &'a str,
},
CpClaimed {
message: &'a str,
plan_type: &'a str,
},
CpClaimSuccessFallback,
CpAlreadyClaimed {
reason: &'a str,
},
CpClaimFailed {
error: &'a str,
},
CpClaimTierSucceeded {
tier: &'a str,
},
CpClaimTierAlreadyHeld {
tier: &'a str,
},
CpClaimTierFailed {
tier: &'a str,
reason: &'a str,
},
CpAddedProviders {
count: usize,
plural_s: &'a str,
},
CpLocked {
name: &'a str,
},
CpProviderRow {
provider: &'a str,
model: &'a str,
default_suffix: &'a str,
},
CpDefaultSuffix,
CpVisionAuto {
kind: &'a str,
},
CpVisionUserSupplied {
kind: &'a str,
},
CpVisionCleared,
CpModelsSkipped {
reason: &'a str,
},
CpModelsFailed {
error: &'a str,
},
CpStatusHeader,
CpPlanPending {
plan: &'a str,
},
CpPlanActive {
plan: &'a str,
expires_at: &'a str,
remaining_days: i32,
total_days: i32,
},
CpUsageLine {
usage: &'a str,
reset_at: &'a str,
duration: &'a str,
},
CpWindowQuotaExhausted,
CpWindowQuotaHint {
hint: &'a str,
},
CpStatusFetchSkipped {
reason: &'a str,
},
CpStatusFetchFailed {
error: &'a str,
},
CpOfficialBuildRequired,
CpAuthRequired,
CpSignStaleClockSkew,
CpSignReplayPersisted,
CpSignVersionTooOld,
CpUpgradeRequired,
ErrUnsupportedLocale {
input: &'a str,
},
StatusNoProvider,
StatusUpgradeHint {
version: &'a str,
},
StatusModelNotConfigured,
StatusClipboardImageHint,
StatusClipboardImageHintSlash,
StatusBody {
model: &'a str,
dir: &'a str,
config: &'a str,
tokens: usize,
},
StatusCpNotSignedIn,
StatusCpFetchFailed {
error: &'a str,
},
StatusCpNoActive,
StatusCpLine {
plan: &'a str,
expires_at: &'a str,
remaining_days: i32,
total_days: i32,
},
StatusCpUsage {
usage: &'a str,
reset_at: &'a str,
seconds: i64,
},
StatusCpWindowExhausted,
StatusCpWindowHint {
hint: &'a str,
},
StatusInstructionFilesHeader,
StatusInstructionPresent {
path: &'a str,
label: &'a str,
},
StatusInstructionMissing {
label: &'a str,
},
LoginSignedInWithCpHint {
name: &'a str,
username: &'a str,
},
HelpAvailableCommands,
KeybindingsHelp,
ProviderWizardHeader,
ProviderWizardCancelled,
ProviderMenuAdd,
ProviderMenuAddDesc,
ProviderMenuEdit,
ProviderMenuEditDesc,
ProviderMenuDelete,
ProviderMenuDeleteDesc,
ProviderMenuSetDefault,
ProviderMenuSetDefaultDesc,
ProviderNoProviders,
ProviderDeleteConfirm {
name: &'a str,
},
ProviderDeleted {
name: &'a str,
},
ProviderDeleteKept,
ProviderDefaultSet {
name: &'a str,
},
ProviderAdded {
name: &'a str,
model: &'a str,
},
ProviderUpdated {
name: &'a str,
},
ProviderStepName,
ProviderStepType,
ProviderStepTypeWithHint {
current: &'a str,
},
ProviderStepBaseUrl,
ProviderStepBaseUrlWithHint {
current: &'a str,
},
ProviderDefaultHint,
ProviderStepApiKey,
ProviderStepApiKeyWithHint {
hint: &'a str,
},
ProviderStepApiKeySet,
ProviderStepApiKeyUnset,
ProviderStepModel,
ProviderStepModelWithHint {
current: &'a str,
},
ProviderNameEmpty,
ProviderUnknownType,
ProviderUnknownTypeEdit,
ProviderModelEmpty,
ProviderEditKeep,
ModelSwitched {
provider: &'a str,
model: &'a str,
},
SessionLoadFailed {
error: &'a str,
},
SessionResumedLabel {
name: &'a str,
},
SessionTimeJustNow,
SessionTimeMinAgo {
n: u64,
},
SessionTimeHourAgo {
n: u64,
},
SessionTimeDayAgo {
n: u64,
},
SessionMsgCount {
count: usize,
},
SessionNameEmpty,
SessionNameTooLong {
max: usize,
},
SessionNameControlChars,
SessionListFailed {
error: &'a str,
},
SessionRenamed {
old: &'a str,
new: &'a str,
},
SessionSaveFailed {
error: &'a str,
},
SessionNoneSelected,
SessionRenameEditing {
buffer: &'a str,
},
DirCurrent,
DirNotExists {
path: &'a str,
},
DirChanged {
path: &'a str,
},
DirNotADirectory {
path: &'a str,
},
IssueCancelled,
IssueNewOn {
owner: &'a str,
repo: &'a str,
},
IssueStep1,
IssueStep2,
IssueTitleConfirmed {
title: &'a str,
},
IssueRequiredField {
field: &'a str,
},
IssueCreated {
number: u64,
title: &'a str,
url: &'a str,
},
IssueCreateFailed {
error: &'a str,
},
LanguageSwitched {
label: &'a str,
locale: &'a str,
},
IdleHintPrefix,
IdleHintSlash,
IdleHintSuffix,
IdleHintFull,
IdleHintProvider,
IdleHintProviderSuffix,
IdleHintProviderFull,
IdleHintCodingplan,
IdleHintCodingplanSuffix,
IdleHintCodingplanFull,
CmdSwitchedPlanMode,
CmdSwitchedBuildMode,
CmdNewSession,
CmdNoProviders,
CmdNoSessions,
CmdUnknownCommand {
name: &'a str,
},
CmdLoginFailed {
error: &'a str,
},
CmdLogoutDone,
CmdLogoutFailed {
error: &'a str,
},
CmdWhoamiNotSignedIn,
CmdReloadDone {
provider: &'a str,
model: &'a str,
},
CmdReloadFailed {
error: &'a str,
},
CmdUndoNotSupported,
CmdNoChanges,
CmdCheckingUpdate,
CmdNoActiveProvider,
ApprovalPromptAlt {
tool: &'a str,
detail: &'a str,
},
ApprovalWaitingLabel,
ApprovalAllow,
ApprovalAlways,
ApprovalDeny,
Cancelled,
ErrorPrefix {
msg: &'a str,
},
UpgradeSuccess {
from: &'a str,
to: &'a str,
},
UpgradeManifestFetched {
version: &'a str,
},
UpgradeDownloading {
pct: i32,
bytes: u64,
total: u64,
},
UpgradeVerifying,
UpgradeReplacing,
UpgradeDone {
version: &'a str,
backup: &'a str,
},
UpgradeAlreadyLatest {
current: &'a str,
latest: &'a str,
},
UpgradeFailed {
error: &'a str,
},
UpgradeRolledBack {
exe: &'a str,
backup: &'a str,
},
KbdHintMacos,
KbdHintOther,
JediTermFallback,
LegacyConhostFallback,
BackgroundComplete {
turns: usize,
},
BackgroundFailed {
turns: usize,
},
BackgroundFilesEdited,
ConfigProviderLabel {
provider: &'a str,
path: &'a str,
},
CostReport {
prompt: usize,
completion: usize,
cached: usize,
cache_rate: usize,
total: usize,
cost: &'a str,
},
ThinkStatus {
status: &'a str,
budget: u32,
provider: &'a str,
},
ThinkEnabled {
budget: u32,
},
ThinkDisabled,
ThinkBudgetSet {
n: u32,
},
ThinkBudgetTooSmall {
n: u32,
},
ThinkBudgetUsage,
ThinkUsage,
RememberUsage,
ForgetUsage,
BackgroundUsage,
InitAlreadyExists {
path: &'a str,
},
InitWrote {
path: &'a str,
bytes: usize,
},
InitFailed {
error: &'a str,
},
CdWorkingDir {
cwd: &'a str,
},
DiffFailed {
error: &'a str,
},
UpgradeUnknownArg {
arg: &'a str,
},
SkillsNone,
SkillsAvailable,
SkillUnknown {
name: &'a str,
},
McpReloading {
count: usize,
},
McpConnecting,
McpConnectingServer {
name: &'a str,
},
McpNoServersConfigured,
McpClearedReconnecting {
removed: usize,
},
McpClearedNoServers {
removed: usize,
},
McpToolsUsage,
McpToolsListing {
server: &'a str,
},
McpNoRegistry,
McpServersHeader,
McpReloadFailed {
error: &'a str,
},
McpOAuthLoginUsage,
McpOAuthLogoutUsage,
McpOAuthLoadConfigFailed {
error: &'a str,
},
McpOAuthServerNotFound {
server: &'a str,
},
McpOAuthStarting {
server: &'a str,
},
McpOAuthSaved {
provider: &'a str,
server: &'a str,
},
McpOAuthFailed {
error: &'a str,
},
McpOAuthTokenRemoved {
server: &'a str,
},
McpOAuthNoToken {
server: &'a str,
},
McpOAuthLogoutFailed {
error: &'a str,
},
McpServerConnected {
name: &'a str,
},
McpServerFailed {
name: &'a str,
error: &'a str,
},
LspServerStarted {
name: &'a str,
ext: &'a str,
},
LspServerFailed {
name: &'a str,
ext: &'a str,
error: &'a str,
},
WorktreeUsage,
WorktreeCreateUsage,
WorktreeCreated {
branch: &'a str,
base: &'a str,
path: &'a str,
},
WorktreeCreateFailed {
error: &'a str,
},
WorktreeNoActive,
WorktreeListFailed {
error: &'a str,
},
WorktreeActiveHeader,
WorktreeHasChanges,
WorktreeClean,
WorktreeCurrent,
WorktreeDoneBack {
path: &'a str,
},
WorktreeDoneMergeHint {
branch: &'a str,
},
WorktreeNoSession,
WorktreeCleanupUsage,
WorktreeCleaned {
branch: &'a str,
},
WorktreeCleanedSwitched {
path: &'a str,
},
WorktreeCleanupUncommitted {
branch: &'a str,
},
WorktreeCleanupFailed {
error: &'a str,
},
HelpCustomCommandsHeader,
HelpCustomNone,
HelpCustomCreateHint,
HelpSourceGlobal,
HelpSourceProject,
SetupHeader {
installed: usize,
skipped: usize,
failed: usize,
duration_ms: u64,
},
SetupInstalledLabel,
SetupSkippedLabel,
SetupFailedLabel,
SetupInstalledRow {
kind: &'a str,
slug: &'a str,
path: &'a str,
},
SetupSkippedRow {
kind: &'a str,
slug: &'a str,
reason: &'a str,
},
SetupFailedRow {
kind: &'a str,
slug: &'a str,
error: &'a str,
},
CmdSetupTip,
CmdSetupRunning,
CmdSetupSkillsReloaded {
count: usize,
},
CmdSetupError {
error: &'a str,
},
CmdSetupRunningSkill,
CmdSetupSkillMissing,
PluginUsage,
PluginMarketplaceUsage,
PluginInstallUsage,
PluginUninstallUsage,
PluginNoMarketplaces,
PluginMarketplacesHeader,
PluginNoInstalled,
PluginInstalledHeader,
PluginMarketplaceCloning {
url: &'a str,
},
PluginMarketplaceRemoved {
name: &'a str,
},
PluginMarketplaceRemoveFailed {
error: &'a str,
},
PluginMarketplaceUpdating {
name: &'a str,
},
PluginMarketplaceListFailed {
error: &'a str,
},
PluginInstalling {
plugin: &'a str,
marketplace: &'a str,
},
PluginUninstalled {
plugin: &'a str,
marketplace: &'a str,
},
PluginUninstallFailed {
error: &'a str,
},
PluginListFailed {
error: &'a str,
},
CmdDescSetup,
CmdDescCodingplan,
CmdDescResume,
CmdDescRename,
CmdDescLogin,
CmdDescLogout,
CmdDescWhoami,
CmdDescModel,
CmdDescProvider,
CmdDescStatus,
CmdDescConfig,
CmdDescReload,
CmdDescCd,
CmdDescInit,
CmdDescBg,
CmdDescBackground,
CmdDescDiff,
CmdDescClear,
CmdDescSession,
CmdDescCost,
CmdDescContext,
CmdDescCompact,
CmdDescRemember,
CmdDescForget,
CmdDescMemory,
CmdDescMcp,
CmdDescUndo,
CmdDescWorktree,
CmdDescUpgrade,
CmdDescIssue,
CmdDescPlan,
CmdDescBuild,
CmdDescThink,
CmdDescHelp,
CmdDescKeys,
CmdDescLanguage,
CmdDescQuit,
CmdDescSkills,
CmdDescPlugin,
CmdDescPaste,
CmdPasteNoImage,
ConfigSaveFailed {
error: &'a str,
},
OnboardingStepHeaderWelcome,
OnboardingStepHeaderLanguage,
OnboardingStepHeaderSetup,
OnboardingPanelTitle,
OnboardingIntroVersionLine {
v: &'a str,
},
OnboardingIntroBullet1,
OnboardingIntroBullet2,
OnboardingIntroBullet3,
OnboardingIntroPressEnter,
OnboardingIntroCtrlC,
OnboardingIntroCompactTagline,
OnboardingLanguageTitleBilingual,
OnboardingLanguagePrompt,
OnboardingLanguageOptionAuto,
OnboardingLanguageOptionEn,
OnboardingLanguageOptionZhCn,
OnboardingSetupTitle,
OnboardingNavHint,
OnboardingConfirmClear,
CmdWelcomeDescription,
VisionPreprocessSuccess {
char_count: usize,
},
TurnSummary {
done: &'a str,
turn_count: usize,
tool_call_count: usize,
duration: &'a str,
total_tokens: usize,
},
LoginQrHeader,
LoginUrlAfterQr,
LoginNoQrNoUrl,
LoginUrlOnly,
LoginCancelHint,
CtxUsageHeader,
CtxUsageNoTurns,
CtxUsageWaiting,
CtxProvider,
CtxCtxName,
CtxLabelSystemPrompt,
CtxLabelToolDefs,
CtxLabelColdZone,
CtxLabelMessages,
CtxLabelFree,
CtxMessagesInWindow {
n: usize,
},
CtxSystemPromptHeader,
CtxSystemPromptEmpty,
CtxTokensSuffix,
CompactNothingShort,
CompactStarting,
CompactNothingNoSavings {
before: &'a str,
after: &'a str,
},
CompactDropped {
messages: usize,
before: &'a str,
after: &'a str,
},
ModelNoImageSupport {
model: &'a str,
},
CtrlCAgainToExit,
HintMultiLineInput,
BgHelp,
BgListEmpty,
BgListHeader,
BgListRow {
slot: usize,
short_id: &'a str,
state: &'a str,
age: &'a str,
summary: &'a str,
},
BgStateRunning,
BgStateIdle,
BgStateDone,
BgStateCancelled,
BgStateError,
BgAgeNow,
BgAgeMinutes {
n: u64,
},
BgAgeHours {
n: u64,
},
BgAgeDays {
n: u64,
},
BgSlotLimitReached {
max: usize,
},
BgBackgroundCurrent {
new_id: &'a str,
slot: usize,
old_id: &'a str,
state: &'a str,
},
BgInvalidSlot {
slot: usize,
available: usize,
},
BgNoRuntimeClient,
BgResumed {
slot: usize,
short_id: &'a str,
},
BgPreviousForegroundMoved {
slot: usize,
},
BgDropped {
slot: usize,
short_id: &'a str,
},
BgTaskStarted {
slot: usize,
short_id: &'a str,
},
BgTaskTimedOut {
secs: u64,
},
BgTaskError {
error: &'a str,
},
BgTaskCancelled,
BgTaskNoSummary,
}Variants§
WelcomeBannerLine1
WelcomeBannerLine2
WelcomeOptionCodingPlan
WelcomeOptionCodingPlanHint
WelcomeOptionConfigureManually
WelcomeOptionConfigureManuallyHint
WelcomeOptionSkip
WelcomeOptionSkipHint
CodingPlanSetupFailed
CpReauthAfter401
Emitted inline by /codingplan and atomcode codingplan when the
stored OAuth token comes back 401 from the CodingPlan API
mid-flow. We re-run the same OAuth dance /login uses, save the
fresh token, and retry the whole setup once — this line tells
the user that’s what’s about to happen so the second
“Open this URL in any browser…” block isn’t a surprise.
ChatAuthExpired
Emitted by the OpenAI provider when an AtomGit-gateway chat
request returns 401 and our one automatic refresh_token attempt
either failed or the retried request still came back 401. The
raw server message (“Gitcode auth: token rejected”) is not
useful to end users — this replaces it with an actionable hint
pointing at /login. Non-atomgit gateways still surface the
verbatim server error so user-supplied API keys (sk-…) get
the diagnostic detail.
CpSetupHeader
CpLoggedIn
CpStepSkipped
CpLoginFailed
CpClaimed
CpClaimSuccessFallback
CpAlreadyClaimed
CpClaimFailed
CpClaimTierSucceeded
Per-tier cascade row — winning tier, fresh claim.
Example (zh-CN): ✓ CodingPlan Lite 领取成功
CpClaimTierAlreadyHeld
Per-tier cascade row — winning tier, server reported the user
already holds this tier or higher (duplicate=true).
CpClaimTierFailed
Per-tier cascade row — tier was refused (2xx with success=
false / 5xx / transport). reason is the server’s human-
readable message (e.g. 额度已满, 暂无开放) or a short
rendering of the transport error.
CpAddedProviders
CpLocked
Locked-model row. name is expected to be pre-decorated with
U+0336 combining strikethrough by the caller (see
coding_plan::setup::strikethrough), so the template itself
stays a plain format! and survives every renderer’s CSI
scrubber without needing SGR escapes.
CpProviderRow
CpDefaultSuffix
CpVisionAuto
CpVisionUserSupplied
CpVisionCleared
CpModelsSkipped
CpModelsFailed
CpStatusHeader
CpPlanPending
CpPlanActive
CpUsageLine
CpWindowQuotaExhausted
CpWindowQuotaHint
CpStatusFetchSkipped
CpStatusFetchFailed
CpOfficialBuildRequired
Open-source build attempted to use a CodingPlan provider. The signing capability is not present in this build, so the request can’t reach the AtomGit LLM gateway. Surface a clear hint pointing to the official Releases page.
CpAuthRequired
Official build, but no stored auth (or auth has empty
user.id / access_token). The signing path needs these
fields to derive a per-user key; without them the request
can’t be signed. Surface a “please run /codingplan to log
in” hint instead of the misleading “official build required”
message — the user IS on an official build.
CpSignStaleClockSkew
Server returned ATOMCODE_SIG_STALE — the request’s signed
timestamp is outside the ±5min window the gateway accepts.
Typically caused by an unsynced local clock.
CpSignReplayPersisted
Server returned ATOMCODE_SIG_REPLAY even after the client’s
one automatic retry with a fresh nonce. Surface a “please retry
the command” hint — usually self-heals on the next attempt.
CpSignVersionTooOld
Server returned ATOMCODE_SIG_INVALID AND the alg_version is
no longer in the server’s accepted_versions set — the client
binary is too old. Force-upgrade hint.
CpUpgradeRequired
Server returned 426 Upgrade Required — emergency rotation
playbook in progress; this build cannot continue without
upgrading.
ErrUnsupportedLocale
StatusNoProvider
StatusUpgradeHint
StatusModelNotConfigured
StatusClipboardImageHint
macOS / Linux variant: “Image in clipboard · ctrl+v to paste”.
Ctrl+V is intercepted by Windows Terminal / conhost before
reaching atomcode, so Windows builds emit
StatusClipboardImageHintSlash instead.
StatusClipboardImageHintSlash
Windows variant: “Image in clipboard · /paste”. Tells the
user to fall back on the /paste slash command, which works
in every terminal regardless of host keybinds.
StatusBody
StatusCpNotSignedIn
StatusCpFetchFailed
StatusCpNoActive
StatusCpLine
StatusCpUsage
StatusCpWindowExhausted
StatusCpWindowHint
StatusInstructionFilesHeader
StatusInstructionPresent
StatusInstructionMissing
LoginSignedInWithCpHint
HelpAvailableCommands
KeybindingsHelp
Full keyboard-shortcuts reference dumped to scrollback by the
/keys slash command. Carries every line of the panel as a
single multi-line string so translators can adjust column
alignment per locale without rebuilding rows in Rust.
ProviderWizardHeader
ProviderWizardCancelled
ProviderMenuAdd
ProviderMenuAddDesc
ProviderMenuEdit
ProviderMenuEditDesc
ProviderMenuDelete
ProviderMenuDeleteDesc
ProviderMenuSetDefault
ProviderMenuSetDefaultDesc
ProviderNoProviders
ProviderDeleteConfirm
ProviderDeleted
ProviderDeleteKept
ProviderDefaultSet
ProviderAdded
ProviderUpdated
ProviderStepName
ProviderStepType
ProviderStepTypeWithHint
ProviderStepBaseUrl
ProviderStepBaseUrlWithHint
ProviderDefaultHint
ProviderStepApiKey
ProviderStepApiKeyWithHint
ProviderStepApiKeySet
ProviderStepApiKeyUnset
ProviderStepModel
ProviderStepModelWithHint
ProviderNameEmpty
ProviderUnknownType
ProviderUnknownTypeEdit
ProviderModelEmpty
ProviderEditKeep
ModelSwitched
SessionLoadFailed
SessionResumedLabel
SessionTimeJustNow
SessionTimeMinAgo
SessionTimeHourAgo
SessionTimeDayAgo
SessionMsgCount
SessionNameEmpty
SessionNameTooLong
SessionNameControlChars
SessionListFailed
SessionRenamed
SessionSaveFailed
SessionNoneSelected
SessionRenameEditing
DirCurrent
DirNotExists
DirChanged
DirNotADirectory
IssueCancelled
IssueNewOn
IssueStep1
IssueStep2
IssueTitleConfirmed
IssueRequiredField
IssueCreated
IssueCreateFailed
LanguageSwitched
Confirmation rendered to scrollback after the user picks a
locale via /language (modal or arg). Already includes the
leading “ “ indent and trailing “\n” so the call site is just
renderer.render(UiLine::CommandOutput(t(Msg::LanguageSwitched { ... }).into_owned())).
IdleHintPrefix
“type something, or press “ (text before the slash)
IdleHintSlash
“/” (the slash shortcut itself — kept separate for accent styling)
IdleHintSuffix
“ to browse commands“ (text after the slash)
IdleHintFull
Complete plain-text version: “type something, or press / to browse commands”
IdleHintProvider
“/provider” command label
IdleHintProviderSuffix
“to add a custom model” (text after /provider)
IdleHintProviderFull
Complete plain-text version: “/provider to add a custom model”
IdleHintCodingplan
“/codingplan” command label
IdleHintCodingplanSuffix
“to claim a free token quota” (text after /codingplan)
IdleHintCodingplanFull
Complete plain-text version: “/codingplan to claim a free token quota”
CmdSwitchedPlanMode
CmdSwitchedBuildMode
CmdNewSession
CmdNoProviders
CmdNoSessions
CmdUnknownCommand
CmdLoginFailed
CmdLogoutDone
CmdLogoutFailed
CmdWhoamiNotSignedIn
CmdReloadDone
CmdReloadFailed
CmdUndoNotSupported
CmdNoChanges
CmdCheckingUpdate
CmdNoActiveProvider
ApprovalPromptAlt
ApprovalWaitingLabel
ApprovalAllow
ApprovalAlways
ApprovalDeny
Cancelled
ErrorPrefix
UpgradeSuccess
UpgradeManifestFetched
UpgradeDownloading
UpgradeVerifying
UpgradeReplacing
UpgradeDone
UpgradeAlreadyLatest
UpgradeFailed
UpgradeRolledBack
KbdHintMacos
KbdHintOther
JediTermFallback
LegacyConhostFallback
BackgroundComplete
BackgroundFailed
BackgroundFilesEdited
ConfigProviderLabel
CostReport
ThinkStatus
ThinkEnabled
ThinkDisabled
ThinkBudgetSet
ThinkBudgetTooSmall
ThinkBudgetUsage
ThinkUsage
RememberUsage
ForgetUsage
BackgroundUsage
InitAlreadyExists
InitWrote
InitFailed
CdWorkingDir
DiffFailed
UpgradeUnknownArg
SkillsNone
SkillsAvailable
SkillUnknown
McpReloading
McpConnecting
McpConnectingServer
McpNoServersConfigured
McpClearedReconnecting
McpClearedNoServers
McpToolsUsage
McpToolsListing
McpNoRegistry
McpServersHeader
McpReloadFailed
McpOAuthLoginUsage
McpOAuthLogoutUsage
McpOAuthLoadConfigFailed
McpOAuthServerNotFound
McpOAuthStarting
McpOAuthSaved
McpOAuthFailed
McpOAuthTokenRemoved
McpOAuthNoToken
McpOAuthLogoutFailed
McpServerConnected
McpServerFailed
LspServerStarted
LspServerFailed
WorktreeUsage
WorktreeCreateUsage
WorktreeCreated
WorktreeCreateFailed
WorktreeNoActive
WorktreeListFailed
WorktreeActiveHeader
WorktreeHasChanges
WorktreeClean
WorktreeCurrent
WorktreeDoneBack
WorktreeDoneMergeHint
WorktreeNoSession
WorktreeCleanupUsage
WorktreeCleaned
WorktreeCleanedSwitched
WorktreeCleanupUncommitted
WorktreeCleanupFailed
HelpCustomCommandsHeader
HelpCustomNone
HelpCustomCreateHint
HelpSourceGlobal
HelpSourceProject
SetupHeader
Header line: “✅ Setup complete — 3 installed, 1 skipped, 0 failed · 120ms”
SetupInstalledLabel
“Installed:” section label in setup report.
SetupSkippedLabel
“Skipped:” section label in setup report.
SetupFailedLabel
“Failed:” section label in setup report.
SetupInstalledRow
Per-item installed row: “ ✓ skill:atomcode-automation-recommender → /path“
SetupSkippedRow
Per-item skipped row: “ - skill:xyz (hash match)“
SetupFailedRow
Per-item failed row: “ ✗ mcp:xyz — error message“
CmdSetupTip
“💡 Tip: Run /setup …” — first-run hint shown above the prompt when the project has no setup state yet.
CmdSetupRunning
“Running atomcode setup…” — shown while setup is in progress.
CmdSetupSkillsReloaded
“Skills reloaded — N available” — after setup completes and skills are reloaded.
CmdSetupError
“setup error: {e}” — when setup::run returns an error.
CmdSetupRunningSkill
“Running setup skill…” — after seeds installed and skill is auto-invoked.
CmdSetupSkillMissing
“Setup skill not found…” — when the setup skill cannot be resolved or expanded.
PluginUsage
PluginMarketplaceUsage
PluginInstallUsage
PluginUninstallUsage
PluginNoMarketplaces
PluginMarketplacesHeader
PluginNoInstalled
PluginInstalledHeader
PluginMarketplaceCloning
PluginMarketplaceRemoved
PluginMarketplaceRemoveFailed
PluginMarketplaceUpdating
PluginMarketplaceListFailed
PluginInstalling
PluginUninstalled
PluginUninstallFailed
PluginListFailed
CmdDescSetup
CmdDescCodingplan
CmdDescResume
CmdDescRename
CmdDescLogin
CmdDescLogout
CmdDescWhoami
CmdDescModel
CmdDescProvider
CmdDescStatus
CmdDescConfig
CmdDescReload
CmdDescCd
CmdDescInit
CmdDescBg
CmdDescBackground
CmdDescDiff
CmdDescClear
CmdDescSession
CmdDescCost
CmdDescContext
CmdDescCompact
CmdDescRemember
CmdDescForget
CmdDescMemory
CmdDescMcp
CmdDescUndo
CmdDescWorktree
CmdDescUpgrade
CmdDescIssue
CmdDescPlan
CmdDescBuild
CmdDescThink
CmdDescHelp
CmdDescKeys
CmdDescLanguage
CmdDescQuit
CmdDescSkills
CmdDescPlugin
CmdDescPaste
Description for the /paste slash command — pulls a clipboard
image and attaches it as [Image #N]. Exists for Windows
users whose Ctrl+V is swallowed by Windows Terminal / conhost
before reaching the app, but works on every platform.
CmdPasteNoImage
/paste failed because the clipboard holds no image. Shown
in scrollback as an error line so the user isn’t left
wondering whether the command did anything.
ConfigSaveFailed
OnboardingStepHeaderWelcome
OnboardingStepHeaderLanguage
OnboardingStepHeaderSetup
OnboardingPanelTitle
OnboardingIntroVersionLine
OnboardingIntroBullet1
OnboardingIntroBullet2
OnboardingIntroBullet3
OnboardingIntroPressEnter
OnboardingIntroCtrlC
OnboardingIntroCompactTagline
OnboardingLanguageTitleBilingual
OnboardingLanguagePrompt
OnboardingLanguageOptionAuto
OnboardingLanguageOptionEn
OnboardingLanguageOptionZhCn
OnboardingSetupTitle
OnboardingConfirmClear
CmdWelcomeDescription
VisionPreprocessSuccess
Vision preprocessor success banner. Shown as a body line right
after a VL turn finishes, in the form
✓ VL recognised image, returned N chars
(English) /
✓ VL 识别图片成功,返回 N chars
(zh-CN). The model key trails as a dim suffix in the renderer
— kept out of this message so the wrapper styling stays
renderer-side.
TurnSummary
TurnComplete separator summary, e.g.
✓ Shipped · 3 rounds · 2 tools · 6.8s · 285 tokens
done is a playful English verb from DONE_LABELS — kept
English in every locale because translated cute verbs read
awkward; the structural words (rounds/tools/tokens)
localise. duration is a pre-formatted human string (e.g.
“6.8s”).
LoginQrHeader
Header above the QR block when scanning with WeChat is the expected flow. Includes the leading “ “ indent and trailing “\n\n” paragraph break that the caller used to inline.
LoginUrlAfterQr
Separator + URL prelude shown below the QR block when both QR and URL fallback are available. Leading “\n\n “ and trailing “\n “ are part of the template.
LoginNoQrNoUrl
QR + URL both unavailable (Unicode-incapable terminal AND a platform where URL-based login doesn’t work, e.g. OHOS).
LoginUrlOnly
URL-only header when QR can’t render but URL login works. Leading “ “ indent and trailing “\n “ before the URL.
LoginCancelHint
Footer line: “Press ESC to cancel” with surrounding blank-line padding.
CtxUsageHeader
CtxUsageNoTurns
CtxUsageWaiting
CtxProvider
CtxCtxName
CtxLabelSystemPrompt
CtxLabelToolDefs
CtxLabelColdZone
CtxLabelMessages
CtxLabelFree
CtxMessagesInWindow
CtxSystemPromptHeader
CtxSystemPromptEmpty
CtxTokensSuffix
Used in the “used/window tokens (pct)” line below the bar.
CompactNothingShort
CompactStarting
CompactNothingNoSavings
CompactDropped
ModelNoImageSupport
Surfaced when the user pastes/attaches an image but the active
model can’t accept images AND no vision_preprocessor_provider
is configured. model is the current model identifier.
CtrlCAgainToExit
Confirmation hint after the first Ctrl+C on an empty buffer. “ (press Ctrl+C again to exit)\n“ — leading indent + trailing newline are part of the template.
HintMultiLineInput
Startup hint shown on terminals where Kitty CSI-u keyboard
disambiguation isn’t available, telling the user the
guaranteed-works \<Enter> multi-line trick. Multi-line
payload with leading indent + trailing paragraph break.
BgHelp
Help text for /bg help. Multi-line string with leading indent
and trailing newlines baked in.
BgListEmpty
Empty state for /bg list.
BgListHeader
Table header for /bg list. Trailing newline baked in.
BgListRow
Row format for /bg list. state is the localised state label,
age is the humanised age string, summary is the session name.
BgStateRunning
Localised label for RuntimeState::Running.
BgStateIdle
Localised label for RuntimeState::Idle.
BgStateDone
Localised label for RuntimeState::Done.
BgStateCancelled
Localised label for RuntimeState::Cancelled.
BgStateError
Localised label for RuntimeState::Error.
BgAgeNow
Age string: less than 60 seconds.
BgAgeMinutes
Age string: minutes. n is the number of minutes.
BgAgeHours
Age string: hours. n is the number of hours.
BgAgeDays
Age string: days. n is the number of days.
BgSlotLimitReached
Error: too many background slots. max is the slot limit.
BgBackgroundCurrent
Output after /bg sends the current session to background.
new_id is the new foreground session short id,
slot is the background slot number,
old_id is the backgrounded session short id,
state is the localised runtime state.
BgInvalidSlot
Error: invalid slot number. slot is the requested slot,
available is the number of available slots.
BgNoRuntimeClient
Error: background slot has no runtime client.
BgResumed
Output after /bg <N> resumes a background session.
slot is the resumed slot, short_id is the session short id.
BgPreviousForegroundMoved
When resuming moves the previous foreground into a background slot.
slot is the new background slot number.
BgDropped
Output after /bg drop <N>. slot is the dropped slot,
short_id is the session short id.
BgTaskStarted
Output after /background <task> starts a one-shot task.
slot is the background slot, short_id is the session short id.
BgTaskTimedOut
Background task timed out. secs is the timeout in seconds.
BgTaskError
Background task internal error. error is the error message.
BgTaskCancelled
Background task was cancelled.
BgTaskNoSummary
Background task finished but produced no summary text.
Auto Trait Implementations§
impl<'a> Freeze for Msg<'a>
impl<'a> RefUnwindSafe for Msg<'a>
impl<'a> Send for Msg<'a>
impl<'a> Sync for Msg<'a>
impl<'a> Unpin for Msg<'a>
impl<'a> UnsafeUnpin for Msg<'a>
impl<'a> UnwindSafe for Msg<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more