feat(keyboard): add clipboard AI skills, hint keywords, and voice session fixes

Idle chips show entities with category icons; a fresh copy surfaces Reply/Summarize/Translate; abort/cancel/empty-tap no longer leave the mic stuck.
This commit is contained in:
Rocky
2026-08-13 15:47:32 +08:00
parent 9f308fadd2
commit 631617ee53
48 changed files with 1627 additions and 345 deletions
@@ -110,6 +110,11 @@ final class KeyboardStateTests: XCTestCase {
KeyboardState.Phase.ErrorKind.fromFlowTranscription(flowError),
.hostTranscriptionFailed("asr failed")
)
let discarded = FlowTranscriptionError(message: "", kind: .discardedEmpty)
XCTAssertEqual(
KeyboardState.Phase.ErrorKind.fromFlowTranscription(discarded),
.noSpeechDetected
)
}
func testInputModeIsPolishOnly() {