Skip to content

feat(mac): new configuration and installation UI 🍎 - #16304

Open
sgschantz wants to merge 44 commits into
epic/mac-configfrom
feat/mac/config-ui
Open

feat(mac): new configuration and installation UI 🍎#16304
sgschantz wants to merge 44 commits into
epic/mac-configfrom
feat/mac/config-ui

Conversation

@sgschantz

@sgschantz sgschantz commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Add the UI for configuration and completion of installation with the final (or nearly final) design.

image

Note: this code still includes two windows used for debugging installation and config and these will be removed later. (Most of those related views have 'Debug' in their name.)

Fixes: #9369
Fixes: #9875
Fixes: #12572
Fixes: #13763

Build-bot: release:mac
Test-bot: skip

@keymanapp-test-bot

keymanapp-test-bot Bot commented Aug 5, 2026

Copy link
Copy Markdown

User Test Results

Test specification and instructions

User tests are not required

Test Artifacts

@keymanapp-test-bot keymanapp-test-bot Bot changed the title feat(mac): new configuration and installation UI feat(mac): new configuration and installation UI 🍎 Aug 5, 2026
@keymanapp-test-bot keymanapp-test-bot Bot added this to the A19S35 milestone Aug 5, 2026
@github-actions github-actions Bot added the feat label Aug 5, 2026
geschantz and others added 17 commits August 10, 2026 21:08
Co-authored-by: Shawn Schantz <89134789+sgschantz@users.noreply.github.com>
Co-authored-by: Shawn Schantz <89134789+sgschantz@users.noreply.github.com>
feat(mac): add new configuration window 🍎
feat(mac): add views for completing installation 🍎
also fixed bug blocking removal of packages that
were installed during the same session
When installed, packages keep a reference to their
location on disk so that they can delete their
associated files if removed. However, installation
from the internet now happens via a temp directory.
The directory must be updated when moved to the
install directory and there can be no trace of the
temp directory path anywhere when loading other
data from the package.

The cleanest way to accomplish this was to use
computed properties for the locations of all the
data like welcome.htm and the graphic image. These
properties are based on the single package
directory URL, and this URL is updated when the
package is moved.
If the help file (welcome.htm) and readme file
(readme.htm) are not listed in the options element
of the kmp.json, check the file list. Read them
from the package using their default filenames if
they are found there.
listen to correct notifications for permission granted
standardize file URLs
use correct loadFileURl to load help file URL as it
it is not loading over HTTP
also fixed typos, removed a few print statements
@sgschantz
sgschantz marked this pull request as ready for review August 15, 2026 22:07
@sgschantz
sgschantz requested a review from mcdurdin August 15, 2026 22:07
@keyman-server keyman-server modified the milestones: A19S35, A19S36 Aug 17, 2026
@mcdurdin

Copy link
Copy Markdown
Member

This PR has a lot of new user interface. IMHO we need some user tests.

@mcdurdin mcdurdin left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think this LGTM; i18n needs to be done on strings throughout

Comment thread mac/Copy of keyman logo BIG 600.png Outdated
Comment thread mac/Config/Config/Assets.xcassets/Keyman-256.imageset/Contents.json Outdated
Comment thread mac/Config/Config/InstallationViews/CompletedInstallView.swift
Comment thread mac/Config/Config/InstallationViews/CompletedInstallView.swift
Comment thread mac/Config/Config/InstallationViews/InitialRepairView.swift Outdated
Comment thread mac/Config/Config/InstallationViews/MainInstallView.swift
Comment thread mac/KeymanSettings/Sources/Model/KeymanPackage.swift Outdated
Comment thread mac/KeymanSettings/Sources/Persistence/PackageDownload.swift
@sgschantz

Copy link
Copy Markdown
Contributor Author

This PR has a lot of new user interface. IMHO we need some user tests.

Agreed, I'll add some

@sgschantz

Copy link
Copy Markdown
Contributor Author

I think this LGTM; i18n needs to be done on strings throughout

Yes, I am going to go through and move everything to string resources and also add logging as separate PRs. I avoided doing this when three of us were working on the UI because it would probably create some messy merge conflicts.

added 1024 x 1024 app icon
replaced Apple's installer icon with symbol
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment