Skip to content

Add custom dictionary replacement training#500

Merged
altic-dev merged 5 commits into
mainfrom
B/custom-dictionary-only
Jul 1, 2026
Merged

Add custom dictionary replacement training#500
altic-dev merged 5 commits into
mainfrom
B/custom-dictionary-only

Conversation

@altic-dev

Copy link
Copy Markdown
Owner

Description

Adds Train Replacement to Custom Dictionary so users can enter the intended word or phrase, record ASR variants, review/remove captured triggers, and save or merge an Instant Replacement entry.

Also improves dictionary UX by putting new replacements at the top, renaming the saved list to Your Dictionary, adding collapsible dictionary rows, and showing clearer training progress/status.

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)
  • 🧹 Chore
  • 📝 Documentation update

Related Issues

  • N/A

Testing

  • Tested on Intel Mac
  • Tested on Apple Silicon Mac
  • Tested on macOS [version]
  • Ran linter locally: swiftlint --strict --config .swiftlint.yml Sources/
  • Ran formatter locally: swiftformat --config .swiftformat Sources

Notes

  • Scoped to custom dictionary training and replacement persistence.
  • Does not include the separate startup-latency/prewarm/overlay timing changes from the previous branch.

Screenshots / Video

N/A

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

Copy link
Copy Markdown

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: 2c9f5603ba

ℹ️ 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 +1014 to +1018
guard !self.isTrainingStarting, self.asr.isRunning else {
self.trainingStopRequestedDuringStart = true
self.trainingHasError = false
self.trainingStatusMessage = "Stopping..."
return

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 external cancellation of training capture

When the training recording has already been stopped outside this view, such as the default Escape cancel shortcut calling stopWithoutTranscription() directly, isTrainingStarting is false and asr.isRunning is false here. Pressing Stop then sets trainingStopRequestedDuringStart and returns, but no pending start will ever call finishTrainingSampleStop(), leaving the training UI stuck on “Stopping...” with the controls disabled until the view is recreated. Treat the non-starting/not-running case as a cancelled empty sample or clear isTrainingRecording instead.

Useful? React with 👍 / 👎.

@altic-dev altic-dev merged commit 2e81ab9 into main Jul 1, 2026
1 check passed
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