feat(keyboard): ship AI hint carousel, home library cards, and clipboard polish

Rotate AI idle suggestions with optional remote packs, move history/dictionary onto self-sizing Home preview cards, harden clipboard capture/prompting, and simplify keyboard chrome by dropping most liquid-glass shadows.
This commit is contained in:
Rocky
2026-08-13 01:00:51 +08:00
parent fd6e0d3e7e
commit 9f308fadd2
202 changed files with 10897 additions and 5962 deletions
@@ -17,4 +17,25 @@ final class TranscriptLanguageDetectorTests: XCTestCase {
XCTAssertEqual(TranscriptLanguageDetector.cjkRatio("12345"), 0)
XCTAssertEqual(TranscriptLanguageDetector.cjkRatio(""), 0)
}
func testHanRangeBoundariesRemainStable() {
let hanScalars = [0x3400, 0x4DBF, 0x4E00, 0x9FFF, 0xF900, 0xFAFF]
.compactMap(UnicodeScalar.init)
.map(String.init)
.joined()
XCTAssertEqual(TranscriptLanguageDetector.cjkRatio(hanScalars), 1)
XCTAssertTrue(RimePinyinAnnotator.containsCJK(hanScalars))
XCTAssertFalse(PersonalDictionary.isEnglishTypingHotword("产品GPT"))
}
func testKanaHangulAndFullwidthLatinAreNotHanIdeographs() {
let nonHan = "こんにちは안녕하세요A"
XCTAssertEqual(TranscriptLanguageDetector.cjkRatio(nonHan), 0)
XCTAssertFalse(RimePinyinAnnotator.containsCJK(nonHan))
XCTAssertTrue(PersonalDictionary.isEnglishTypingHotword("PT"))
}
func testJapaneseTextContainingHanKeepsCurrentHanSignal() {
XCTAssertTrue(TranscriptLanguageDetector.prefersChineseGuidance("日本語"))
}
}