feat(keyboard): improve typing, voice flow, and polish reliability

Reduce extension memory pressure and delivery races while adding richer candidates, tactile feedback, and safer two-level creative polishing.
This commit is contained in:
Rocky
2026-08-05 21:39:31 +08:00
parent 38e5ad570d
commit 31f5937a7f
177 changed files with 8343 additions and 3904 deletions
@@ -13,7 +13,7 @@ final class CandidatePanelExpandTests: XCTestCase {
func testChevronRequiresChineseAndAtLeastTwoCandidates() {
let engine = StubRimeEngine()
let typing = TypingSessionController(engine: engine)
let typing = TypingSessionController(engine: { engine })
XCTAssertFalse(typing.canExpandCandidatePanel)
@@ -36,7 +36,7 @@ final class CandidatePanelExpandTests: XCTestCase {
func testToggleExpandAndSelectCollapses() {
let engine = StubRimeEngine()
let typing = TypingSessionController(engine: engine)
let typing = TypingSessionController(engine: { engine })
_ = typing.handleKey("n")
XCTAssertTrue(typing.canExpandCandidatePanel)
@@ -57,7 +57,7 @@ final class CandidatePanelExpandTests: XCTestCase {
func testPanelCollapsesWhenCandidatesDropBelowTwo() {
let engine = StubRimeEngine()
let typing = TypingSessionController(engine: engine)
let typing = TypingSessionController(engine: { engine })
_ = typing.handleKey("n")
typing.toggleCandidatePanelExpanded()
@@ -75,7 +75,7 @@ final class CandidatePanelExpandTests: XCTestCase {
func testLeaveTypingModeCollapsesPanel() {
let engine = StubRimeEngine()
let typing = TypingSessionController(engine: engine)
let typing = TypingSessionController(engine: { engine })
_ = typing.handleKey("n")
typing.toggleCandidatePanelExpanded()
XCTAssertTrue(typing.isCandidatePanelExpanded)