diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ad457c7..ca3f6632 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,20 @@ # Changelog +## 2022.1 (24) +Features/Improvements: +- Local only posts (Glitch/Hometown) + - Show indicator for local only posts + - Add local only option to Compose screen +- Add extend selection button to asset picker when the limited library was used +- Improve profile directory UI +- Improve scrolling performance with large attachments on older devices + +Bugfixes: +- Fix crash when closing Preferences +- Fix crash when posting attachment fails +- Fix scrolling through compose autocomplete suggestions dismissing keyboard +- Only show Mute action on your own posts + ## 2021.1 (23) Features/Improvements: - Synchronize GIF playback through animations and in gallery diff --git a/Tusker.xcodeproj/project.pbxproj b/Tusker.xcodeproj/project.pbxproj index e7ef0f70..f301038c 100644 --- a/Tusker.xcodeproj/project.pbxproj +++ b/Tusker.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 52; + objectVersion = 54; objects = { /* Begin PBXBuildFile section */ @@ -126,7 +126,6 @@ D6333B372137838300CE884A /* AttributedString+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6333B362137838300CE884A /* AttributedString+Helpers.swift */; }; D6333B792139AEFD00CE884A /* Date+TimeAgo.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6333B782139AEFD00CE884A /* Date+TimeAgo.swift */; }; D63569E023908A8D003DD353 /* StatusState.swift in Sources */ = {isa = PBXBuildFile; fileRef = D60A4FFB238B726A008AC647 /* StatusState.swift */; }; - D635ED5027ACD9260003635B /* WebURL in Frameworks */ = {isa = PBXBuildFile; productRef = D635ED4F27ACD9260003635B /* WebURL */; }; D63661C02381C144004B9E16 /* PreferencesNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D63661BF2381C144004B9E16 /* PreferencesNavigationController.swift */; }; D6370B9C24421FF30092A7FF /* Tusker.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = D6370B9A24421FF30092A7FF /* Tusker.xcdatamodeld */; }; D63A8D0B2561C27F00D9DFFF /* ProfileStatusesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D63A8D0A2561C27F00D9DFFF /* ProfileStatusesViewController.swift */; }; @@ -178,7 +177,6 @@ D663626C21361C6700C9CBA2 /* Account+Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = D663626B21361C6700C9CBA2 /* Account+Preferences.swift */; }; D66362752137068A00C9CBA2 /* Visibility+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = D66362742137068A00C9CBA2 /* Visibility+Helpers.swift */; }; D6674AEA23341F7600E8DF94 /* AppShortcutItems.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6674AE923341F7600E8DF94 /* AppShortcutItems.swift */; }; - D6676CA327A8D0020052936B /* WebURL in Frameworks */ = {isa = PBXBuildFile; productRef = D6676CA227A8D0020052936B /* WebURL */; }; D6676CA527A8D0020052936B /* WebURLFoundationExtras in Frameworks */ = {isa = PBXBuildFile; productRef = D6676CA427A8D0020052936B /* WebURLFoundationExtras */; }; D667E5E12134937B0057A976 /* TimelineStatusTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D667E5E02134937B0057A976 /* TimelineStatusTableViewCell.xib */; }; D667E5F12134D5050057A976 /* UIViewController+Delegates.swift in Sources */ = {isa = PBXBuildFile; fileRef = D667E5F02134D5050057A976 /* UIViewController+Delegates.swift */; }; @@ -341,6 +339,7 @@ D6EE63FB2551F7F60065485C /* StatusCollapseButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6EE63FA2551F7F60065485C /* StatusCollapseButton.swift */; }; D6F0B12B24A3071C001E48C3 /* MainSplitViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6F0B12A24A3071C001E48C3 /* MainSplitViewController.swift */; }; D6F0B17524A3A1AA001E48C3 /* MainSidebarViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6F0B17424A3A1AA001E48C3 /* MainSidebarViewController.swift */; }; + D6F1F9DF27B0613300CB7D88 /* WebURL in Frameworks */ = {isa = PBXBuildFile; productRef = D6F1F9DE27B0613300CB7D88 /* WebURL */; settings = {ATTRIBUTES = (Required, ); }; }; D6F2E965249E8BFD005846BB /* CrashReporterViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6F2E963249E8BFD005846BB /* CrashReporterViewController.swift */; }; D6F2E966249E8BFD005846BB /* CrashReporterViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D6F2E964249E8BFD005846BB /* CrashReporterViewController.xib */; }; D6F953F021251A2900CF0F2B /* MastodonController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6F953EF21251A2900CF0F2B /* MastodonController.swift */; }; @@ -769,7 +768,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D635ED5027ACD9260003635B /* WebURL in Frameworks */, + D6F1F9DF27B0613300CB7D88 /* WebURL in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -785,7 +784,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D6676CA327A8D0020052936B /* WebURL in Frameworks */, D61099C02144B0CC00432DC2 /* Pachyderm.framework in Frameworks */, D6B0539F23BD2BA300A066FA /* SheetController in Frameworks */, D69CCBBF249E6EFD000AF167 /* CrashReporter in Frameworks */, @@ -1727,7 +1725,7 @@ ); name = Pachyderm; packageProductDependencies = ( - D635ED4F27ACD9260003635B /* WebURL */, + D6F1F9DE27B0613300CB7D88 /* WebURL */, ); productName = Pachyderm; productReference = D61099AB2144B0CC00432DC2 /* Pachyderm.framework */; @@ -1762,6 +1760,7 @@ D6F953E52125197500CF0F2B /* Embed Frameworks */, D65F612C23AE957600F3CFD3 /* Embed debug-only frameworks */, D6E3438F2659849800C4AA01 /* Embed App Extensions */, + D6F1F9E127B0677000CB7D88 /* ShellScript */, ); buildRules = ( ); @@ -1774,7 +1773,6 @@ D6B0539E23BD2BA300A066FA /* SheetController */, D69CCBBE249E6EFD000AF167 /* CrashReporter */, D60CFFDA24A290BA00D00083 /* SwiftSoup */, - D6676CA227A8D0020052936B /* WebURL */, D6676CA427A8D0020052936B /* WebURLFoundationExtras */, ); productName = Tusker; @@ -2008,6 +2006,24 @@ shellPath = /bin/sh; shellScript = "#if [ \"${CONFIGURATION}\" == \"Debug\" ]; then\n# echo \"Embedding ${SCRIPT_INPUT_FILE_0}\"\n# cp -R $SCRIPT_INPUT_FILE_0 $SCRIPT_OUTPUT_FILE_0\n# codesign --force --verbose --sign $EXPANDED_CODE_SIGN_IDENTITY $SCRIPT_OUTPUT_FILE_0\n# \n# echo \"Embedding ${SCRIPT_INPUT_FILE_1}\"\n# cp -R $SCRIPT_INPUT_FILE_1 $SCRIPT_OUTPUT_FILE_1\n# codesign --force --verbose --sign $EXPANDED_CODE_SIGN_IDENTITY $SCRIPT_OUTPUT_FILE_1\n#else\n# echo \"Skipping embedding debug frameworks\"\n#fi\n"; }; + D6F1F9E127B0677000CB7D88 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Type a script or drag a script file from your workspace to insert its path.\n\n# the nested framework doens't get signed automatically for some reason\n# so we sign it ourselves\n#codesign --force --verbose --sign $EXPANDED_CODE_SIGN_IDENTITY \"$BUILT_PRODUCTS_DIR/Tusker.app/Frameworks/Pachyderm.framework/Frameworks/WebURL.framework\"\n\n# xcode wants to include the weburl framework twice for some reason, but the app store doesn't like nested frameworks\n# we already have a copy in the app's Frameworks/ dir, so we can delete the nested one\nif [ \"$(ls \"$BUILT_PRODUCTS_DIR/Tusker.app/Frameworks/Pachyderm.framework/Frameworks/\")\" -ne \"WebURL.framework\" ]; then\n exit 1\nfi\nrm -rf \"$BUILT_PRODUCTS_DIR/Tusker.app/Frameworks/Pachyderm.framework/Frameworks/\"\n"; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -2414,11 +2430,11 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; - CODE_SIGN_IDENTITY = ""; + CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = HGYVAQA9FW; + DEVELOPMENT_TEAM = V4WK9KR9U2; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; @@ -2430,6 +2446,8 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); + OTHER_CODE_SIGN_FLAGS = "--deep"; + OTHER_SWIFT_FLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = space.vaccor.Tusker.Pachyderm; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SKIP_INSTALL = YES; @@ -2445,11 +2463,11 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; - CODE_SIGN_IDENTITY = ""; + CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = HGYVAQA9FW; + DEVELOPMENT_TEAM = V4WK9KR9U2; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; @@ -2461,6 +2479,8 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); + OTHER_CODE_SIGN_FLAGS = "--deep"; + OTHER_SWIFT_FLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = space.vaccor.Tusker.Pachyderm; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SKIP_INSTALL = YES; @@ -2641,7 +2661,7 @@ CODE_SIGN_ENTITLEMENTS = Tusker/Tusker.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 23; + CURRENT_PROJECT_VERSION = 24; DEVELOPMENT_TEAM = V4WK9KR9U2; INFOPLIST_FILE = Tusker/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 14.1; @@ -2650,7 +2670,8 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 2021.1; + MARKETING_VERSION = 2022.1; + OTHER_CODE_SIGN_FLAGS = ""; OTHER_LDFLAGS = ""; "OTHER_SWIFT_FLAGS[sdk=iphone*14*]" = "$(inherited) -D SDK_IOS_14"; PRODUCT_BUNDLE_IDENTIFIER = space.vaccor.Tusker; @@ -2671,7 +2692,7 @@ CODE_SIGN_ENTITLEMENTS = Tusker/Tusker.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 23; + CURRENT_PROJECT_VERSION = 24; DEVELOPMENT_TEAM = V4WK9KR9U2; INFOPLIST_FILE = Tusker/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 14.1; @@ -2680,7 +2701,8 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 2021.1; + MARKETING_VERSION = 2022.1; + OTHER_CODE_SIGN_FLAGS = ""; "OTHER_SWIFT_FLAGS[sdk=iphone*14*]" = "$(inherited) -D SDK_IOS_14"; PRODUCT_BUNDLE_IDENTIFIER = space.vaccor.Tusker; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -2780,7 +2802,7 @@ CODE_SIGN_ENTITLEMENTS = OpenInTusker/OpenInTusker.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 23; + CURRENT_PROJECT_VERSION = 24; DEVELOPMENT_TEAM = V4WK9KR9U2; INFOPLIST_FILE = OpenInTusker/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 14.1; @@ -2790,7 +2812,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 2021.1; + MARKETING_VERSION = 2022.1; PRODUCT_BUNDLE_IDENTIFIER = space.vaccor.Tusker.OpenInTusker; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -2807,7 +2829,7 @@ CODE_SIGN_ENTITLEMENTS = OpenInTusker/OpenInTusker.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 23; + CURRENT_PROJECT_VERSION = 24; DEVELOPMENT_TEAM = V4WK9KR9U2; INFOPLIST_FILE = OpenInTusker/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 14.1; @@ -2817,7 +2839,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 2021.1; + MARKETING_VERSION = 2022.1; PRODUCT_BUNDLE_IDENTIFIER = space.vaccor.Tusker.OpenInTusker; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -2936,16 +2958,6 @@ package = D60CFFD924A290BA00D00083 /* XCRemoteSwiftPackageReference "SwiftSoup" */; productName = SwiftSoup; }; - D635ED4F27ACD9260003635B /* WebURL */ = { - isa = XCSwiftPackageProductDependency; - package = D6676CA127A8D0020052936B /* XCRemoteSwiftPackageReference "swift-url" */; - productName = WebURL; - }; - D6676CA227A8D0020052936B /* WebURL */ = { - isa = XCSwiftPackageProductDependency; - package = D6676CA127A8D0020052936B /* XCRemoteSwiftPackageReference "swift-url" */; - productName = WebURL; - }; D6676CA427A8D0020052936B /* WebURLFoundationExtras */ = { isa = XCSwiftPackageProductDependency; package = D6676CA127A8D0020052936B /* XCRemoteSwiftPackageReference "swift-url" */; @@ -2961,6 +2973,11 @@ package = D6B0539D23BD2BA300A066FA /* XCRemoteSwiftPackageReference "SheetController" */; productName = SheetController; }; + D6F1F9DE27B0613300CB7D88 /* WebURL */ = { + isa = XCSwiftPackageProductDependency; + package = D6676CA127A8D0020052936B /* XCRemoteSwiftPackageReference "swift-url" */; + productName = WebURL; + }; /* End XCSwiftPackageProductDependency section */ /* Begin XCVersionGroup section */ diff --git a/Tusker.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Tusker.xcworkspace/xcshareddata/swiftpm/Package.resolved index db44909b..f1c12db2 100644 --- a/Tusker.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Tusker.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -33,7 +33,7 @@ "repositoryURL": "https://github.com/karwa/swift-url", "state": { "branch": "main", - "revision": "1519936d9813af86e57c06dc7f727cb281de9f16", + "revision": "9d06f9f89397de16c8942aa123c425568654fd6a", "version": null } }, diff --git a/Tusker/Info.plist b/Tusker/Info.plist index cda7e021..f7780369 100644 --- a/Tusker/Info.plist +++ b/Tusker/Info.plist @@ -56,7 +56,7 @@ NSMicrophoneUsageDescription Post videos from the camera. NSPhotoLibraryAddUsageDescription - Save photos directly from other people's posts. + Save photos directly from other people's posts. NSPhotoLibraryUsageDescription Post photos from the photo library. NSUserActivityTypes