Compare commits

...
12 Commits
Author SHA1 Message Date
tech08mag f6abf628e3 Merge pull request 'new release pipe' (#29) from dev into main
Build and Release APK / build (push) Failing after 3m48s
Build and Release APK / release (push) Skipped
Reviewed-on: #29
2026-08-28 20:00:40 +00:00
tech08mag 40077da57f new release pipe 2026-08-28 22:00:13 +02:00
tech08mag aa57d07dc0 Merge pull request 'gradle update' (#28) from dev into main
Build APK / build (push) Successful in 17m50s
release / release (push) Canceled after 0s
Reviewed-on: #28
2026-08-28 19:39:21 +00:00
tech08mag 89c85ed7c0 gradle update 2026-08-28 21:38:23 +02:00
tech08mag ee6af8fb26 Merge pull request 'fixxing pipe dependencies' (#27) from dev into main
Build APK / build (push) Failing after 1m36s
release / release (push) Canceled after 0s
Reviewed-on: #27
2026-08-28 19:35:16 +00:00
tech08mag c6e441d449 fixxing pipe dependencies 2026-08-28 21:34:14 +02:00
tech08mag 5043d9cdff Merge pull request 'fixxing android pipe' (#26) from dev into main
Build APK / build (push) Failing after 48s
release / release (push) Canceled after 0s
Reviewed-on: #26
2026-08-28 19:30:31 +00:00
tech08mag 7e36244478 fixxing android pipe 2026-08-28 21:29:12 +02:00
tech08mag 157fc8d95b Merge pull request 'pipe' (#24) from dev into main
Build APK / build (push) Failing after 2m55s
release / release (push) Canceled after 0s
Reviewed-on: #24
2026-08-27 18:42:32 +00:00
tech08mag 4d2f92b144 pipe 2026-08-27 20:41:31 +02:00
tech08mag 8e805316fb Merge pull request 'new pipe' (#23) from dev into main
Build Desktop (deb) / build (push) Failing after 5m18s
Build APK / build (push) Successful in 15m35s
release / release (push) Canceled after 0s
Reviewed-on: #23
2026-08-27 18:04:54 +00:00
tech08mag 77051e5206 new pipe 2026-08-27 20:03:05 +02:00
9 changed files with 93 additions and 138 deletions
-75
View File
@@ -1,75 +0,0 @@
name: Build APK
on:
push:
branches: [main]
workflow_dispatch:
env:
ANDROID_HOME: ${{ runner.tool_cache }}/android-sdk
ANDROID_SDK_ROOT: ${{ runner.tool_cache }}/android-sdk
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: 22
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
- name: Install Android SDK
run: |
if [ -x "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" ]; then
echo "Android SDK already present in cache"
else
rm -rf "$ANDROID_HOME/cmdline-tools"
mkdir -p "$ANDROID_HOME/cmdline-tools"
wget -q https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip -O /tmp/cmdtools.zip
unzip -q /tmp/cmdtools.zip -d "$ANDROID_HOME/cmdline-tools"
mv "$ANDROID_HOME/cmdline-tools/cmdline-tools" "$ANDROID_HOME/cmdline-tools/latest"
fi
printf 'y\n' | "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" --licenses > /dev/null
"$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" \
"platform-tools" \
"platforms;android-35" \
"platforms;android-36" \
"build-tools;35.0.0" \
"build-tools;36.0.0" \
"ndk;27.1.12297006"
mkdir -p carry-your-live/android/app
echo "sdk.dir=$ANDROID_HOME" > carry-your-live/android/app/local.properties
- name: Install JS dependencies
working-directory: carry-your-live
run: npm ci
- name: Generate debug keystore (signs the release APK)
run: |
mkdir -p carry-your-live/android/app
rm -f carry-your-live/android/app/debug.keystore
keytool -genkeypair -v \
-keystore carry-your-live/android/app/debug.keystore \
-alias androiddebugkey -storepass android -keypass android \
-keyalg RSA -keysize 2048 -validity 10000 \
-dname "CN=Android Debug,O=Android,C=US"
- name: Build release APK
run: |
cd carry-your-live/android
./gradlew assembleRelease
- name: Upload APK
uses: actions/upload-artifact@v4
with:
name: carry-your-live-release
path: carry-your-live/android/app/build/outputs/release/app-release.apk
-36
View File
@@ -1,36 +0,0 @@
name: Build Desktop (deb)
on:
push:
branches: [main]
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: 22
- name: Install JS dependencies
working-directory: carry-your-live
run: npm ci
- name: Export web bundle
working-directory: carry-your-live
run: npx expo export --platform web
- name: Build deb package
working-directory: carry-your-live
run: npx electron-builder --linux deb --config electron-builder.config.js
- name: Upload deb
uses: actions/upload-artifact@v4
with:
name: carry-your-live-desktop-deb
path: carry-your-live/desktop-build/*.deb
+84 -4
View File
@@ -1,15 +1,88 @@
name: release
name: Build and Release APK
on:
push:
branches:
- main
branches: [main]
workflow_dispatch:
env:
ANDROID_HOME: ${{ runner.tool_cache }}/android-sdk
ANDROID_SDK_ROOT: ${{ runner.tool_cache }}/android-sdk
permissions:
contents: write
jobs:
build:
runs-on: ubuntu-latest
outputs:
apk-path: ${{ steps.upload-apk.outputs.path }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: 22
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
- name: Install Android SDK
run: |
if [ -x "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" ]; then
echo "Android SDK already present in cache"
else
rm -rf "$ANDROID_HOME/cmdline-tools"
mkdir -p "$ANDROID_HOME/cmdline-tools"
wget -q https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip -O /tmp/cmdtools.zip
unzip -q /tmp/cmdtools.zip -d "$ANDROID_HOME/cmdline-tools"
mv "$ANDROID_HOME/cmdline-tools/cmdline-tools" "$ANDROID_HOME/cmdline-tools/latest"
fi
printf 'y\n' | "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" --licenses > /dev/null
"$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" \
"platform-tools" \
"platforms;android-36" \
"build-tools;36.0.0" \
"ndk;27.1.12297006"
mkdir -p carry-your-live/android/app
echo "sdk.dir=$ANDROID_HOME" > carry-your-live/android/app/local.properties
- name: Install JS dependencies
working-directory: carry-your-live
run: |
for i in {1..3}; do
npm ci && break || sleep 10
done
- name: Generate debug keystore (signs the release APK)
run: |
mkdir -p carry-your-live/android/app
rm -f carry-your-live/android/app/debug.keystore
keytool -genkeypair -v \
-keystore carry-your-live/android/app/debug.keystore \
-alias androiddebugkey -storepass android -keypass android \
-keyalg RSA -keysize 2048 -validity 10000 \
-dname "CN=Android Debug,O=Android,C=US"
- name: Build release APK
run: |
cd carry-your-live/android
./gradlew assembleRelease
- name: Upload APK
id: upload-apk
uses: actions/upload-artifact@v4
with:
name: carry-your-live-release
path: carry-your-live/android/app/build/outputs/release/app-release.apk
release:
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout
@@ -17,6 +90,12 @@ jobs:
with:
fetch-depth: 0
- name: Download APK artifact
uses: actions/download-artifact@v4
with:
name: carry-your-live-release
path: .
- name: Compute next version
id: version
run: |
@@ -53,4 +132,5 @@ jobs:
tag_name: ${{ steps.version.outputs.next }}
name: ${{ steps.version.outputs.next }}
body: ${{ steps.changelog.outputs.body }}
generate_release_notes: false
files: ./app-release.apk
generate_release_notes: false
+3
View File
@@ -1,4 +1,7 @@
pluginManagement {
repositories {
gradlePluginPortal()
}
def reactNativeGradlePlugin = new File(
providers.exec {
workingDir(rootDir)
-4
View File
@@ -63,7 +63,6 @@ screenOptions={{
key={route.name}
style={[
styles.tabItem,
focused && styles.tabItemActive,
{ backgroundColor: focused ? theme.accentSoft : 'transparent' },
]}
onPress={() => props.navigation.navigate(route.name as never)}
@@ -122,9 +121,6 @@ const styles = StyleSheet.create({
borderRadius: 8,
minWidth: 70,
},
tabItemActive: {
backgroundColor: theme.accentSoft,
},
rippleContainer: {
width: 44,
height: 44,
+1 -15
View File
@@ -10,7 +10,6 @@ import { useEffect } from 'react';
import { requestQuickAddFocus } from '@/utils/quickAddFocus';
import { registerForPushNotificationsAsync, setupNotificationChannels, addNotificationResponseReceivedListener, removeNotificationSubscription } from '@/services/pushNotifications';
import * as Notifications from 'expo-notifications';
import { Platform } from 'react-native';
Notifications.setNotificationHandler({
handleNotification: async () => ({
@@ -57,31 +56,18 @@ function RootNavigator() {
Linking.getInitialURL().then(handleUrl).catch(() => {});
const subscription = Linking.addEventListener('url', ({ url }) => handleUrl(url));
useEffect(() => {
const handleKeyDown = (event: KeyboardEvent) => {
if (event.key === 'Escape') {
const router = useRouter();
router.back();
}
};
window.addEventListener('keydown', handleKeyDown);
return () => window.removeEventListener('keydown', handleKeyDown);
}, []);
useEffect(() => {
const unsubscribe = Linking.addEventListener('url', ({ url }) => {
if (!url || !url.includes('://quick-add')) return;
router.replace('/(tabs)');
requestQuickAddFocus();
});
return () => unsubscribe();
}, []);
return () => {
subscription.remove();
removeNotificationSubscription(responseListener);
window.removeEventListener('keydown', handleKeyDown);
};
}, [router]);
@@ -220,5 +220,9 @@ export const migrations = schemaMigrations({
}),
],
},
{
toVersion: 21,
steps: [],
},
],
});
+1 -2
View File
@@ -11,7 +11,6 @@ import RepeatProfile from '@/models/RepeatProfile';
import Friendship from '@/models/Friendship';
import { TombstoneEntity } from '@/models/Tombstone';
import { fetchPendingTombstones, removeTombstonesInBatch } from './tombstones';
import { useOnline } from '@/hooks/useOnline';
const LAST_PULLED_AT_KEY = 'sync:lastPulledAt';
const LAST_PUSHED_AT_KEY = 'sync:lastPushedAt';
@@ -96,7 +95,7 @@ export async function runSync(): Promise<SyncResult> {
}
// If offline, mark timestamps and return early - changes will sync on next foreground launch
const isCurrentlyOnline = await useOnline();
const isCurrentlyOnline = navigator.onLine;
if (!isCurrentlyOnline) {
const now = Date.now();
await setLastPulledAt(now);
-2
View File
@@ -1,2 +0,0 @@
tech08mag
7BXtaqyvwVB15W