From 8dd7b3afb3faa6e8060bd478fe92af47e26265aa Mon Sep 17 00:00:00 2001 From: Brendan Chen Date: Tue, 16 Jun 2026 18:12:58 -0400 Subject: [PATCH 1/2] feat: add GitHub and website links to Settings Add an "About" section to the Settings screen with GitHub and Website links. Both destinations are configurable via the OAL_GITHUB_URL / OAL_WEBSITE_URL user-defined build settings (Config/Shared.xcconfig) and read centrally through the new AppLinks accessor. Custom keys can't be injected into a generated Info.plist, so the build settings ride into the app through a partial OpenAppLock/Info.plist (OALGitHubURL / OALWebsiteURL), with a synchronized-group membership exception so the plist isn't double-produced. Verified red-green: unit tests cover AppLinks parsing and the full build-setting -> Info.plist pipeline; a UI test asserts each button opens the configured URL via an openURL interceptor, fed deterministic URLs through new -github-url= / -website-url= launch args. Co-Authored-By: Claude Opus 4.8 (1M context) --- AGENTS.md | 4 +- Config/Shared.xcconfig | 16 +++++ Docs/AGENT_RULES_FEATURE_SPEC.md | 27 +++++++- OpenAppLock.xcodeproj/project.pbxproj | 14 ++++ OpenAppLock/Info.plist | 16 +++++ OpenAppLock/Services/AppLinks.swift | 40 ++++++++++++ .../Services/LaunchConfiguration.swift | 14 ++++ OpenAppLock/Views/Settings/SettingsView.swift | 65 +++++++++++++++++++ OpenAppLockTests/AppLinksTests.swift | 53 +++++++++++++++ OpenAppLockTests/LaunchSupportTests.swift | 18 +++++ OpenAppLockUITests/SettingsUITests.swift | 21 ++++++ OpenAppLockUITests/UITestSupport.swift | 14 +++- 12 files changed, 298 insertions(+), 4 deletions(-) create mode 100644 OpenAppLock/Info.plist create mode 100644 OpenAppLock/Services/AppLinks.swift create mode 100644 OpenAppLockTests/AppLinksTests.swift diff --git a/AGENTS.md b/AGENTS.md index cc72984..4df3cc2 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -141,6 +141,7 @@ when reminded: | `-onboarding-completed` / `-onboarding-required` | Force the onboarding flag | | `-seed-scenario=standard` | Active soft rule "Work Time" + upcoming "Sleep" | | `-seed-scenario=hard-mode-active` | Active Hard Mode rule "Locked In" + upcoming "Sleep" | +| `-github-url=` / `-website-url=` | Override the Settings About links with deterministic URLs | Use `XCUIApplication.launchOpenAppLock(...)` (UITestSupport.swift), which also provides `app.element(_:)` for identifier lookup across element types and @@ -155,7 +156,8 @@ them): `newRuleButton`, `ruleCard-`, `ruleStatus-`, `maxOpensStepper(+Value)`, `commitRuleButton`, `doneButton`, `toggleEnabledButton`, `deleteRuleButton`, `closeDetailButton`, `detailRuleName`, `detailStatusLabel`, `detailRow-