SmartPaste improvements and Dashboard enhancements#20
Open
geemileg wants to merge 8 commits into
Open
Conversation
- Add SilentTranscriptionService for UI-less transcription flow - Add "Silent Express Mode" toggle in preferences (under Express Mode) - Update AppDelegate+Hotkeys to use silent service when enabled - Fix build script: add adhoc signing fallback for TCC permission persistence - Fix build script: check ~/.local/bin/uv for Parakeet support Silent Express Mode allows transcription without showing the popup window, preventing focus from being stolen from full-screen apps like RustDesk. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Change status item from variableLength to squareLength for consistent sizing - Add imagePosition = .imageOnly for proper icon rendering - Add fallback hand-drawn icon if SF Symbols fail to load Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Test singleton pattern - Test cancellation behavior - Test UserDefaults configuration defaults - Test settings persistence - Test notification names exist 16 tests, all passing. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…artPaste exclusion - Add KeyboardLayoutHelper that detects current keyboard layout and scans for correct key codes including Option/AltGr modifier combinations - Add Direct Typing Mode toggle in Preferences (types character-by-character for remote desktop compatibility) - Exclude RustDesk from SmartPaste to prevent the "V" insertion issue - Add version display in menu bar for easier debugging - Fix sidebar navigation hitbox in Dashboard (entire row now clickable) - Refactor SilentTranscriptionService for testability with dependency injection Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Allow users to manage the SmartPaste exclusion list via Dashboard Preferences: - Add/remove apps using file picker - Display excluded apps with icon and name - Persist exclusions in UserDefaults with caching - Migrate existing users with RustDesk defaults - Show error alert when app selection fails Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Wrap Direct Typing Mode and Excluded Apps in a disclosure group - Add summary text showing current settings (e.g., "Direct typing · 2 excluded") - Custom disclosure style with animated chevron - Reduces visual clutter when advanced options aren't needed Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Exclusion list now starts empty - users add apps as needed. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Only clear currentTask reference if it still points to our task, preventing premature clearing when a newer transcription is started. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
| return false | ||
| } | ||
| typeTextDirectly(text) | ||
| return true |
There was a problem hiding this comment.
Direct typing silently fails without reporting error
Medium Severity
The typeClipboardContents function always returns true if the clipboard contains text, but typeTextDirectly can fail silently when CGEventSource creation fails (returning early without typing anything). Callers check the return value expecting it to indicate whether typing succeeded, but the function reports success even when nothing was typed. This causes silent failures where users think text was pasted but it actually wasn't.
Additional Locations (1)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Changes
Test plan
🤖 Generated with Claude Code
Note
Introduces silent, UI-less transcription and major SmartPaste upgrades, plus dashboard/menu UX tweaks and build/signing improvements.
SilentTranscriptionServicehandles background transcription, clipboard copy, optional smart paste, and focus restore; hotkey flow updated to store/target the previous appKeyboardLayoutHelper, optional Direct Typing Mode (character-by-character), AppleScript/CGEvent fallbacks, excluded-apps support with cached UserDefaults, stricter accessibility checks, and async paste APIExcludedAppRow); sidebar rows now fully clickableDataManager.sharedInstancefor DI; unit tests for silent service; build script finds/bundles uv in more locations and adds stable adhoc signing; version metadata updated; dependencies refreshedWritten by Cursor Bugbot for commit 17f9c3b. This will update automatically on new commits. Configure here.