fix(android): localize skill workshop statuses

This commit is contained in:
Vincent Koc
2026-07-12 11:13:29 +02:00
parent de0efd5445
commit a98ce19e59
2 changed files with 26 additions and 2 deletions

View File

@@ -442,7 +442,7 @@ private fun SkillWorkshopProposalRow(
}
Column(horizontalAlignment = Alignment.End, verticalArrangement = Arrangement.spacedBy(4.dp)) {
ClawStatusPill(
text = if (busy) "loading" else proposal.status,
text = skillWorkshopStatusLabel(if (busy) "loading" else proposal.status),
status = skillWorkshopStatusPill(proposal.status),
)
Text(
@@ -497,7 +497,10 @@ private fun SkillWorkshopProposalDetail(
overflow = TextOverflow.Ellipsis,
)
}
ClawStatusPill(text = proposal.status, status = skillWorkshopStatusPill(proposal.status))
ClawStatusPill(
text = skillWorkshopStatusLabel(proposal.status),
status = skillWorkshopStatusPill(proposal.status),
)
}
proposal.description?.let { description ->
Text(text = description, style = ClawTheme.type.body, color = ClawTheme.colors.textMuted)
@@ -656,6 +659,16 @@ internal fun skillWorkshopProposalActionEnabled(
status: String,
): Boolean = isConnected && operatorAdminScopeAvailable && !busy && status == "pending"
internal fun skillWorkshopStatusLabel(status: String): String =
when (status) {
"pending" -> nativeString("Pending")
"quarantined", "stale" -> nativeString("Held")
"applied" -> nativeString("Applied")
"rejected" -> nativeString("Rejected")
"loading" -> nativeString("Loading")
else -> status
}
private fun skillWorkshopFilterLabel(filter: String): String =
when (filter) {
"pending" -> nativeString("Pending")

View File

@@ -291,6 +291,17 @@ class ShellScreenLogicTest {
assertFalse(skillWorkshopStatusMatchesFilter("applied", "held"))
}
@Test
fun skillWorkshopStatusLabelsMapKnownCodesAndPreserveUnknownValues() {
assertEquals("Pending", skillWorkshopStatusLabel("pending"))
assertEquals("Held", skillWorkshopStatusLabel("quarantined"))
assertEquals("Held", skillWorkshopStatusLabel("stale"))
assertEquals("Applied", skillWorkshopStatusLabel("applied"))
assertEquals("Rejected", skillWorkshopStatusLabel("rejected"))
assertEquals("Loading", skillWorkshopStatusLabel("loading"))
assertEquals("future_status", skillWorkshopStatusLabel("future_status"))
}
@Test
fun skillWorkshopVisibleProposalsAreKeyedBySelectedAgentScope() {
val mainProposal = skillWorkshopProposal("main-proposal", "pending")