Skip to content

1.5.12 fixes and dictation shortcut cleanup#257

Merged
altic-dev merged 11 commits intomainfrom
1.5.12-fixes
Apr 6, 2026
Merged

1.5.12 fixes and dictation shortcut cleanup#257
altic-dev merged 11 commits intomainfrom
1.5.12-fixes

Conversation

@altic-dev
Copy link
Copy Markdown
Owner

Description

This PR rolls up the current 1.5.12 fixes branch into one reviewable stack.

Highlights:

  • reworks dictation into two configurable shortcuts, each with its own AI prompt selection (Off, Default, or custom)
  • adds manual backup/restore and a configurable cancel-recording shortcut
  • syncs microphone switching between Settings and the menu bar
  • hardens launch-at-startup behavior
  • improves Parakeet Flash diagnostics and updates the README for the new model option

Type of Change

  • 🐞 Bug fix (non-breaking change which fixes an issue)
  • ✨ New feature (non-breaking change which adds functionality)
  • 💥 Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • 📝 Documentation update

Related Issues

  • Closes #

Testing

  • Tested on Intel Mac
  • Tested on Apple Silicon Mac
  • Tested on macOS 26.3
  • Ran linter locally: swiftlint --strict --config .swiftlint.yml Sources
  • Ran formatter locally: swiftformat --config .swiftformat Sources
  • Built locally: sh build_incremental.sh

Notes

  • AI settings now manage prompt bodies, while per-shortcut assignment lives in Keyboard Shortcuts.
  • Release notes for 1.5.12 were updated locally but intentionally not committed because the release notes files are gitignored.

Screenshots / Video

  • Not included in this PR body.

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 64822ff552

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines 9 to +10
static func isConfigured() -> Bool {
self.isConfigured(for: .primary)
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Make default AI gate evaluate both dictation shortcuts

isConfigured() now hardcodes .primary, but several existing call sites still use the no-arg form as a global readiness check (for example onboarding readiness in WelcomeView/ContentView and reprocess flow in ContentView.reprocessDictationText). With the new defaults, users can have primary set to Off while secondary is configured for AI, and these paths will incorrectly report AI as unavailable or skip reprocessing. The no-arg gate should preserve prior “any dictation path is configured” semantics, or those callers should be updated to pass an explicit slot.

Useful? React with 👍 / 👎.

@altic-dev altic-dev merged commit d6fd727 into main Apr 6, 2026
2 checks passed
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 73a9910d5f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +2242 to +2243
self.preferredInputDeviceUID = payload.preferredInputDeviceUID
self.preferredOutputDeviceUID = payload.preferredOutputDeviceUID
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Apply restored audio devices to system defaults

Backup restore only assigns preferredInputDeviceUID/preferredOutputDeviceUID, but this app now hardwires syncAudioDevicesWithSystem to true and follows macOS defaults for actual routing. That means importing a backup reports success while the effective input/output devices remain whatever macOS was already using, so the restored audio-device settings are silently ignored unless the defaults already match.

Useful? React with 👍 / 👎.

Comment on lines +373 to +374
// Check the configured cancel shortcut first.
if SettingsStore.shared.cancelRecordingHotkeyShortcut.matches(keyCode: keyCode, modifiers: eventModifiers) {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Handle modifier-only cancel shortcuts

The configurable cancel shortcut is evaluated only in the keyDown branch, but modifier-only shortcuts (for example Shift/Fn), which the shortcut recorder can produce, arrive as flagsChanged events rather than keyDown. In that configuration, cancel never fires, so users can save a cancel binding that does not work during recording or overlay dismissal.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant