Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d3d73c255e | |||
| 72cfbf41f3 |
@@ -103,6 +103,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
PREV_TAG=$(git tag --sort=-version:refname | grep -v "^${{ github.ref_name }}$" | head -1)
|
PREV_TAG=$(git tag --sort=-version:refname | grep -v "^${{ github.ref_name }}$" | head -1)
|
||||||
echo "Previous tag: $PREV_TAG"
|
echo "Previous tag: $PREV_TAG"
|
||||||
|
echo "prev_tag=$PREV_TAG" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
FEATS=$(git log "${PREV_TAG}..HEAD" --pretty=format:"%s" --no-merges \
|
FEATS=$(git log "${PREV_TAG}..HEAD" --pretty=format:"%s" --no-merges \
|
||||||
| grep -E "^feat(\([^)]+\))?: " \
|
| grep -E "^feat(\([^)]+\))?: " \
|
||||||
@@ -129,9 +130,45 @@ jobs:
|
|||||||
## SheetHappens ${{ github.ref_name }}
|
## SheetHappens ${{ github.ref_name }}
|
||||||
|
|
||||||
${{ steps.changelog.outputs.changelog }}
|
${{ steps.changelog.outputs.changelog }}
|
||||||
|
[Full changelog](https://github.com/${{ github.repository }}/compare/${{ steps.changelog.outputs.prev_tag }}...${{ github.ref_name }}) · [CHANGELOG.md](https://github.com/${{ github.repository }}/blob/main/CHANGELOG.md)
|
||||||
|
|
||||||
### Installation
|
### Installation
|
||||||
1. Enable "Unknown sources" on the device
|
1. Enable "Unknown sources" on the device
|
||||||
2. Transfer the APK to the device and open it to install
|
2. Transfer the APK to the device and open it to install
|
||||||
files: ${{ steps.apk.outputs.path }}
|
files: ${{ steps.apk.outputs.path }}
|
||||||
draft: false
|
draft: false
|
||||||
prerelease: ${{ contains(github.ref_name, '-') }}
|
prerelease: ${{ contains(github.ref_name, '-') }}
|
||||||
|
|
||||||
|
- name: Create Gitea Release
|
||||||
|
env:
|
||||||
|
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
||||||
|
TAG: ${{ github.ref_name }}
|
||||||
|
PREV_TAG: ${{ steps.changelog.outputs.prev_tag }}
|
||||||
|
CHANGELOG: ${{ steps.changelog.outputs.changelog }}
|
||||||
|
GH_REPO: ${{ github.repository }}
|
||||||
|
run: |
|
||||||
|
if [ -z "$GITEA_TOKEN" ]; then
|
||||||
|
echo "GITEA_TOKEN not set — skipping Gitea release"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
BODY="## SheetHappens ${TAG}
|
||||||
|
|
||||||
|
${CHANGELOG}
|
||||||
|
|
||||||
|
[Full changelog](https://homegit.gyozamancave.fr/billisdead/SheetHappens/compare/${PREV_TAG}...${TAG}) · [CHANGELOG.md](https://homegit.gyozamancave.fr/billisdead/SheetHappens/raw/branch/main/CHANGELOG.md)
|
||||||
|
|
||||||
|
### Installation
|
||||||
|
Download the APK from the [GitHub release](https://github.com/${GH_REPO}/releases/tag/${TAG}), enable \"Unknown sources\" on the device and install."
|
||||||
|
|
||||||
|
curl -sf -X POST \
|
||||||
|
-H "Authorization: token ${GITEA_TOKEN}" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
"https://homegit.gyozamancave.fr/api/v1/repos/billisdead/SheetHappens/releases" \
|
||||||
|
-d "{
|
||||||
|
\"tag_name\": \"${TAG}\",
|
||||||
|
\"name\": \"SheetHappens ${TAG}\",
|
||||||
|
\"body\": $(printf '%s' "$BODY" | jq -Rs .),
|
||||||
|
\"draft\": false,
|
||||||
|
\"prerelease\": $([ "${TAG#*-}" != "${TAG}" ] && echo true || echo false)
|
||||||
|
}"
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
# Changelog
|
||||||
|
|
||||||
|
All notable changes to SheetHappens are documented here.
|
||||||
|
Each release links to the full diff for detailed context.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## [v0.1.7] — 2026-06-22
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
- Revert splash screen overrides that caused Android crash-to-desktop — expo-router already manages the splash lifecycle internally
|
||||||
|
- Remove redundant `SafeAreaProvider` wrapper (expo-router's `ExpoRoot` already injects it)
|
||||||
|
|
||||||
|
[View changes](https://github.com/pirona/SheetHappens/compare/v0.1.6...v0.1.7)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## [v0.1.6] — 2026-06-22
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
- Prevent black screen on launch by holding splash until SecureStore settings load
|
||||||
|
- Add `splash.backgroundColor` to `app.json` to match app theme on Android
|
||||||
|
|
||||||
|
[View changes](https://github.com/pirona/SheetHappens/compare/v0.1.5...v0.1.6)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## [v0.1.5] — 2026-06-22
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
- Fix signed APK release: inject signing secrets via env vars, write `signing.env` with `printf %q` to handle special characters
|
||||||
|
- Add `signing.env` verification step in CI
|
||||||
|
|
||||||
|
[View changes](https://github.com/pirona/SheetHappens/compare/v0.1.0...v0.1.5)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## [v0.1.0] — Initial release
|
||||||
|
|
||||||
|
### Features
|
||||||
|
- Incident log with SQLite persistence
|
||||||
|
- Voice input via `expo-speech-recognition`
|
||||||
|
- Edit mode, service autocomplete
|
||||||
|
- Dark theme (NativeWind + expo-router)
|
||||||
|
- Onboarding flow
|
||||||
|
- Signed APK via GitHub Actions CI
|
||||||
+18
-23
@@ -2,13 +2,10 @@ import { useEffect } from "react";
|
|||||||
import { Stack, router, SplashScreen } from "expo-router";
|
import { Stack, router, SplashScreen } from "expo-router";
|
||||||
import { StatusBar } from "expo-status-bar";
|
import { StatusBar } from "expo-status-bar";
|
||||||
import { GestureHandlerRootView } from "react-native-gesture-handler";
|
import { GestureHandlerRootView } from "react-native-gesture-handler";
|
||||||
import { SafeAreaProvider } from "react-native-safe-area-context";
|
|
||||||
import "../global.css";
|
import "../global.css";
|
||||||
import { Colors } from "@/constants/theme";
|
import { Colors } from "@/constants/theme";
|
||||||
import { useSettings } from "@/hooks/useSettings";
|
import { useSettings } from "@/hooks/useSettings";
|
||||||
|
|
||||||
SplashScreen.preventAutoHideAsync();
|
|
||||||
|
|
||||||
export default function RootLayout() {
|
export default function RootLayout() {
|
||||||
const { settings, ready } = useSettings();
|
const { settings, ready } = useSettings();
|
||||||
|
|
||||||
@@ -25,25 +22,23 @@ export default function RootLayout() {
|
|||||||
}, [ready, settings.onboardingDone]);
|
}, [ready, settings.onboardingDone]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<SafeAreaProvider>
|
<GestureHandlerRootView style={{ flex: 1, backgroundColor: Colors.bg }}>
|
||||||
<GestureHandlerRootView style={{ flex: 1, backgroundColor: Colors.bg }}>
|
<StatusBar style="light" />
|
||||||
<StatusBar style="light" />
|
<Stack
|
||||||
<Stack
|
screenOptions={{
|
||||||
screenOptions={{
|
headerStyle: { backgroundColor: Colors.surface },
|
||||||
headerStyle: { backgroundColor: Colors.surface },
|
headerTintColor: Colors.text1,
|
||||||
headerTintColor: Colors.text1,
|
headerTitleStyle: { color: Colors.text1 },
|
||||||
headerTitleStyle: { color: Colors.text1 },
|
contentStyle: { backgroundColor: Colors.bg },
|
||||||
contentStyle: { backgroundColor: Colors.bg },
|
animation: "slide_from_right",
|
||||||
animation: "slide_from_right",
|
}}
|
||||||
}}
|
>
|
||||||
>
|
<Stack.Screen name="index" options={{ title: "SheetHappens" }} />
|
||||||
<Stack.Screen name="index" options={{ title: "SheetHappens" }} />
|
<Stack.Screen name="new" options={{ title: "New Incident", presentation: "modal" }} />
|
||||||
<Stack.Screen name="new" options={{ title: "New Incident", presentation: "modal" }} />
|
<Stack.Screen name="incident/[id]" options={{ title: "Incident" }} />
|
||||||
<Stack.Screen name="incident/[id]" options={{ title: "Incident" }} />
|
<Stack.Screen name="settings" options={{ title: "Settings" }} />
|
||||||
<Stack.Screen name="settings" options={{ title: "Settings" }} />
|
<Stack.Screen name="onboarding" options={{ headerShown: false }} />
|
||||||
<Stack.Screen name="onboarding" options={{ headerShown: false }} />
|
</Stack>
|
||||||
</Stack>
|
</GestureHandlerRootView>
|
||||||
</GestureHandlerRootView>
|
|
||||||
</SafeAreaProvider>
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user