3 Commits

Author SHA1 Message Date
billisdead d3d73c255e feat: add CHANGELOG.md and auto-create Gitea release on tag push
Release APK / build (push) Has been cancelled
Release body now includes conventional-commit bullet points, a compare
link (prev_tag...current_tag) and a link to CHANGELOG.md for both the
GitHub release and a new Gitea release created via API.
GITEA_TOKEN secret must be added to GitHub repo secrets to enable
the Gitea release step.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-22 11:27:28 +02:00
billisdead 72cfbf41f3 fix: revert splash screen overrides, remove redundant SafeAreaProvider
expo-router 56 already calls _internal_preventAutoHideAsync() internally.
Calling preventAutoHideAsync() at module level created a second user lock
that blocked the native splash indefinitely on Android, causing a crash.
SafeAreaProvider removed as expo-router's ExpoRoot already wraps with it.
Keep SplashScreen.hideAsync() to release the splash after SecureStore reads.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-22 11:26:24 +02:00
billisdead 86303e5c84 fix: prevent black screen on launch by holding splash until settings ready
Release APK / build (push) Has been cancelled
Add SplashScreen.preventAutoHideAsync() at module level and hideAsync()
once SecureStore reads complete. Add splash backgroundColor to app.json
to match app theme. Wrap layout in SafeAreaProvider.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-22 09:00:39 +02:00
4 changed files with 92 additions and 1 deletions
+37
View File
@@ -103,6 +103,7 @@ jobs:
run: |
PREV_TAG=$(git tag --sort=-version:refname | grep -v "^${{ github.ref_name }}$" | head -1)
echo "Previous tag: $PREV_TAG"
echo "prev_tag=$PREV_TAG" >> "$GITHUB_OUTPUT"
FEATS=$(git log "${PREV_TAG}..HEAD" --pretty=format:"%s" --no-merges \
| grep -E "^feat(\([^)]+\))?: " \
@@ -129,9 +130,45 @@ jobs:
## SheetHappens ${{ github.ref_name }}
${{ 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
1. Enable "Unknown sources" on the device
2. Transfer the APK to the device and open it to install
files: ${{ steps.apk.outputs.path }}
draft: false
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)
}"
+46
View File
@@ -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
+3
View File
@@ -6,6 +6,9 @@
"orientation": "portrait",
"userInterfaceStyle": "dark",
"backgroundColor": "#0f1117",
"splash": {
"backgroundColor": "#0f1117"
},
"scheme": "sheethappens",
"android": {
"adaptiveIcon": {
+6 -1
View File
@@ -1,5 +1,5 @@
import { useEffect } from "react";
import { Stack, router } from "expo-router";
import { Stack, router, SplashScreen } from "expo-router";
import { StatusBar } from "expo-status-bar";
import { GestureHandlerRootView } from "react-native-gesture-handler";
import "../global.css";
@@ -9,6 +9,11 @@ import { useSettings } from "@/hooks/useSettings";
export default function RootLayout() {
const { settings, ready } = useSettings();
useEffect(() => {
if (!ready) return;
SplashScreen.hideAsync();
}, [ready]);
useEffect(() => {
if (!ready) return;
if (!settings.onboardingDone) {