Commit Graph
100 Commits
Author SHA1 Message Date
Rocky e4ff49533c Merge pull request #39 from hkgood/feature/clipboard-voice-command
Feature/clipboard voice command
2026-08-07 16:11:53 +08:00
Rocky f197b68573 feat(keyboard): add clipboard voice command mode
Long-press mic runs ASR as an instruction over eligible clipboard text,
with host-confirm recording UI, min-record gate, and light ASR prewarm.
Bump CURRENT_PROJECT_VERSION to 53.
2026-08-07 16:08:42 +08:00
Rocky 704486ebc3 merge: bring Live Activity removal into main 2026-08-07 11:32:31 +08:00
Rocky 98ae211b3d docs: freeze clipboard voice command one-page plan
Capture the product decisions for long-press clipboard instruction mode before implementation.
2026-08-07 11:32:31 +08:00
Rocky 41b8db87b5 refactor(flow): remove Live Activity and keep-alive mode picker
Keep voice sessions on silent low-profile PiP only, and fix custom polish style editor presentation via sheet(item:).
2026-08-07 11:32:31 +08:00
Rocky d237318bf3 merge: bring automatic low-profile PiP release into main 2026-08-06 21:40:01 +08:00
Rocky 77504facc8 chore(release): bump version to 1.6.5 (build 51)
Ship automatic low-profile PiP keep-alive so background dictation stays ready without visible startup UI or idle audio work.
2026-08-06 21:39:31 +08:00
Rocky 9b02e8948c fix(privacy): add Shared LevelDB PrivacyInfo and bump build to 50
Satisfy ITMS-91061 by shipping PrivacyInfo.xcprivacy inside OSGKeyboardShared.framework for librime's statically linked leveldb.
2026-08-06 20:38:31 +08:00
Rocky e63129b312 merge: bring keyboard touch accuracy and mood-emoji polish into main 2026-08-06 15:18:40 +08:00
Rocky a8d58d8f0c feat(polish): allow mood emoji on custom styles and ship Flow/ASR fixes
Custom polish styles can opt in to emotion-matched emoji (default off), with
prompt-level opt-in detection so paste-only styles keep model-added emoji.
Also include Volcengine API-Key ASR auth, voice-processing capture, PiP flash
fix, and related keyboard Shift/haptics reliability work.
2026-08-06 15:11:12 +08:00
Rocky 2ed16e1fbf feat(typing): improve key hit accuracy and bump to 1.6.1
Add gap-filling hit regions, release-to-commit with slide-to-reselect,
touch intent offset, and full-pinyin next-key bias; cut release 1.6.1 (build 45).
2026-08-05 22:47:20 +08:00
Rocky 450d60d4d6 Merge pull request #38 from hkgood/1.7
1.7
2026-08-05 22:26:59 +08:00
Rocky 717902716a feat(typing): wire PersonalDictionary into Chinese Pinyin via Rime sidecar
Redeploy an osg_personal import table on dictionary add/delete/sync so
Chinese, English typing, and ASR share one curated lexicon (next keyboard open).
2026-08-05 22:12:30 +08:00
Rocky 31f5937a7f 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.
2026-08-05 21:39:31 +08:00
Rocky 38e5ad570d feat(typing): add English autocomplete and Chinese candidate expand panel
Offline English lexicon suggestions with autocapitalization, plus a same-height Chinese more-candidates grid over the key area.
2026-08-03 18:30:20 +08:00
Rocky d1e5fed964 chore(typing): snapshot local pinyin WIP before syncing cloud branch
Preserve the in-progress local typing/pinyin implementation so feat/pinyin
can safely reset to origin/feat/pinyin (cloud English + Chinese typing).
2026-08-03 13:14:01 +08:00
Rocky c037be3654 merge: bring polish style packs and related work into main 2026-07-31 15:12:54 +08:00
Rocky 9e689164cd style(site): unify platform download badges
Give App Store and macOS downloads matching dimensions and two-line typography so platform choice stays clear without extra labels.
2026-07-30 13:13:20 +08:00
Rocky fcc9c4155a style(site): unify platform download badges
Give App Store and macOS downloads matching dimensions and two-line typography so platform choice stays clear without extra labels.
2026-07-30 13:12:55 +08:00
Rocky 8b0ac61f4a style(site): remove download platform labels
Let the distinct iOS and macOS badge artwork identify each download without redundant headings.
2026-07-30 01:00:44 +08:00
Rocky 1f4f3e695e style(site): remove download platform labels
Let the distinct iOS and macOS badge artwork identify each download without redundant headings.
2026-07-30 00:59:54 +08:00
Rocky 2d5d3cc450 docs(site): consolidate landing page and add macOS download
Publish one bilingual download surface with clearly separated iPhone/iPad App Store and notarized Mac DMG actions.
2026-07-30 00:57:25 +08:00
Rocky 293a4beae6 docs(site): consolidate landing page and add macOS download
Publish one bilingual download surface with clearly separated iPhone/iPad App Store and notarized Mac DMG actions.
2026-07-30 00:56:50 +08:00
Rocky 8933e996e4 chore(site): remove unused wave-gradient assets
Beams now powers the hero, so drop the previous gradient bundle.
2026-07-29 23:13:13 +08:00
Rocky 4a360449f1 docs(site): switch hero to React Bits–style beams
Replace the wave gradient with a vanilla Three.js beams field using the
shared demo preset and OSG green lighting for a more dimensional look.
2026-07-29 23:12:53 +08:00
Rocky 38a76e9217 docs(site): switch hero to React Bits–style beams
Replace the wave gradient with a vanilla Three.js beams field using the
shared demo preset and OSG green lighting for a more dimensional look.
2026-07-29 23:12:49 +08:00
Rocky 4b378d1b90 docs(site): switch hero to Stripe-style wave gradient
Replace the custom liquid aurora shader with the MIT wave-gradient
mesh animation, vendored locally and tinted for OSG brand colors.
2026-07-29 22:27:36 +08:00
Rocky bf4492ee2f docs(site): switch hero to Stripe-style wave gradient
Replace the custom liquid aurora shader with the MIT wave-gradient
mesh animation, vendored locally and tinted for OSG brand colors.
2026-07-29 22:27:32 +08:00
Rocky 85455ab575 docs(site): replace CSS blobs with liquid aurora WebGL
Upgrade the hero background to a domain-warped FBM fluid shader with
theme palettes, dithering, soft pointer pull, and motion-safe fallbacks.
2026-07-29 22:18:44 +08:00
Rocky 0bf7ade21b docs(site): replace CSS blobs with liquid aurora WebGL
Upgrade the hero background to a domain-warped FBM fluid shader with
theme palettes, dithering, soft pointer pull, and motion-safe fallbacks.
2026-07-29 22:18:39 +08:00
Rocky 4c9f8c4e7d style(site): align download action shapes
Match the source action to the App Store badge with a compact rounded-rectangle silhouette so the hero controls feel visually consistent.
2026-07-29 22:13:56 +08:00
Rocky b9daab9636 docs(site): add soft aurora wash to marketing hero
Replace the flat green hero background with a restrained animated
green/teal/violet aurora, and keep a static fallback for reduced motion.
2026-07-29 21:52:07 +08:00
Rocky a9f8ba2086 docs(site): add soft aurora wash to marketing hero
Replace the flat green hero background with a restrained animated
green/teal/violet aurora, and keep a static fallback for reduced motion.
2026-07-29 21:49:35 +08:00
Rocky 733cb8291a docs(site): add App Store badges, SEO pages, and GSC verification
Ship official store badges on READMEs and the site, expand discoverability
with FAQ/JSON-LD/llms.txt/content pages, and add the Search Console HTML
verification file so the live Pages site can be claimed.
2026-07-29 21:41:08 +08:00
Rocky 222c11c7fe docs(site): add App Store badges, SEO pages, and GSC verification
Ship official store badges on READMEs and the site, expand discoverability
with FAQ/JSON-LD/llms.txt/content pages, and add the Search Console HTML
verification file so the live Pages site can be claimed.
2026-07-29 21:04:42 +08:00
Rocky 4c929d8b8b fix(mac,asr): harden menu-bar delivery, chunk retry, and polish validator
Retain the external target app for menu-bar paste and polish context, retry
failed middle ASR chunks once, and stop false-positive path/number violations.
2026-07-29 18:30:36 +08:00
Rocky 34be2e8dd1 feat(polish): add context safeguards, layered prompts, and output validation
Use redacted cursor neighborhood and pause-aware chunks for more natural polish,
validate protected terms with retry/local fallback, and structure bilingual prompts
for consistency and provider prefix caching.
2026-07-29 17:45:11 +08:00
Rocky 2d44423f4c fix(mac): prevent Option release deadlock and HUD layout storm
The hold-to-talk release path called AsyncStream.Continuation.finish()
while holding MacAudioRecorder's NSLock; onTermination re-entered the
same lock on the main thread and froze the app. Finish snapshot sinks
outside the lock and guard the audio tap once stop() begins.

The dictation HUD no longer reassigns its hosting view and forces a
synchronous relayout on every view-model tick; it uses a fixed panel
size and SwiftUI @ObservedObject refresh instead.

Adds OSGKeyboardMacTests with a regression test that fails under the
old lock re-entry pattern.
2026-07-29 16:50:32 +08:00
Rocky 65fe3a81b4 feat(polish): add question guard, ABE routing, and flow trace
Harden polish so question drafts stay questions, add local density
routing with style-specific degrade, expand fun style packs, and add
end-to-end FlowTrace logging plus offline guard eval scripts.
2026-07-29 16:17:16 +08:00
Rocky d656bac8c3 feat: add streaming cloud ASR, polish routing, and settings card layout
Unify Bailian/Volcengine/OpenAI realtime streaming, ABE polish routing with
fun styles, and a shared card-page Settings hierarchy; bump to 1.1 (build 32).
2026-07-28 20:25:17 +08:00
Rocky 956331a2af chore(release): bump version to 1.0.1 (build 27)
Release the current PiP reliability, polish style, macOS dictionary, and UI updates.
2026-07-27 00:09:30 +08:00
Rocky 9d8914fbf3 docs(ios): plan PiP voice session lifecycle
Define a phased, privacy-first path for keeping keyboard dictation responsive while releasing the microphone between utterances.
2026-07-26 12:34:43 +08:00
Rocky 937ce33f05 feat(polish): add configurable style packs
Add shared prompt composition, custom style management, iCloud sync, and native iOS/macOS selection interfaces so users can keep a consistent writing voice across devices.
2026-07-26 12:34:43 +08:00
Rocky e6f99d2744 fix(ios): address App Store review requirements
Use compliant permission prompts, align cloud ASR privacy disclosures, and default Flow sessions to a shorter inactivity window for safer resubmission.
2026-07-23 15:37:38 +08:00
Rocky c0c9dad149 feat(mac): add Qwen3 MLX streaming dictation
Replace the Sherpa offline pipeline with native MLX streaming, resilient model downloads, live transcript previews, and supporting tests and documentation.
2026-07-23 14:34:56 +08:00
Rocky a733ff04aa docs(landing): redesign diff explorer and tune section washes
Replace the five-card stack with a pill tab bar and elevated detail
stage, use a white band for the competitor matrix, and a soft gray
band for the three-step setup section.
2026-07-12 17:18:28 +08:00
Rocky 9bfd22509a docs(landing): drop Superwhisper 'subscription isn’t cheap' phrasing
Keep free-tier and price figures in the comparison cell without the
editorial lead-in.
2026-07-12 17:06:43 +08:00
Rocky cee5c312a7 docs(landing): interactive pillars, section bands, and copy polish
Replace the duplicate BYOK block with hover/tap detail panels under
the differentiators, drop the hero title period, center the matrix
footnote, and alternate section washes so vs / steps read as separate bands.
2026-07-12 17:03:55 +08:00
Rocky b112aa176c docs(landing): enrich copy and add competitor comparison matrix
Retitle the differentiation, BYOK, and setup sections with richer
copy, and add a Typeless / Superwhisper / Openless / OSGKeyboard table
covering pricing, on-device ASR, BYOK, and platforms.
2026-07-12 16:56:13 +08:00
Rocky f78b93a40b fix(docs): restore high-res transparent hero from OSG_All.png
Replace the chat-compressed keyed JPEG with a LANCZOS downsample of the
true RGBA original so device bezels and sharpness remain intact.
2026-07-12 16:35:22 +08:00
Rocky 8532eaa8f4 refactor(docs): trim landing page story, gallery, and closing CTA
Drop the product walkthrough, cross-device gallery, and bottom closing
band so the page goes from differentiation pillars straight to BYOK.
2026-07-12 16:29:08 +08:00
Rocky d05b8f056d fix(docs): key out black backdrop from hero device PNG
The uploaded asset was JPEG-without-alpha; convert near-black pixels to
transparency so the landing hero wash shows through.
2026-07-12 16:27:22 +08:00
Rocky 2b3f4077a6 fix(docs): use transparent hero device composite on landing page
Replace the opaque black-background family shot so the pale-green hero wash shows through.
2026-07-12 16:27:11 +08:00
Rocky c598ba77e6 feat: iOS appearance, iPad logo fix, demo seed, and landing hero polish
Add System/Light/Dark preference for iPhone and iPad, restore the iPad
sidebar brand mark, ship a DEBUG seed-demo URL for rich placeholder data,
and refresh GitHub Pages with the device composite, full-bleed pale-green
hero wash, and transparent Mac screenshot chrome.
2026-07-12 16:24:59 +08:00
Rocky a57bba9ea0 feat(docs): Mac/iPad/iPhone device-family hero on landing page
Replace the bordered hero screenshot card with an elegant nested
device mockup cluster; wire iPad home shots into the lang/theme matrix.
2026-07-12 13:40:10 +08:00
Rocky 47214fb917 feat(docs): theme and language screenshot matrix for landing page
Capture Mac and iPhone product shots for zh/en × light/dark, store under
assets/screenshots/{lang}/{theme}/, and swap images when the page
toggles language or appearance (including system theme).
2026-07-12 11:58:34 +08:00
Rocky dbe6f1d52e fix(docs): show landing screenshots at native aspect ratio
Remove object-fit cropping that squashed Mac/iPhone shots, pair each
section with matching copy, and re-export clearer iPhone assets.
2026-07-12 11:26:50 +08:00
Rocky 166019b384 feat: tip IAP, commercial GitHub Pages, and App Store screenshots
Add optional StoreKit support tip (features stay free), redesign the
landing page with zh/en + light/dark and product shots, and ship
iPhone/iPad/Mac App Store screenshot sets.
2026-07-12 11:00:57 +08:00
Rocky 951e9514d7 merge: macOS architecture, cloud providers, and 6-step onboarding into main 2026-07-11 19:10:50 +08:00
Rocky cc8dd1070a feat: macOS architecture, cloud ASR/LLM providers, and 6-step iOS onboarding
- Add macOS menu-bar dictation app with local ASR models (SenseVoice/Qwen3),
  global Option hotkey, and bottom overlay
- Add cloud ASR/LLM providers (Anthropic, Volcengine, Bailian, and more) with
  provider logos, model listing, and connection checks
- Add shared 7-day usage stats UI (UsageStatsCluster / SevenDayUsageChart)
- Add iOS onboarding step 6 for polish LLM setup; hide custom-language-model
  diagnostic toggle behind DEBUG
- Unify iOS onboarding tagline with the macOS brand line ("开口即文字。")
- Rewrite README (Chinese-first, product-oriented) and refresh GitHub Pages
2026-07-11 19:10:20 +08:00
Rocky cdf833935a feat: harden Flow cold-start/force-quit and polish macOS dictation UX
Fix cold-start overlay recursion that overflowed the main-thread stack when
recording began while the ready overlay was still up; also remove temporary
on-screen Flow DEBUG panels after the orange-mic investigation, and land the
macOS overlay/catalog/layout polish plus related Flow recovery hardening.
2026-07-10 12:39:41 +08:00
Rocky ef3dcbb68c Merge pull request #31 from hkgood/feature/macos-architecture
Feature/macos architecture
2026-07-09 17:46:06 +08:00
Rocky dcb66a9849 feat: sync force-quit Flow teardown and polish macOS local ASR UX
End Live Activities and release the audio session synchronously on
applicationWillTerminate, and continue macOS local-model install,
onboarding, and settings polish on this branch.
2026-07-09 17:13:07 +08:00
Rocky 200265fbd6 feat(macos): local ASR model manager, menu-bar polish, and release 0.5.2
Adds a bundled local ASR model catalog for the macOS app with one-click
Sherpa Qwen3 / SenseVoice downloads (pause/resume, inline actions) and a
shared model storage directory used by MLX Qwen3. Fixes the light-mode
sidebar material and makes the menu-bar icon follow the system appearance
with a refreshed status mark. Renames the built product to OSGKeyboard.app.

Bumps version to 0.5.2 (build 19).
2026-07-09 08:55:37 +08:00
Rocky c2f07bd8d2 feat(macos): add macOS menu-bar app and harden cross-device iCloud sync
Introduce a standalone macOS menu-bar app (OSGKeyboardMac) that reuses the
platform-agnostic OSGKeyboardShared core: record -> cloud/local ASR -> polish
-> insert. Local mode uses Qwen3-ASR via mlx-swift-asr (macOS 15+, Apple
Silicon); iOS targets stay zero-SPM.

Harden iCloud sync for multi-device correctness:
- Per-field settings merge (appSettings.v2) so concurrent edits no longer
  clobber each other's unrelated fields.
- Per-device usage statistics (G-Counter) that sum instead of max().
- Tombstoned dictionary/history merge so deletes propagate and entries can't
  resurrect.
- API keys replicate via iCloud Keychain, never iCloud KVS JSON; pulling a
  legacy blob without key fields no longer wipes local Keychain entries.
- Add a low-risk "Sync Now" action in Settings.

Fix Flow keyboard mic state: stay orange until the host publishes a real ready
contract, share a single MicVoiceAvailability gate, and self-heal stale
cross-process heartbeat jitter instead of getting stuck.

Extract shared storage (SpeechHistoryStore/UsageStatisticsStore,
ConfigurationStore) into OSGKeyboardShared and add tests for the new
sync/merge logic.
2026-07-08 18:13:56 +08:00
Rocky 128aab1b02 feat: iCloud settings sync and cold-start return redesign
- Add iCloud key-value settings sync (engine/language/polish/Flow prefs);
  API keys stay on-device. New "Sync settings via iCloud" toggle.
- Redesign cold-start handoff: bottom-bar left-to-right swipe guidance,
  auto-dismiss on app switch, tap-anywhere to close, retained return link.
- Harden keyboard->app handoff with host-disconnected hint.
- Include prior Unreleased ASR fixes (route-change crash, fallback warning,
  multi-utterance recognition, local ASR diagnostics).

Release 0.5.0 (build 18).
2026-07-07 17:56:01 +08:00
Rocky bf844caa7f feat(dictionary): add iCloud KVS sync, cloud ASR, and lexicon expansion
Mirror the personal dictionary through iCloud Key-Value Store with
deterministic merge rules, main-app-only sync UI, and App Group as the
keyboard runtime cache. Add cloud-engine ASR with dictionary bias and
expand the bundled custom language model lexicon.
2026-07-06 22:44:14 +08:00
Rocky 07df14b546 chore(release): bump version to 0.4.1 (build 17) 2026-07-06 18:22:08 +08:00
Rocky e30a3c5765 merge: tail-drain and chunked ASR hardening into main
Resolve FlowContinuousCapture by combining tail-drain gate/drain logic
with flow-abcd route-change and interruption recovery.
2026-07-06 18:21:34 +08:00
Rocky 8e6640c470 merge: local checkpoint e6e75ed (dictation transcript accumulator) into main 2026-07-06 18:19:52 +08:00
Rocky e33e1cb999 merge: flow-abcd host return, live activity, and session policy into main 2026-07-06 18:19:45 +08:00
Rocky 9ef0196d52 feat(flow): harden host handoff, session UX, and Live Activity brand
- fix(keyboard): drop unusable extensionContext.open; report the real
  result of UIApplication.open and cancel the start watchdog immediately
  on failure with clear "open OSGKeyboard" guidance instead of a 30s spin
- feat(capture): recover from audio route changes (AirPods/wired headset
  plug-unplug) and phone-call interruptions by rebuilding the engine/tap
  against the live hardware format
- feat(home): add a "Start" button in the Home footer when a session is
  inactive and permissions are granted (no-jump manual restart)
- feat(hostapps): expand the return whitelist to 46 apps (Signal, Zoom,
  Instagram, X, Douyin, Zhihu, Bilibili, Things, Firefox, ...) with
  en/zh-Hans names and synced LSApplicationQueriesSchemes
- feat(island): use a "ready" checkmark instead of a mic glyph while idle
  and set a staleDate so an orphaned Live Activity fades after a force-quit
- feat(coldstart): use the template OSG brand mark instead of a system
  waveform glyph in the cold-start overlay
- perf(keyboard): rely on Darwin notifications as the primary session
  signal and drop the fallback poll from 1s to 3s
- fix(keyboard): remove the redundant "Start" text button next to the
  inactive-session hint on the keyboard
- docs: correct the per-take cap to 210s (3.5 min) and document that
  force-quitting no longer resurrects the session (tracker + READMEs)
2026-07-06 17:56:10 +08:00
Rocky e6e75eda31 checkpoint before checking out cursor/flow-abcd-host-return-2b89 2026-07-06 15:58:20 +08:00
Rocky 537a68552a perf(asr): speed up local Flow dictation and land CLM/keyboard refactor
Reduce perceived latency from key release to final text:
- Adaptive chunking: 2.5s first chunk + 5s follow-ups so short
  utterances start on-device recognition while still recording.
- Session-level ASR warmup and audio-format cache reuse to remove
  per-utterance cold-start of SpeechAnalyzer.
- Mirror live pipelined partials to the keyboard transcript line via
  a new flow.transcriptionPartial App Group key + Darwin ping.

Also commits the accumulated custom language model, Flow session,
keyboard extension restructure, and Xiaomi MiMo provider work in
progress on this branch.
2026-07-06 00:00:19 +08:00
Rocky 6f8ae5a4af docs(pages): redesign landing page with monochrome icons and SEO
Rework the marketing site with a cleaner, more restrained layout, replace emoji with Material Symbols monochrome icons, and add full SEO (Open Graph, Twitter cards, JSON-LD, canonical, robots.txt, sitemap.xml).
2026-07-05 19:26:56 +08:00
Rocky cfbfb542cc docs(pages): redesign landing page with monochrome icons and SEO
Rework the marketing site with a cleaner, more restrained layout, replace emoji with Material Symbols monochrome icons, and add full SEO (Open Graph, Twitter cards, JSON-LD, canonical, robots.txt, sitemap.xml).
2026-07-05 19:26:23 +08:00
Rocky 98abc47600 docs(pages): update site for current app features
Refresh the public Pages copy so setup, privacy, and feature descriptions match the current keyboard behavior.
2026-07-05 18:50:42 +08:00
Rocky c555056173 docs(pages): update site for current app features
Refresh the public Pages copy so setup, privacy, and feature descriptions match the current keyboard behavior.
2026-07-05 18:50:25 +08:00
Rocky d4aec53988 Merge pull request #27 from hkgood/feature/custom-language-model-asr
feat(lexicon): add custom ASR language model v1 (Sogou + AI/tech brands)
2026-07-05 18:38:36 +08:00
Rocky 7ffa7ae3f2 feat(lexicon): add custom ASR language model v1 (Sogou + AI/tech brands)
Build a first-version SFCustomLanguageModelData for on-device ASR
customization, generated offline on macOS (no app code dependency).

- Scripts/lexicon: Python builders for Sogou-derived phrases (scel +
  SogouPopularDict) and a curated bilingual AI/tech/brand seed lexicon
- export_clm.swift / prepare_clm.swift: macOS CLI tools that export the
  .bin training asset and compile it into LM + Vocab via the Speech
  framework
- Resources/CustomLanguageModel: generated phrases.tsv, manifests, the
  129k-phrase .bin, and compiled LM/Vocab assets (zh_CN)
- .gitignore: ignore lexicon build cache and Python bytecode

Note: Sogou-derived data is for internal experimentation only; the
curated AI/tech seed is MIT and safe to ship.
2026-07-05 18:38:07 +08:00
Rocky 05e005e9ce 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.
2026-07-05 18:27:23 +08:00
Rocky ce2fdae11b Merge pull request #7 from hkgood/feature/in-keyboard-onboarding-and-context-chip
feat(keyboard): in-keyboard onboarding overlay + AppContext chip
2026-07-03 15:57:00 +08:00
Rocky 7dc37e4272 Merge pull request #6 from hkgood/feature/intelligent-polish-and-personal-dict-v2
feat: intelligent polish + per-app context + personal dictionary
2026-07-03 15:38:30 +08:00
Rocky 0e3b75ed2d Merge pull request #4 from hkgood/docs/refresh-readme-and-pages-for-v0.2.1
docs: refresh README and GitHub Pages for v0.2.1
2026-07-03 15:14:10 +08:00
Rocky 17572fa928 Merge pull request #3 from hkgood/feature/translation-polish-2
Feature/translation polish 2
2026-07-03 13:25:51 +08:00
Rocky bc77cabb62 feat: keyboard bottom-row layout, handedness preference, and screen wake lock
Rework the action cluster to a mic-above-bottom-row layout, add left/right
handedness setting that swaps delete and return, and keep the screen awake
during Flow recording sessions.
2026-07-02 21:01:54 +08:00
Rocky 1bdb8824ac feat: polish scenarios and stabilize keyboard layout height
Add preset-driven polish scenarios (Settings, onboarding, ScenarioChip)
with ScenarioPrompt and style directives; drive keyboard height from
content (240pt) and use viewIsAppearing encapsulated-height offset for
smoother keyboard switches; remove redundant StatusBadge and hide system
dictation via hasDictationKey.
2026-06-29 00:08:00 +08:00
Rocky 39690c0a93 Merge pull request #2 from hkgood/cursor/qwen3-coreml-on-device-asr
feat: migrate on-device Qwen3 ASR to CoreML for background Flow dicta…
2026-06-23 22:46:33 +08:00
Rocky df1c5ff32c feat: migrate on-device Qwen3 ASR to CoreML for background Flow dictation
Replace MLX GPU inference with CoreML bundles so transcription continues
while the host app is backgrounded. Adds model download and warm-up,
vendored Qwen3Speech, and updates onboarding, settings, and copy for the
~1.6 GB CoreML package (iOS 18+).
2026-06-23 00:46:58 +08:00
Rocky 5e5122f172 chore: adopt source-available license and strengthen privacy disclosures
Replace MIT with a restrictive source-available license and align README/docs copy. Add cloud polish acknowledgment, privacy manifest updates, voice history disclosure, export compliance metadata, and support links for App Store readiness.
2026-06-21 16:45:29 +08:00
Rocky 993784d223 feat: polish first-launch onboarding and post-setup permission guidance
Streamline the five-step flow with smarter skip logic, a centered welcome intro, clearer zh copy, keyboard setup detection via the extension, and home tips when permissions are still missing after onboarding completes.
2026-06-21 16:14:13 +08:00
Rocky 642c97c540 fix: privacy manifests, history/settings headers, and dock contrast
Resolve TestFlight ITMS-91056 by correcting privacy manifest keys and reason arrays. Add left-aligned page headers with circular confirm buttons, keep the keyboard surface transparent, and improve unselected dock icon contrast in light and dark mode.
2026-06-20 14:10:18 +08:00
Rocky db5151ad9a feat: flow session reliability, keyboard UX, and audio pre-roll fix
Renew voice sessions while the host app stays foreground, auto-start flow from the keyboard with a Start action, and prevent leading audio loss via pre-roll buffering and faster signal polling.
2026-06-20 00:57:16 +08:00
Rocky 38a36ed504 feat: tab shell, home/onboarding UI, settings and keyboard polish
Introduce MainTabView with history and Liquid Glass dock; refresh home and
onboarding layouts; unify accent green and provider localization; refine
settings/API rows; redesign keyboard mic and flanking controls; set Utility
iPhone-only targets and Flow session reliability fixes.
2026-06-20 00:31:58 +08:00
Rocky e2ccc10cfd fix: embed Keyboard.strings in extension bundle for keyboard l10n
XcodeGen merged Localizable.strings into the main app only, so the keyboard
extension had no .lproj files and NSLocalizedString returned raw keys. Use a
dedicated Keyboard.strings table and explicit buildPhase: resources entries.
2026-06-19 18:44:32 +08:00
Rocky 6b749802f0 fix: stop actool crash from AppIcon.icon + appiconset conflict
Icon Composer AppIcon.icon must not be compiled alongside AppIcon.appiconset;
actool crashes with a nil insert error. Use appiconset only and exclude .icon
bundles from the target.
2026-06-19 18:39:33 +08:00
Rocky ef8115508c fix: onboarding permission refresh, keyboard l10n, and flow recording
Refresh mic/speech status when returning from TCC dialogs, persist onboarding
page across Settings trips, load extension strings from .lproj bundles via
ExtL10n, and keep flow result polling alive across host-app jumps.
2026-06-19 18:35:33 +08:00
Rocky 275fc81104 feat: complete Phase 4 batch F, keyboard i18n, and Pages app icon
Remove KeyboardL10n hard-coded fallbacks in favor of ExtL10n and extension
Localizable.strings. Add Flow session expiry hints, Darwin cross-process
notifications, session monitor on the keyboard, and app icon on GitHub Pages.
2026-06-19 18:20:25 +08:00
Rocky 7f059dbd45 feat: TypeWhisper Flow sessions, Phase 4 UX, and GitHub Pages privacy site
Migrate keyboard dictation to continuous Flow sessions with auto-start,
tap-to-toggle recording, 60s countdown, five-step onboarding, and App Group
IPC. Add docs/ GitHub Pages site with en/zh privacy policy for App Store compliance.
2026-06-19 18:05:50 +08:00
Rocky 6148d05093 chore: align iOS 26 capability docs and UI localization
Keep repository messaging consistent with the implemented iOS 26 SpeechAnalyzer path, and remove mixed hardcoded copy by routing remaining UI/error text through localized string keys.
2026-06-18 22:27:22 +08:00