diff --git a/.github/workflows/ios.yml b/.github/workflows/ios.yml index 4459564..08e9093 100644 --- a/.github/workflows/ios.yml +++ b/.github/workflows/ios.yml @@ -22,7 +22,18 @@ jobs: extra_nix_config: experimental-features = nix-command flakes flake-self-attrs - name: Build app - run: nix develop --command bash -c "flutter pub get && dart scripts/generate.dart && flutter pub run build_runner build && flutter build ios --release --no-codesign" + run: | + nix develop --command bash -c ' + set -e + flutter pub get + dart scripts/generate.dart + flutter pub run build_runner build + + FLUTTER_ROOT="$(dirname "$(dirname "$(readlink -f "$(command -v flutter)")")")" + sudo find -L "$FLUTTER_ROOT" -type d -iname "*.framework" -exec chmod -R u+w {} + + + flutter build ios --release --no-codesign + ' # Unsigned IPA: SideStore/AltStore re-sign this on-device with the # user's own Apple ID at install time, so no certificate is needed here. diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index e7040fa..df7a47a 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -22,10 +22,21 @@ jobs: extra_nix_config: experimental-features = nix-command flakes flake-self-attrs - name: Build app - run: nix develop --command bash -c "flutter pub get && dart scripts/generate.dart && flutter pub run build_runner build && flutter build macos --release" + run: | + nix develop --command bash -c ' + set -e + flutter pub get + dart scripts/generate.dart + flutter pub run build_runner build + + FLUTTER_ROOT="$(dirname "$(dirname "$(readlink -f "$(command -v flutter)")")")" + sudo find -L "$FLUTTER_ROOT" -type d -iname "*.framework" -exec chmod -R u+w {} + + + flutter build macos --release + ' - name: Upload installer artifact uses: actions/upload-artifact@v6 with: name: App - path: build/macos/Build/Products/Release/Nexus.app \ No newline at end of file + path: build/macos/Build/Products/Release/Nexus.app diff --git a/.gitignore b/.gitignore index 2bec583..935a117 100644 --- a/.gitignore +++ b/.gitignore @@ -41,4 +41,7 @@ key.properties password.txt # Nix -/result \ No newline at end of file +/result + +# Local IPA builds +*.ipa \ No newline at end of file diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 57b889d..065d08b 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -336,7 +336,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "export PATH=\"$PROJECT_DIR/scripts:$PATH\"\n/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -351,7 +351,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "export PATH=\"$PROJECT_DIR/scripts:$PATH\"\n/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; EE82EC529EB6C0F1FA480659 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; diff --git a/ios/scripts/lipo b/ios/scripts/lipo deleted file mode 100755 index eea1eea..0000000 --- a/ios/scripts/lipo +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -# Workaround for NixOS/nixpkgs#405066: frameworks copied from the Nix store -# stay read-only, so lipo can't write its temporary output file when Flutter -# thins them during the build. Make the framework writable before delegating -# to the real lipo. -for arg in "$@"; do - case "$arg" in - */*.framework/*) - fw_dir="${arg%.framework/*}.framework" - chmod -R +w "$fw_dir" 2>/dev/null - ;; - esac -done - -exec /usr/bin/lipo "$@" diff --git a/lib/widgets/composer/composer.dart b/lib/widgets/composer/composer.dart index ca3de8a..5eb7db3 100644 --- a/lib/widgets/composer/composer.dart +++ b/lib/widgets/composer/composer.dart @@ -234,7 +234,10 @@ class Composer extends HookConsumerWidget { child: TextField( maxLines: 12, minLines: 1, - autofocus: true, + autofocus: + Platform.isLinux || + Platform.isMacOS || + Platform.isWindows, decoration: .new( hintText: "Your message here...", border: .none, diff --git a/lib/widgets/room_chat.dart b/lib/widgets/room_chat.dart index cb1e695..e867008 100644 --- a/lib/widgets/room_chat.dart +++ b/lib/widgets/room_chat.dart @@ -467,6 +467,8 @@ class RoomChat extends HookConsumerWidget { AsyncData(:final value?) || AsyncLoading(:final value?) => CustomScrollView( controller: scrollController, + keyboardDismissBehavior: + ScrollViewKeyboardDismissBehavior.onDrag, slivers: [ SliverToBoxAdapter( child: Padding( diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index 3dbb24b..67876ad 100644 --- a/macos/Runner.xcodeproj/project.pbxproj +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -349,7 +349,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "export PATH=\"$PROJECT_DIR/scripts:$PATH\"\necho \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; + shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; }; 33CC111E2044C6BF0003C045 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; @@ -369,7 +369,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "export PATH=\"$PROJECT_DIR/scripts:$PATH\"\n\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; + shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; 446C82D5FE82BD05F78EDA6A /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; diff --git a/macos/scripts/lipo b/macos/scripts/lipo deleted file mode 100755 index 9e32655..0000000 --- a/macos/scripts/lipo +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -# Workaround for NixOS/nixpkgs#405066: frameworks copied from the Nix store -# stay read-only, so lipo can't write its temporary output file when Flutter -# thins FlutterMacOS.framework during the build. Make the framework writable -# before delegating to the real lipo. -for arg in "$@"; do - case "$arg" in - */*.framework/*) - fw_dir="${arg%.framework/*}.framework" - chmod -R +w "$fw_dir" 2>/dev/null - ;; - esac -done - -exec /usr/bin/lipo "$@"