Skip to content

Commit

Permalink
This commit probably marks 3.0.4 Beta 1.
Browse files Browse the repository at this point in the history
Also, some tiny changes:
- Copied over our 'MMF - Update Checklist - Template.md' note from Obsidian. As a backup or something.
- Slightly updated some comments inside Config.m.
- Changed project settings so Xcode doesn't try to embed Apple's SkyLight framework, which caused Notarization issues (IIRC) and is unnecessary.
  • Loading branch information
noah-nuebling committed Feb 18, 2025
1 parent 7646c89 commit 3aee376
Show file tree
Hide file tree
Showing 6 changed files with 146 additions and 35 deletions.
2 changes: 1 addition & 1 deletion App/SupportFiles/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
</dict>
</array>
<key>CFBundleVersion</key>
<string>23653</string>
<string>23665</string>
<key>LSApplicationCategoryType</key>
<string>public.app-category.utilities</string>
<key>NSHumanReadableCopyright</key>
Expand Down
2 changes: 1 addition & 1 deletion Helper/SupportFiles/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
<key>CFBundleShortVersionString</key>
<string>$(MARKETING_VERSION)</string>
<key>CFBundleVersion</key>
<string>23653</string>
<string>23665</string>
<key>LSApplicationCategoryType</key>
<string>public.app-category.utilities</string>
<key>LSBackgroundOnly</key>
Expand Down
19 changes: 4 additions & 15 deletions Mouse Fix.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@
4F1D7F4728A4639800253407 /* MenuBarItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F1D7F4628A4639800253407 /* MenuBarItem.swift */; };
4F28B7F62D49141F006928A6 /* SkyLight.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4F28B7F52D49141E006928A6 /* SkyLight.framework */; };
4F28B7F82D49144E006928A6 /* SkyLight.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4F28B7F52D49141E006928A6 /* SkyLight.framework */; };
4F28B7F92D49144E006928A6 /* SkyLight.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4F28B7F52D49141E006928A6 /* SkyLight.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
4F2CC58727B8D2300084AACE /* HybridCurves.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F2CC58627B8D2300084AACE /* HybridCurves.swift */; };
4F2CC58927B8DA8B0084AACE /* Line.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F2CC58827B8DA8B0084AACE /* Line.swift */; };
4F2E8FD32D52229100689058 /* NSCoderErrors.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F2E8FD22D52229100689058 /* NSCoderErrors.m */; };
Expand Down Expand Up @@ -388,17 +387,6 @@
/* End PBXContainerItemProxy section */

/* Begin PBXCopyFilesBuildPhase section */
4F28B7FA2D49144E006928A6 /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 10;
files = (
4F28B7F92D49144E006928A6 /* SkyLight.framework in Embed Frameworks */,
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
};
4F9111F8289FF25D00D2DD8C /* Copy sm_launchd.plist */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
Expand Down Expand Up @@ -2060,6 +2048,7 @@
4F5F3EF02756EC0400C350C0 /* RemapSwizzler.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RemapSwizzler.m; sourceTree = "<group>"; };
4F5F3EF22756F1DB00C350C0 /* ScrollModifiers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScrollModifiers.swift; sourceTree = "<group>"; };
4F5FC0612D6206E3009DCF10 /* SimpleUnboxing.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SimpleUnboxing.h; sourceTree = "<group>"; };
4F5FC1152D63B036009DCF10 /* MMF - Update Checklist - Template.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "MMF - Update Checklist - Template.md"; sourceTree = "<group>"; };
4F616D6027BDCD56004A6A72 /* ScrollConfigTesting.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = ScrollConfigTesting.md; sourceTree = "<group>"; };
4F626E97292A842D00E6FFD5 /* KeyCaptureMode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KeyCaptureMode.h; sourceTree = "<group>"; };
4F626E98292A842D00E6FFD5 /* KeyCaptureMode.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KeyCaptureMode.m; sourceTree = "<group>"; };
Expand Down Expand Up @@ -7125,6 +7114,7 @@
4FEB6618279376C200E6A111 /* notes.md */,
4FE8FC792929D8AC0002583B /* On Bundle Size & Deployment Target.md */,
4F1B41A72D4C06AC00026C94 /* CodeStyle.md */,
4F5FC1152D63B036009DCF10 /* MMF - Update Checklist - Template.md */,
);
path = Notes;
sourceTree = "<group>";
Expand Down Expand Up @@ -7776,7 +7766,6 @@
4FCECD7C21092354001F1078 /* Sources */,
4FCECD7D21092354001F1078 /* Frameworks */,
4FCECD7E21092354001F1078 /* Resources */,
4F28B7FA2D49144E006928A6 /* Embed Frameworks */,
);
buildRules = (
);
Expand Down Expand Up @@ -8461,7 +8450,7 @@
INFOPLIST_FILE = App/SupportFiles/Info.plist;
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities";
MACOSX_DEPLOYMENT_TARGET = 10.15.0;
MARKETING_VERSION = 3.0.3;
MARKETING_VERSION = "3.0.4 Beta 1";
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = "com.nuebling.mac-mouse-fix";
Expand Down Expand Up @@ -8500,7 +8489,7 @@
INFOPLIST_FILE = App/SupportFiles/Info.plist;
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities";
MACOSX_DEPLOYMENT_TARGET = 10.15.0;
MARKETING_VERSION = 3.0.3;
MARKETING_VERSION = "3.0.4 Beta 1";
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = "com.nuebling.mac-mouse-fix";
PRODUCT_NAME = "$(TARGET_NAME)";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,6 @@
type = "1"
version = "2.0">
<Breakpoints>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "AC5E68E0-DD07-4364-BA61-F36216AF40A5"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Helper/Core/Actions/SymbolicHotKeys.m"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "201"
endingLineNumber = "201"
landmarkName = "+post:"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
Expand Down
138 changes: 138 additions & 0 deletions Notes/MMF - Update Checklist - Template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@

Context:
Copied this over from Obsidian on 17.02.2025
This is a sloppy personal note I use this whenever I publish an MMF update.
This is a backup I guess? Maybe I'll use this instead of Obsidian, but probably not.
> **Might go out of date.**
Some of the points are outdated,
- like the ones talking about a 'prefpane' (Early MMF versions used to be a prefpane.)
- Or some of the ones talking about revoking signing certificates (I don't think that happens anymore since I'm paying for the Apple Developer Program)
It also contains [[Obsidian Links]] which won't work here. Maybe I should move the linked notes into the mac-mouse-fix repo, too.

----

# MMF - Update Checklist - Template

Pushing an update, Make push ready, publishing, releasing, publishing routine

The template: [[MMF - Update Checklist - Template]]

> [!info]
> When moving to Obsidian I couldn't find this note at first. Searched forever. Turns out it's because NotePlan displays notes based on note title, and Obsidian displays them based on filename. Also, NotePlan uses the **initial title** of the note as filename. When you update the title of the note in NotePlan, the filename doesn't change - keep this in mind when searching for notes in the future.
**App**

- Config file
- [ ] set the right configVersion
- [ ] make sure default_config is the same as config
- [ ] make sure the updating / replacing of the config file actually works

- Licensing
- [ ] Update fallback_licenseinfo_config.json to mac-mouse-fix-website

- Build Settings
- Adjust compiler flags
- Tips:
- For `C`, modify Xcode build setting: `Preprocessor Macros`
- Example: `NDEBUG=1` (Don't forget "= 1")
- For `Swift`, modify Xcode build setting: `Active Compilation Conditions`
- Example: `NDEBUG` (No need for "=1" like with C)
- (All this stuff only applies to MMF 3. MMF 2 only has the DEBUG flag and nothing else as of Sep 2024.)
- [ ] Remove development flags such as `FORCE_EXPIRED`
- [ ] Make sure `NDEBUG=1`/`NDEBUG` flag is set on release builds. (That prevents assert() from crashing the app).
- [ ] Make sure `IS_HELPER` and `IS_MAIN_APP` flags are set correctly.

- Signing
* [ ] Make sure you sign all targets with the 'Noah Nuebling' team, which is associated with the `redacted`.developer@`redacted`.com Apple ID instead of the 'Noah Nbling' team which is associated with my personal-email Apple ID
- [ ] Make sure you're not revoking any old certificates.
- See [[MMF - Signing Issues - Jan 2022]]
- Also see [[MMF - Bug - Mac Mouse Fix will damage your computer]]
- Hint: Import the code signing identity from Apple Notes into Xcode, it should contain the certificate and prevent creation of new certificates / revoking of old certificate (I hope??)
- Other
- [ ] Set the correct MMF version number and version string in the Xcode project
- Examples: "3.0.0 Beta 7", 21988
- [ ] Set the correct version string(s) in the prefpane info.plist
- [ ] Make sure Sparkle appcast URLs are correct

- Build & Export
- [ ] **Clean build folder** before final build
- Note that this will reset the build configuration
- This is still recommended even when using 'Archive' according to this [SO Post](https://stackoverflow.com/a/19202343/10601702)
- [ ] If not prerelease: Make sure to build the Release configuration
- So that it's fast, and assert() doesn't crash
- [ ] If prerelease: Make sure to either build Debug configuration, or include 'beta' or 'alpha' (case insensitive) in the short bundle version
- So that `runningPreRelease()` works right
- Update: Under MMF 3, using Swift we started using Release configuration because Debug is very very slow.
- [ ] Make sure to build for Apple Silicon / Intel
- Does that automatically when building for Release. See Xcode > Build Settings > Architectures
- Doesn't do this automatically when building for Debug (not even when building using the "Archive" option). Choose "Any Mac (Apple Silicon, Intel)" next to the build scheme.
- [ ] Use the "Archive" option to export. (This will still use the build scheme and architecture configured in the Xcode menu bar)
- [ ] Choose 'Direct Distribution' in the Organizer to notarize the app.
- [ ] To get the app bundle after Notarizing, use the 'Export Notarized App' button in the Organizer.
- For 3.0.2 I got the app bundle directly from the .xcarchive via Finder, and I think that [broke things](https://github.com/noah-nuebling/mac-mouse-fix/issues/871).
- [ ] Get dSYMs folder directly from the .xcarchive via Finder.
- Find the .xcarchive by going to the Xcode Organizer and right-clicking the archive in question.

- Pre-Sparkle (we added sparkle in 2.0.0 iirc)
- [ ] Set the base remote url in the app to [kMFWebsiteAddress]/maindownload/

**Post-archive check**
- [ ] Make sure the app launches and works ok.
- [ ] Make sure the version numbers shown in the app are correct.

**GitHub**

- [ ] Write update notes
- Use git log for writing update notes:
- You can filter out autogenerated commits like this:
- `git log --perl-regexp --author="^(?!github-actions)"`
- If you want to preserve single linebreaks in update notes, use `\` at the end of the line
- In GitHub they are automatically preserved → Should make it so it's the same for updateNotes. pandocs `--wrap=preserve` doesn't work for me.
- Lists with several indentation levels look a little weird with the current css. Better to avoid them.
- (Or fix the CSS) Edit: fixed the CSS
- Links to issues of the form `#94` don't work. `[Normal markdown links](abcd)` do work though.
- Credit users like this: `@nghlt [on GitHub](https://github.com/nghlt)`
- Mentions of a `@user` don't work as links in in-app release notes but `[user](link)` won't make them show up as a contributor to the release in GitHub.
- TODO: Maybe support @user auto links in in-app release notes.
- When including images use `<img width="500px" src="<Image URL>">` to set size
- Setting no width is also okay
- Setting height explicitly will mess up aspect ratio
- Make sure to have free line above `- bulleted lists` and `## Headings`
- Otherwise it won't display properly in the Sparkle Update Window
- Make sure to include the version string at the top of the content because it looks better in Sparkle. See [2.2.0 release notes](https://github.com/noah-nuebling/mac-mouse-fix/releases/tag/2.2.0)
- [ ] Zip the .app before uploading. Name it 'MacMouseFixApp.zip'
- [ ] Also upload dSYMs.zip so you can symbolicate crash reports
- dSYMs folder is inside .xcarchive for the build which you can find from the Xcode Organizer.
- [ ] Push local changes after the final build - and before publishing the GH release!
- So that the GH release links to the correct source code commit with the right build number.
- [ ] Update appcasts:
- Checkout update-feed branch
- ((Pull new release tags)) Edit: ./update does that automatically now
- Run ./update

**Update stuff**
- [ ] Update [redirection-service](https://github.com/noah-nuebling/redirection-service/blob/main/index.html) if necessary
- The redirection-service has an mmf2-latest link which needs to be updated, when we publish a new mmf2 version.

**Other Places** (We don't reallyyy care about these sites, and other ppl update them for us.)
- [ ] x Update Mac Update Listing
- [ ] x Update Cnet Listing
- [ ] x Update alternativeto listing

**Website** (Only relevant pre Sparkle - with Sparkle we don't need to update the Website at all)
/maindownload-app/:
* [ ] x Update 'updatenotes-app.zip'
- Update 'updatenotes-source/updatenotes-app/index.html'
- Run the 'updatenotes-source/install' script to zip stuff up and put in the right place
- [ ] x Update 'maindownload-app/bundleversion-app'
- [ ] x Update 'maindownload-app/MacMouseFixApp.zip'

**Testing**

- [ ] Test if version downloaded from GitHub download works properly
- [ ] Test on older macOS
- [ ] Test if updating from the previous version works properly
- Make sure the previous version has accessibility enabled and works properly before updating
- Make sure in-app update notes look correct
- Make sure the config is retained after update.
- Make sure the version numbers showed in the app are correct.
4 changes: 2 additions & 2 deletions Shared/Config/Config.m
Original file line number Diff line number Diff line change
Expand Up @@ -474,12 +474,12 @@ - (void)repairConfigWithReason:(MFConfigRepairReason)reason info:(id _Nullable)i
} else if (currentVersion == 23) {

/// 23 -> 24
/// (24 might be used in the next release after 3.0.3)
/// (24 will be used in MMF 3.0.4 and later) [Feb 2025]

DDLogInfo(@"repairConfig: Upgrading configVersion from 23 to 24...");

/// Delete legacy MFLicenseState cache values
/// MFLicense state cache will probably move to a dict at `License.licenseStateCache`, (and I've just added that dict in `default_config.plist`) but cache values aren't important enough to copy over to the new location, so we just delete the old values.
/// MFLicense state cache moved to a dict at `License.licenseStateCache`, (I've just added that dict in `default_config.plist`) but cache values aren't important enough to copy over to the new location, so we just delete the old values.
/// (Writing this 18 Oct 2024, working on `hyperwork` branch. 3.0.3 is the latest release.)
removeFromConfig(@"License.isLicensedCache");
removeFromConfig(@"License.licenseReasonCache");
Expand Down

0 comments on commit 3aee376

Please sign in to comment.