GitHub Viewer
From ad98c24e1dbf4db72e3241fffc6cfc5afaa5219c Mon Sep 17 00:00:00 2001
From: "srishti.dutta1111"
Date: Sun, 22 Feb 2026 14:16:47 +0530
Subject: [PATCH 1/3] enforced MACOSX_DEPLOYMENT_TARGET 10.15 for all pod
targets
Added post_install hook in Podfile to set MACOSX_DEPLOYMENT_TARGET
to 10.15 for every pod target, eliminating the deployment target
mismatch warning during macOS builds.
---
macos/Podfile | 5 ++++-
macos/Podfile.lock | 18 ++++++++++++------
2 files changed, 16 insertions(+), 7 deletions(-)
diff --git a/macos/Podfile b/macos/Podfile
index c795730d..9d3038fc 100644
--- a/macos/Podfile
+++ b/macos/Podfile
@@ -1,4 +1,4 @@
-platform :osx, '10.14'
+platform :osx, '10.15'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
@@ -39,5 +39,8 @@ end
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_macos_build_settings(target)
+ target.build_configurations.each do |config|
+ config.build_settings['MACOSX_DEPLOYMENT_TARGET'] = '10.15'
+ end
end
end
diff --git a/macos/Podfile.lock b/macos/Podfile.lock
index 4e4f915c..d3fa87e1 100644
--- a/macos/Podfile.lock
+++ b/macos/Podfile.lock
@@ -1,4 +1,6 @@
PODS:
+ - app_links (6.4.1):
+ - FlutterMacOS
- connectivity_plus (0.0.1):
- FlutterMacOS
- file_picker (0.0.1):
@@ -27,6 +29,7 @@ PODS:
- FlutterMacOS
DEPENDENCIES:
+ - app_links (from `Flutter/ephemeral/.symlinks/plugins/app_links/macos`)
- connectivity_plus (from `Flutter/ephemeral/.symlinks/plugins/connectivity_plus/macos`)
- file_picker (from `Flutter/ephemeral/.symlinks/plugins/file_picker/macos`)
- file_picker_writable (from `Flutter/ephemeral/.symlinks/plugins/file_picker_writable/macos`)
@@ -41,6 +44,8 @@ DEPENDENCIES:
- url_launcher_macos (from `Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos`)
EXTERNAL SOURCES:
+ app_links:
+ :path: Flutter/ephemeral/.symlinks/plugins/app_links/macos
connectivity_plus:
:path: Flutter/ephemeral/.symlinks/plugins/connectivity_plus/macos
file_picker:
@@ -67,19 +72,20 @@ EXTERNAL SOURCES:
:path: Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos
SPEC CHECKSUMS:
+ app_links: 05a6ec2341985eb05e9f97dc63f5837c39895c3f
connectivity_plus: 4adf20a405e25b42b9c9f87feff8f4b6fde18a4e
file_picker: 7584aae6fa07a041af2b36a2655122d42f578c1a
file_picker_writable: 016b61062ce0bfdd9f4e6cc43109a9d12c5023e7
- file_selector_macos: 6280b52b459ae6c590af5d78fc35c7267a3c4b31
+ file_selector_macos: 9e9e068e90ebee155097d00e89ae91edb2374db7
flutter_local_notifications: 13862b132e32eb858dea558a86d45d08daeacfe7
flutter_timezone: d59eea86178cbd7943cd2431cc2eaa9850f935d8
- FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24
+ FlutterMacOS: d0db08ddef1a9af05a5ec4b724367152bb0500b1
package_info_plus: f0052d280d17aa382b932f399edf32507174e870
- path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564
- shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7
+ path_provider_foundation: bb55f6dbba17d0dccd6737fe6f7f34fbd0376880
+ shared_preferences_foundation: 7036424c3d8ec98dfe75ff1667cb0cd531ec82bb
sqflite_darwin: 20b2a3a3b70e43edae938624ce550a3cbf66a3d0
- url_launcher_macos: 0fba8ddabfc33ce0a9afe7c5fef5aab3d8d2d673
+ url_launcher_macos: f87a979182d112f911de6820aefddaf56ee9fbfd
-PODFILE CHECKSUM: 236401fc2c932af29a9fcf0e97baeeb2d750d367
+PODFILE CHECKSUM: 4062a5d7621e35b4f677b9e411c2714a4f99d4c2
COCOAPODS: 1.16.2
From 0f2ef75f1441660c7bf865084627ddcd99280797 Mon Sep 17 00:00:00 2001
From: "srishti.dutta1111"
Date: Wed, 4 Mar 2026 13:18:36 +0530
Subject: [PATCH 2/3] Added automated Rust build phase for tc_helper.framework
on macOS
Added 'Build and Embed Rust Framework' shell script build phase to the
Xcode project that compiles the tc_helper Rust library from source on
every build using cargo and embeds it into the app bundle.
- Runs cargo build --release --target aarch64-apple-darwin
- Packages output as tc_helper.framework and copies to app bundle
- Errors with a clear message if Rust/cargo is not installed
- Added Frameworks/tc_helper.framework/tc_helper to .gitignore so
the compiled binary is never committed
---
macos/.gitignore | 3 +++
macos/Runner.xcodeproj/project.pbxproj | 27 +++++++++++++++++++++++---
2 files changed, 27 insertions(+), 3 deletions(-)
diff --git a/macos/.gitignore b/macos/.gitignore
index 746adbb6..410ab440 100644
--- a/macos/.gitignore
+++ b/macos/.gitignore
@@ -5,3 +5,6 @@
# Xcode-related
**/dgph
**/xcuserdata/
+
+# Rust-compiled native framework (built automatically by the Xcode build phase)
+Frameworks/tc_helper.framework/tc_helper
diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj
index 6b783a15..8363fee2 100644
--- a/macos/Runner.xcodeproj/project.pbxproj
+++ b/macos/Runner.xcodeproj/project.pbxproj
@@ -240,6 +240,7 @@
33CC10EB2044A3C60003C045 /* Resources */,
33CC110E2044A8840003C045 /* Bundle Framework */,
3399D490228B24CF009A79C7 /* ShellScript */,
+ B47EAE0DA7514E2B9140D50B /* Embed Rust Framework */,
57127D9BFB21B6F0C92D052B /* [CP] Embed Pods Frameworks */,
);
buildRules = (
@@ -363,6 +364,26 @@
shellPath = /bin/sh;
shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n";
};
+ B47EAE0DA7514E2B9140D50B /* Build and Embed Rust Framework */ = {
+ isa = PBXShellScriptBuildPhase;
+ alwaysOutOfDate = 1;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ );
+ name = "Build and Embed Rust Framework";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/tc_helper.framework/tc_helper",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "set -e\n\nRUST_DIR=\"$SRCROOT/../rust\"\nFRAMEWORK_DIR=\"$SRCROOT/Frameworks/tc_helper.framework\"\nRUST_LIB=\"$RUST_DIR/target/aarch64-apple-darwin/release/libtc_helper.dylib\"\n\nexport PATH=\"$HOME/.cargo/bin:$PATH\"\n\nif ! command -v cargo &>/dev/null; then\n echo 'error: cargo not found. Install Rust from https://rustup.rs' >&2\n exit 1\nfi\n\nrustup target add aarch64-apple-darwin 2>/dev/null || true\ncargo build --release --target aarch64-apple-darwin --manifest-path \"$RUST_DIR/Cargo.toml\"\n\nmkdir -p \"$FRAMEWORK_DIR\"\ncp -f \"$RUST_LIB\" \"$FRAMEWORK_DIR/tc_helper\"\ninstall_name_tool -id \"@rpath/tc_helper.framework/tc_helper\" \"$FRAMEWORK_DIR/tc_helper\"\n\nFRAMEWORK_DST=\"$BUILT_PRODUCTS_DIR/$FRAMEWORKS_FOLDER_PATH/tc_helper.framework\"\nmkdir -p \"$FRAMEWORK_DST\"\ncp -f \"$FRAMEWORK_DIR/tc_helper\" \"$FRAMEWORK_DST/tc_helper\"\ncodesign --force --sign \"$EXPANDED_CODE_SIGN_IDENTITY\" --preserve-metadata=identifier,entitlements \"$FRAMEWORK_DST/tc_helper\" 2>/dev/null || true\n";
+ };
33CC111E2044C6BF0003C045 /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
@@ -557,7 +578,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- MACOSX_DEPLOYMENT_TARGET = 10.14;
+ MACOSX_DEPLOYMENT_TARGET = 10.15;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = macosx;
SWIFT_COMPILATION_MODE = wholemodule;
@@ -639,7 +660,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- MACOSX_DEPLOYMENT_TARGET = 10.14;
+ MACOSX_DEPLOYMENT_TARGET = 10.15;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx;
@@ -689,7 +710,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- MACOSX_DEPLOYMENT_TARGET = 10.14;
+ MACOSX_DEPLOYMENT_TARGET = 10.15;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = macosx;
SWIFT_COMPILATION_MODE = wholemodule;
From b40f0c61ca1d72548b3405cc32881ff42ee888dc Mon Sep 17 00:00:00 2001
From: "srishti.dutta1111"
Date: Sun, 22 Feb 2026 14:17:21 +0530
Subject: [PATCH 3/3] guarded HomeWidget.setAppGroupId behind mobile platform
check
HomeWidget.setAppGroupId is only available on iOS and Android.
Calling it on macOS threw MissingPluginException, crashing the app
before the UI could render.
Added a Platform.isIOS || Platform.isAndroid guard so the call is
skipped on macOS and other desktop platforms.
---
lib/app/utils/app_settings/app_settings.dart | 6 +-
macos/Flutter/GeneratedPluginRegistrant.swift | 2 +
pubspec.lock | 108 +++++++++++++-----
3 files changed, 85 insertions(+), 31 deletions(-)
diff --git a/lib/app/utils/app_settings/app_settings.dart b/lib/app/utils/app_settings/app_settings.dart
index 335132ab..82679a04 100644
--- a/lib/app/utils/app_settings/app_settings.dart
+++ b/lib/app/utils/app_settings/app_settings.dart
@@ -1,3 +1,5 @@
+import 'dart:io';
+
import 'package:get/get.dart';
import 'package:home_widget/home_widget.dart';
import 'package:shared_preferences/shared_preferences.dart';
@@ -14,7 +16,9 @@ class AppSettings {
static final RxBool use24HourFormatRx = false.obs;
static Future init() async {
- await HomeWidget.setAppGroupId("group.taskwarrior");
+ if (Platform.isIOS || Platform.isAndroid) {
+ await HomeWidget.setAppGroupId("group.taskwarrior");
+ }
await SelectedTheme.init();
await SelectedLanguage.init();
await SaveTourStatus.init();
diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift
index cb98b370..91b0fc33 100644
--- a/macos/Flutter/GeneratedPluginRegistrant.swift
+++ b/macos/Flutter/GeneratedPluginRegistrant.swift
@@ -5,6 +5,7 @@
import FlutterMacOS
import Foundation
+import app_links
import connectivity_plus
import file_picker
import file_picker_writable
@@ -18,6 +19,7 @@ import sqflite_darwin
import url_launcher_macos
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
+ AppLinksMacosPlugin.register(with: registry.registrar(forPlugin: "AppLinksMacosPlugin"))
ConnectivityPlusPlugin.register(with: registry.registrar(forPlugin: "ConnectivityPlusPlugin"))
FilePickerPlugin.register(with: registry.registrar(forPlugin: "FilePickerPlugin"))
FilePickerWritablePlugin.register(with: registry.registrar(forPlugin: "FilePickerWritablePlugin"))
diff --git a/pubspec.lock b/pubspec.lock
index c7182030..7ed86ed6 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -5,18 +5,18 @@ packages:
dependency: transitive
description:
name: _fe_analyzer_shared
- sha256: da0d9209ca76bde579f2da330aeb9df62b6319c834fa7baae052021b0462401f
+ sha256: c209688d9f5a5f26b2fb47a188131a6fb9e876ae9e47af3737c0b4f58a93470d
url: "https://pub.dev"
source: hosted
- version: "85.0.0"
+ version: "91.0.0"
analyzer:
dependency: transitive
description:
name: analyzer
- sha256: "974859dc0ff5f37bc4313244b3218c791810d03ab3470a579580279ba971a48d"
+ sha256: f51c8499b35f9b26820cfe914828a6a98a94efd5cc78b37bb7d03debae3a1d08
url: "https://pub.dev"
source: hosted
- version: "7.7.1"
+ version: "8.4.1"
ansicolor:
dependency: transitive
description:
@@ -25,6 +25,38 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.0.3"
+ app_links:
+ dependency: "direct main"
+ description:
+ name: app_links
+ sha256: "5f88447519add627fe1cbcab4fd1da3d4fed15b9baf29f28b22535c95ecee3e8"
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.4.1"
+ app_links_linux:
+ dependency: transitive
+ description:
+ name: app_links_linux
+ sha256: f5f7173a78609f3dfd4c2ff2c95bd559ab43c80a87dc6a095921d96c05688c81
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.3"
+ app_links_platform_interface:
+ dependency: transitive
+ description:
+ name: app_links_platform_interface
+ sha256: "05f5379577c513b534a29ddea68176a4d4802c46180ee8e2e966257158772a3f"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.0.2"
+ app_links_web:
+ dependency: transitive
+ description:
+ name: app_links_web
+ sha256: af060ed76183f9e2b87510a9480e56a5352b6c249778d07bd2c95fc35632a555
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.4"
archive:
dependency: transitive
description:
@@ -65,6 +97,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "3.1.0"
+ build_cli_annotations:
+ dependency: transitive
+ description:
+ name: build_cli_annotations
+ sha256: e563c2e01de8974566a1998410d3f6f03521788160a02503b0b1f1a46c7b3d95
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.1"
build_config:
dependency: transitive
description:
@@ -125,10 +165,10 @@ packages:
dependency: transitive
description:
name: characters
- sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803
+ sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b
url: "https://pub.dev"
source: hosted
- version: "1.4.0"
+ version: "1.4.1"
checked_yaml:
dependency: transitive
description:
@@ -253,10 +293,10 @@ packages:
dependency: transitive
description:
name: dart_style
- sha256: "8a0e5fba27e8ee025d2ffb4ee820b4e6e2cf5e4246a6b1a477eb66866947e0bb"
+ sha256: a9c30492da18ff84efe2422ba2d319a89942d93e58eb0b73d32abe822ef54b7b
url: "https://pub.dev"
source: hosted
- version: "3.1.1"
+ version: "3.1.3"
dartx:
dependency: transitive
description:
@@ -519,6 +559,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.0.32"
+ flutter_rust_bridge:
+ dependency: "direct main"
+ description:
+ name: flutter_rust_bridge
+ sha256: "37ef40bc6f863652e865f0b2563ea07f0d3c58d8efad803cc01933a4b2ee067e"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.11.1"
flutter_slidable:
dependency: "direct main"
description:
@@ -601,6 +649,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.3.2"
+ gtk:
+ dependency: transitive
+ description:
+ name: gtk
+ sha256: e8ce9ca4b1df106e4d72dad201d345ea1a036cc12c360f1a7d5a758f78ffa42c
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.0"
hashcodes:
dependency: transitive
description:
@@ -721,14 +777,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.0.5"
- js:
- dependency: transitive
- description:
- name: js
- sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3
- url: "https://pub.dev"
- source: hosted
- version: "0.6.7"
json_annotation:
dependency: transitive
description:
@@ -797,18 +845,18 @@ packages:
dependency: transitive
description:
name: matcher
- sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2
+ sha256: "12956d0ad8390bbcc63ca2e1469c0619946ccb52809807067a7020d57e647aa6"
url: "https://pub.dev"
source: hosted
- version: "0.12.17"
+ version: "0.12.18"
material_color_utilities:
dependency: transitive
description:
name: material_color_utilities
- sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
+ sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b"
url: "https://pub.dev"
source: hosted
- version: "0.11.1"
+ version: "0.13.0"
meta:
dependency: transitive
description:
@@ -829,10 +877,10 @@ packages:
dependency: "direct main"
description:
name: mockito
- sha256: "2314cbe9165bcd16106513df9cf3c3224713087f09723b128928dc11a4379f99"
+ sha256: a45d1aa065b796922db7b9e7e7e45f921aed17adf3a8318a1f47097e7e695566
url: "https://pub.dev"
source: hosted
- version: "5.5.0"
+ version: "5.6.3"
nm:
dependency: transitive
description:
@@ -1141,10 +1189,10 @@ packages:
dependency: transitive
description:
name: shelf_web_socket
- sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1"
+ sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925"
url: "https://pub.dev"
source: hosted
- version: "1.0.4"
+ version: "3.0.0"
sizer:
dependency: "direct main"
description:
@@ -1330,26 +1378,26 @@ packages:
dependency: "direct main"
description:
name: test
- sha256: "75906bf273541b676716d1ca7627a17e4c4070a3a16272b7a3dc7da3b9f3f6b7"
+ sha256: "54c516bbb7cee2754d327ad4fca637f78abfc3cbcc5ace83b3eda117e42cd71a"
url: "https://pub.dev"
source: hosted
- version: "1.26.3"
+ version: "1.29.0"
test_api:
dependency: transitive
description:
name: test_api
- sha256: ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55
+ sha256: "93167629bfc610f71560ab9312acdda4959de4df6fac7492c89ff0d3886f6636"
url: "https://pub.dev"
source: hosted
- version: "0.7.7"
+ version: "0.7.9"
test_core:
dependency: transitive
description:
name: test_core
- sha256: "0cc24b5ff94b38d2ae73e1eb43cc302b77964fbf67abad1e296025b78deb53d0"
+ sha256: "394f07d21f0f2255ec9e3989f21e54d3c7dc0e6e9dbce160e5a9c1a6be0e2943"
url: "https://pub.dev"
source: hosted
- version: "0.6.12"
+ version: "0.6.15"
textfield_tags:
dependency: "direct main"
description: