Skip to content

ci(macos): update Homebrew and smoke-test spell-check backend - #2948

Open
markiehill wants to merge 1 commit into
vkbo:mainfrom
markiehill:fix-macos-enchant
Open

ci(macos): update Homebrew and smoke-test spell-check backend#2948
markiehill wants to merge 1 commit into
vkbo:mainfrom
markiehill:fix-macos-enchant

Conversation

@markiehill

Copy link
Copy Markdown

Fix the macOS spell-check regression (#2705) that persisted even after bundling only the applespell backend: on a clean machine the dictionary dropdown was still empty, regardless of the user's OS language.

Root cause: the macos-14 runner image pins a stale Homebrew snapshot with auto-update disabled, so brew install enchant poured enchant 2.8.16. Its AppleSpell provider uses a hard-wired language list that resolves to an empty dictionary set on current macOS. enchant 2.8.18 dropped the hard-wired list and reports the actual system dictionaries, so the shipped DMG needs enchant >= 2.8.18.

  • Run brew update before installing so the fixed enchant bottle is used.
  • Add a runtime smoke test: load the bundled libenchant exactly as the frozen app does (via PYENCHANT_LIBRARY_PATH) and assert it yields working dictionaries served by the bundled backend. A backend file can be present yet expose zero dictionaries, which the previous presence-only guard could not detect, so a broken backend now fails the build instead of shipping.

Summary:

Related Issue(s):

Reviewer's Checklist:

  • The header of all files contain a reference to the repository license
  • The overall test coverage is increased or remains the same as before
  • All tests are passing
  • All linting checks are passing and the style guide is followed
  • Documentation (as docstrings) is complete and understandable
  • Only files that have been actively changed are committed

Fix the macOS spell-check regression (vkbo#2705) that persisted even after
bundling only the applespell backend: on a clean machine the dictionary
dropdown was still empty, regardless of the user's OS language.

Root cause: the macos-14 runner image pins a stale Homebrew snapshot with
auto-update disabled, so `brew install enchant` poured enchant 2.8.16.
Its AppleSpell provider uses a hard-wired language list that resolves to
an empty dictionary set on current macOS. enchant 2.8.18 dropped the
hard-wired list and reports the actual system dictionaries, so the shipped
DMG needs enchant >= 2.8.18.

- Run `brew update` before installing so the fixed enchant bottle is used.
- Add a runtime smoke test: load the bundled libenchant exactly as the
  frozen app does (via PYENCHANT_LIBRARY_PATH) and assert it yields working
  dictionaries served by the bundled backend. A backend file can be present
  yet expose zero dictionaries, which the previous presence-only guard could
  not detect, so a broken backend now fails the build instead of shipping.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: dfbf93cc-170a-4853-be97-161aa477883e
@vkbo

vkbo commented Aug 2, 2026

Copy link
Copy Markdown
Owner

Thanks!

Could you trim down the massive blocks of AI-generated comments please? There's just too much of it.

@vkbo
vkbo changed the base branch from main to release August 2, 2026 12:01
@vkbo
vkbo changed the base branch from release to main August 2, 2026 12:02
@vkbo

vkbo commented Aug 2, 2026

Copy link
Copy Markdown
Owner

This branch also needs to be rebased onto release, otherwise it will not be included in the next release. Just switching base does not work since it is branched off of current main.

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.

3 participants