chore(release): bump version to 2.1.6 (build 131)
Version: CURRENT_PROJECT_VERSION 130 -> 131 (project.yml, AGENTS.md, READMEs, docs/llms.txt). fix(flow): host-app identification now compiles in every build configuration (Debug, TestFlight, Release). The arbiter probe and HostAppIdentity were DEBUG-only, so TestFlight/App Store builds never knew the host bundle id and could not auto-return after a startflow handoff. Debug-only logging and the Home test card are unchanged. Also includes the pending work in the tree: - Home: single account/setup card surface (HomeAccountSurfacePolicy/Views) - Wide screens: voice key row and centred mic placement, iPhone Duo layout - Keyboard: clipboard skill ranking and AI skill layout updates - Debug: account session handoff to the Simulator (+ import script) - Docs: portfolio assets, privacy policy URL, site/README refresh
This commit is contained in:
@@ -182,6 +182,64 @@ final class AIClipboardSkillTests: XCTestCase {
|
||||
)
|
||||
}
|
||||
|
||||
func testTranslateToTargetUsesConfiguredTargetLanguage() {
|
||||
let prompt = AIClipboardSkillCatalog.instruction(
|
||||
skillID: AIClipboardSkillCatalog.translateToTargetID,
|
||||
locale: "en",
|
||||
translationTargetLocaleId: "ja",
|
||||
preferredLanguages: ["zh-Hans"]
|
||||
)
|
||||
XCTAssertTrue(prompt.contains("Japanese"))
|
||||
XCTAssertFalse(prompt.contains("Chinese"))
|
||||
}
|
||||
|
||||
func testTranslateToTargetPromptFallsBackWhenTargetIsOff() {
|
||||
let prompt = AIClipboardSkillCatalog.instruction(
|
||||
skillID: AIClipboardSkillCatalog.translateToTargetID,
|
||||
locale: "en",
|
||||
translationTargetLocaleId: TranslationLanguageCatalog.offLocaleId
|
||||
)
|
||||
XCTAssertTrue(prompt.contains("English"))
|
||||
}
|
||||
|
||||
func testTranslateToTargetButtonTitleNamesTargetAndHidesWhenOff() {
|
||||
XCTAssertEqual(
|
||||
AIClipboardSkillCatalog.translateToTargetButtonTitle(
|
||||
translationTargetLocaleId: "en",
|
||||
uiLanguage: .chinese
|
||||
),
|
||||
"翻译英语"
|
||||
)
|
||||
XCTAssertEqual(
|
||||
AIClipboardSkillCatalog.translateToTargetButtonTitle(
|
||||
translationTargetLocaleId: "ja",
|
||||
uiLanguage: .english
|
||||
),
|
||||
"To Japanese"
|
||||
)
|
||||
XCTAssertNil(
|
||||
AIClipboardSkillCatalog.translateToTargetButtonTitle(
|
||||
translationTargetLocaleId: TranslationLanguageCatalog.offLocaleId,
|
||||
uiLanguage: .english
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
func testPolishKeepsOriginalLanguageAndCarriesNeverAnswerBoundary() throws {
|
||||
let skill = try XCTUnwrap(
|
||||
AIClipboardSkillCatalog.skill(id: AIClipboardSkillCatalog.polishOriginalID)
|
||||
)
|
||||
let prompt = AIClipboardSkillCatalog.instruction(
|
||||
for: skill,
|
||||
locale: "en",
|
||||
translationTargetLocaleId: "ja"
|
||||
)
|
||||
XCTAssertTrue(prompt.contains("without changing its language"))
|
||||
XCTAssertTrue(prompt.contains("grammar"))
|
||||
XCTAssertTrue(prompt.contains("Non-negotiable boundary"))
|
||||
XCTAssertFalse(prompt.contains("Japanese"))
|
||||
}
|
||||
|
||||
func testSummarizeAsksForOverviewNotShortening() {
|
||||
let prompt = AIClipboardSkillCatalog.instruction(
|
||||
skillID: AIClipboardSkillCatalog.summarizeID,
|
||||
|
||||
Reference in New Issue
Block a user