feat: cursor navigation, key sounds, dictionary tooling, key security

Batch of in-progress app work from the working tree.

- feat(keyboard): CursorNavigation + CursorDragPad for caret movement;
  KeyboardSoundFeedback for system key click sounds
- feat(dictionary): DictionaryAliasGenerator + PersonalDictionaryEntrySheet;
  TranscriptPostProcessor quality gate; retire DictionaryLearner
- feat(ui): TabBarVisibility handling; drop PageHeaderRow /
  PageHeaderConfirmButton; refresh views and localizable strings
- fix(security): move the hardcoded DeepSeek key out of
  PreconfiguredKeys.swift into a gitignored PreconfiguredKeys.local.swift
  (seeded from .example by generate-xcodeproj.sh)
- docs(agents): add Conventional Commits versioning + bilingual changelog rules
- chore(gitignore): ignore PreconfiguredKeys.local.swift, .cache/, pycache

Custom language model / lexicon work stays on
feature/custom-language-model-asr. Changelog bullets added under
[Unreleased]; no version bump.
This commit is contained in:
Rocky
2026-07-05 18:27:23 +08:00
parent 074e24d87f
commit 05e005e9ce
60 changed files with 3247 additions and 1388 deletions
+14
View File
@@ -21,6 +21,20 @@ if [[ ! -f "$SIGNING_LOCAL" ]]; then
echo "Edit DEVELOPMENT_TEAM there if you use a personal Apple Developer account."
fi
# Local-engine DeepSeek key (gitignored). XcodeGen compiles this file;
# the example ships a placeholder so fresh clones build after copy.
PRECONFIG_LOCAL="$ROOT/OSGKeyboardShared/Services/PreconfiguredKeys.local.swift"
PRECONFIG_EXAMPLE="$ROOT/OSGKeyboardShared/Services/PreconfiguredKeys.local.swift.example"
if [[ ! -f "$PRECONFIG_LOCAL" ]]; then
if [[ ! -f "$PRECONFIG_EXAMPLE" ]]; then
echo "error: missing $PRECONFIG_EXAMPLE" >&2
exit 1
fi
cp "$PRECONFIG_EXAMPLE" "$PRECONFIG_LOCAL"
echo "Created $PRECONFIG_LOCAL from PreconfiguredKeys.local.swift.example"
echo "Edit deepseek in that file before using the local engine's built-in polish."
fi
xcodegen generate
if python3 - "$PBXPROJ" <<'PY'