Commit Graph
6 Commits
Author SHA1 Message Date
Zhongshu Audit fbc3bef13d chore: remove dead AudioCaptureService and clarify legacy class scope
OSGKeyboardExt/Services/AudioCaptureService.swift was a true
duplicate of OSGKeyboardShared/Services/LiveDictationController
that was replaced by FlowContinuousCapture in v0.1.1. It is
referenced from no Swift code (only from comments), so removing
it has zero runtime impact.

LiveDictationController and DictationBridge are kept (still used
by PreviewASRController, DictationCaptureView, KeyboardPreviewSheet
and the host-app one-shot dictation handoff path), but their file
headers now state the v0.1.2 status explicitly so future readers
do not try to "modernize" them away.

Verified by:
  grep -rn "AudioCaptureService" --include="*.swift" .  -> no hits
  xcodebuild build  -> BUILD SUCCEEDED

Refs: AUDIT_APPSTORE.md P0-3
2026-06-20 21:33:33 +08:00
Zhongshu Audit 842777ea4a chore(ci): pin Xcode 16.4 to fix Xcode_16.0.app not found
The macos-14 runner image no longer ships Xcode 16.0; the default
is now Xcode 16.4. Pin the runner to that version explicitly so
`xcode-select -s /Applications/Xcode_16.4.app` succeeds.

Also drops the build matrix `xcode` field, since the runner only
has one Xcode available and we do not test across multiple Xcode
versions on the audit/appstore-prep branch.

Refs: AUDIT_APPSTORE.md P0-1
2026-06-20 21:32:46 +08:00
Zhongshu 013c498a12 [P0-④] DEBUG cleanup + README / CHANGELOG typos
DEBUG cleanup (rolled into P0-① and P0-② already, formalised here):
- All 3 surviving `print(` calls live inside `#if DEBUG` blocks:
    * OSGKeyboardApp.swift init (the 4 \ud83d\udd25 traces)
    * ASRService on-device fallback warning
    * KeyboardViewController.loadPersistedLocale masked-config dump
  The 2 in AppGroup.swift + LLMClient.swift were already DEBUG-wrapped.

Docs:
- README.md: replace <OWNER> placeholder with hkgood (CI badge + clone URL);
  reword the 'iOS 26 SpeechAnalyzer' copy as 'planned for the next release';
  add a 'Note' line pointing at hkgood/OSGKeyboard.
- README.zh.md: same edits in Chinese — 'iOS 26+ 的 SpeechAnalyzer 计划下版接入'.

CHANGELOG (already fixed in P0-② commit): the old 'group.com.osgkeyboard.ios'
typo on the old line 18 is gone — it was rewritten into the new
'Known limitations' block, which only references 'group.com.osgkeyboard.shared'
in spirit.

xcodebuild iOS Simulator: SUCCEEDED
2026-06-18 10:55:23 +08:00
Zhongshu 2e2d8e33b3 [P0-③] API Key data flow fix
- AppGroup.defaults: in DEBUG, missing App Group is a hard fatalError
  with a precise remediation message (was a soft print + .standard
  fallback, which desynced the keyboard extension from the main App).
  Release keeps the fallback + NSLog so end-users still get a usable app.
- KeyboardViewController.loadPersistedLocale now prints a masked DEBUG
  view of the live App Group config (provider, baseURL, masked key,
  model, mode, locale) so the extension's view is visible in the
  device console.
- KeyboardViewController.handleFinalTranscript now routes by typed error:
    noAPIKey  → red error '未配置 API Key · 请在主 App 设置中填写'
    http 401  → red error 'API Key 无效 (401) · 请检查主 App 设置'
    http 429  → red error 'API 限流 (429) · 请稍后再试'
    other     → insert raw transcript + generic error badge
- APISettingsCard gains a 'Test connection' button that runs a single
  client.polish('ping') round-trip and surfaces the typed result inline.
- PolishingService.timeout raised 12s → 15s to match LLMClient.request
  timeout (was racing and discarding successful responses in 12–15s).
- Tests: 4 new cases (HTTP 429, transport timeout, App Group cross-process,
  AppGroupStore→LLMClient noAPIKey). All 8 tests pass on iPhone 16e sim.

xcodebuild iOS Simulator: SUCCEEDED
xcodebuild test: 8/8 passed
2026-06-18 10:50:02 +08:00
Zhongshu e93bab50b4 [P0-②] On-device ASR three-piece set
- Add NSSpeechRecognitionUsageDescription to both target Info.plists
- KeyboardViewController.requestSpeechPermission() wraps
  SFSpeechRecognizer.requestAuthorization
- pressBegan() now requests Speech permission right after mic permission
- ASRService emits a DEBUG warning when recognizer.supportsOnDeviceRecognition
  is false so cloud fallback is visible during dev
- CHANGELOG: move iOS 26 SpeechAnalyzer out of Unreleased into [0.2.0] Planned,
  so the iOS 18 SFSpeechRecognizer path is the only ASR shipped in v0.1

xcodebuild iOS Simulator: SUCCEEDED
2026-06-18 10:41:20 +08:00
Zhongshu e0b92ff35a [P0-①] Theme follows system + keyboard background transparent
- Split Palette.dark / Palette.light into a ThemePalette struct
- Add EnvironmentKey<ThemePalette> + ThemedRoot<Content>
- Wrap OSGKeyboardApp root in ThemedRoot so main App follows system
- Remove 6 .preferredColorScheme(.dark) overrides from main App views
- KeyboardRootView drops its Palette.background fill, uses .background(Color.clear)
- Drop the unused 'background' computed property from KeyboardRootView
- Legacy 'Palette.xxx' static accessors still resolve to dark values,
  so 2000 lines of existing call sites stay untouched

xcodebuild iOS Simulator: SUCCEEDED
2026-06-18 10:38:23 +08:00