Learn's `SpeechInput` and `DeviceSpeechInput` (ADR 0021, D67) are halkyon_app's now, and its `FakeSpeechInput` is in `testing.dart`, so Meditate's dream journal (ADR 0038, D15) listens through the same code. Learn imports them from there and behaves as before: its composer and its tests are unchanged but for the imports, and `DeviceSpeechInput()` asks for what it asked before. `DeviceSpeechInput` takes three options, off by default: - `preferOnDevice`: on Android, recognition on the device where it can (Android 12 on), else offline; should that fail before a word is heard (not a pause), it listens as Android otherwise does from then on. - `pauseFor`: how long a pause may last before the recogniser stops. - `listenFor`: how long one listen may last at most. `Dictation` writes what is heard where the cursor stands (`DictationInsertion`: in place of a selection, set apart by a space), shows the words so far, and listens again after each pause while it is on, stopping by itself after three listens running heard nothing. speech_to_text moves from Learn's pubspec to halkyon_app's, the lock unchanged. Todo, Train and Meditate link the plugin now; their generated plugin registrants (macOS, Windows) say so. An app declares the microphone itself, and Todo and Train declare none, so nothing there can listen. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
31 lines
1.4 KiB
Dart
31 lines
1.4 KiB
Dart
/// Fakes of halkyon_app's boundaries, and a frame and dependencies built on
|
|
/// them, for an app's tests and this package's own: nothing here reaches a
|
|
/// server, the system's secure storage or the file system.
|
|
library;
|
|
|
|
// What asks a person's own key's provider, as the assistants' repository
|
|
// takes it, so an app's tests need no dependency of their own on
|
|
// halkyon_llm.
|
|
export 'package:halkyon_llm/testing.dart' show FakeLlmClient;
|
|
|
|
export 'src/testing/fake_account_crypto.dart';
|
|
export 'src/testing/fake_assistant_gateway.dart';
|
|
export 'src/testing/fake_auth_gateway.dart';
|
|
export 'src/testing/fake_content_cipher.dart';
|
|
export 'src/testing/fake_file_picker.dart';
|
|
export 'src/testing/fake_instance_checker.dart';
|
|
export 'src/testing/fake_instance_operator_gateway.dart';
|
|
export 'src/testing/fake_oidc_browser.dart';
|
|
export 'src/testing/fake_password_gateway.dart';
|
|
export 'src/testing/fake_public_profile_gateway.dart';
|
|
export 'src/testing/fake_screen_guard.dart';
|
|
export 'src/testing/fake_simplelogin_gateway.dart';
|
|
export 'src/testing/fake_speech_input.dart';
|
|
export 'src/testing/memory_account_key_store.dart';
|
|
export 'src/testing/memory_account_wait_store.dart';
|
|
export 'src/testing/memory_file_saver.dart';
|
|
export 'src/testing/memory_instance_store.dart';
|
|
export 'src/testing/memory_pending_changes_store.dart';
|
|
export 'src/testing/memory_sign_in_addresses.dart';
|
|
export 'src/testing/memory_whats_new.dart';
|
|
export 'src/testing/test_app.dart';
|