fix(settings): show "Up to date" for current skills in sidebar

Orchestration and Computer Use showed a green "Installed" badge in the
settings sidebar even when freshness tracking knows the copy is current.
Add an "up-to-date" nav status so a present, no-update skill reads
"Up to date" (pairing with the existing "Update available" state), while
Voice — which tracks model readiness, not skill freshness — keeps
"Installed".
This commit is contained in:
Brennan Benson
2026-07-16 16:39:51 -07:00
parent dd0f4c39c8
commit e192b2a774
3 changed files with 12 additions and 3 deletions
@@ -216,7 +216,9 @@ function getSkillNavInstallStatus(skill: {
if (!skill.installed) {
return 'install'
}
return skill.updateAvailable ? 'update-available' : 'installed'
// A freshness-tracked skill that's present with no eligible update is current, so it
// reads "Up to date" (pairs with "Update available"). Voice sets 'installed' directly.
return skill.updateAvailable ? 'update-available' : 'up-to-date'
}
function hasReadyVoiceModel(
@@ -155,6 +155,8 @@ export function SettingsSidebar({
)
case 'installed':
return translate('auto.components.settings.AgentSkillSetupPanel.9fcebceb2a', 'Installed')
case 'up-to-date':
return translate('auto.components.skills.SkillFreshnessStatusPill.upToDate', 'Up to date')
case 'update-available':
return translate(
'auto.components.skills.SkillFreshnessStatusPill.updateAvailable',
@@ -167,7 +169,7 @@ export function SettingsSidebar({
const installStatusClassName = (status: SettingsNavInstallStatus): string =>
cn(
'ml-auto shrink-0 rounded-full border px-1.5 py-0.5 text-[10px] font-medium leading-none',
status === 'installed'
status === 'installed' || status === 'up-to-date'
? 'border-status-success-border bg-status-success-background text-status-success'
: status === 'update-available'
? 'border-amber-500/40 bg-amber-500/10 text-amber-700 dark:text-amber-300'
@@ -3,7 +3,12 @@ import type { LucideProps } from 'lucide-react'
import type { SettingsSearchEntry } from '@/components/settings/settings-search'
export type SettingsNavIcon = ComponentType<LucideProps>
export type SettingsNavInstallStatus = 'install' | 'installed' | 'update-available' | 'checking'
export type SettingsNavInstallStatus =
| 'install'
| 'installed'
| 'up-to-date'
| 'update-available'
| 'checking'
export type SettingsNavTarget =
| 'general'