You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* feat: Add support for text snippets
* test: skip hardware-dependent AudioEngine tests in CI
* fix: update as suggested in the review
* fix: tests for snippets
* fix: address review feedback on snippet persistence and polish
- Auto-save sink now encodes the emitted array: @published fires on
willSet, so re-reading self.snippets saved the previous state and
left the latest change (e.g. deleting all snippets) unpersisted.
Added testAutoSavePersistsDeletion to pin this down.
- Store the expansion as entered (trim only for validation and the
trigger) so intentional leading/trailing whitespace survives.
- Make SnippetExpander final.
- SnippetTests now clears the vocamac.snippets defaults key in
setUp/tearDown so state cannot leak between tests; the round-trip
test no longer clears snippets mid-test (that clear relied on the
old one-save-behind behavior to pass).
* fix: adapt snippets UI to the new settings shell
Upstream replaced the settings TabView with a sidebar/detail shell, so
the snippets page needed reworking rather than a straight port.
- Expand snippets *after* DictationOutputFormatter, not before. Snippet
expansions are literal text the user authored, so auto-capitalization
must not rewrite them — expanding first turned an email snippet at the
start of a sentence into "Me@example.com". Trigger matching is
case-insensitive, so capitalizing the trigger first still matches.
Pinned by testSnippetExpansionIsNotRewrittenByAutoCapitalize.
- Rebuild SnippetsSettingsTab as a grouped Form to match every other
detail page; the old List(.inset) plus bottom action bar was styled
for the tab layout and looked foreign in the sidebar.
- Give each row an explicit destructive remove button. Deletion
previously relied on .onDelete with no selection binding, which has no
affordance on macOS. Mirrors the existing Auto-Pause app list.
- Drop the unused newTrigger/newExpansion state.
0 commit comments