feat/mobile-live-update #11

Merged
hume merged 26 commits from feat/mobile-live-update into main 2026-08-23 19:24:52 +00:00
Owner
No description provided.
hume self-assigned this 2026-08-23 19:24:37 +00:00
hume added 26 commits 2026-08-23 19:24:38 +00:00
feat(mobile): add Live Update + download page + release setup
All checks were successful
Release / release (push) Successful in 2m41s
880b4c3642
- Add @capawesome/capacitor-live-update@6.0.0 for OTA updates
- Configure LiveUpdate in capacitor.config.ts with Forgejo URL
- Create liveUpdate.ts service with self-hosted update check
- Initialize LiveUpdate in main.ts
- Add MobileDownloadView.vue for both mobile and frontend
- Add /mobile-download route to both routers
- Add 'Télécharger l'app mobile' button on frontend Dashboard
- Create .env.production with correct VITE_API_URL
- Add mobile-release-setup.md documentation
- Add build-mobile-release.sh script
- Add Forgejo CI/CD workflow template
ci: add dedicated mobile release workflow (mobile-v* tags)
Some checks failed
Release / release (push) Has been cancelled
Mobile Release / build-and-release (push) Has been cancelled
81e17930c4
- Triggers only on mobile-v* tags (not on main branch pushes)
- Builds APK + Live Update bundle
- Uploads to Forgejo Releases
- Does NOT build backend/frontend images
ci: fix mobile-release.yml to use docker runner with inline Android SDK setup
Some checks failed
Mobile Release / build-and-release (push) Failing after 11s
Release / release (push) Has been skipped
9c5794cbb4
- deploy/deploy-mobile.sh: script complet (build web, cap sync, APK release, Live Update bundle, Forgejo upload, tag git)
- deploy/README.md: documentation complète
- deploy/setup-forgejo-token.sh: helper pour configurer le token
- deploy/verify-apk.sh: vérification APK généré

Usage: ./deploy/deploy-mobile.sh [version]
Nécessite: Mac/PC x86_64, Android SDK, JDK 17, FORGEJO_TOKEN
- Search for both signed (app-release.apk) and unsigned (app-release-unsigned.apk) APKs
- Support arm64-v8a output directory
- Copy to standard app-release.apk for upload
- arm64 Mac: warn instead of block (Rosetta 2 works)
- Fix all Authorization headers to use ${FORGEJO_TOKEN} variable
- Fix indentation issues causing syntax errors
- Add cleanup for copied app-release.apk
- Support unsigned APK on arm64 builds
deploy: rewrite script in pure ASCII (no UTF-8 accents) for Mac bash compatibility
Some checks failed
Mobile Release / build-and-release (push) Failing after 9s
Release / release (push) Has been skipped
5e3145fe60
fix deploy-mobile.sh
Some checks failed
Mobile Release / build-and-release (push) Failing after 9s
Release / release (push) Has been skipped
084e8aad0c
deploy: add remote tag deletion before push (for re-deploys)
Some checks failed
Mobile Release / build-and-release (push) Failing after 7s
Release / release (push) Has been skipped
cf91cb30b8
- Add qrcode.vue to mobile and frontend
- Update MobileDownloadView with QR code section
- Add fetchLatestRelease to get version from Forgejo
- Remove mobile-release.yml (using deploy script instead)
- Mobile: use simple toast system (no primevue)
- Frontend: use primevue toast + qrcode.vue
feat(mobile): remove QR code from mobile app (frontend only)
All checks were successful
Release / release (push) Has been skipped
d29682e91d
- MobileDownloadView: removed qrcode.vue import and QR section
- MobileDownloadView: kept simple download button + copy link
- uninstalled qrcode.vue from mobile package.json
- Group QR code with download button in single card
- Desktop: 'Copier le lien' instead of direct download
- Mobile: direct APK download
- Remove plain URL display (security)
- Responsive grid layout
- Add MobileAppVersion model with platform, version, urls, mandatory flag
- Add POST /api/v1/mobile/app-version (create)
- Add PUT /api/v1/mobile/app-version/{platform} (update)
- Add GET /api/v1/mobile/app-version/{platform} (get latest)
- Alembic migration for mobile_app_versions table
- Deploy script now updates DB after Forgejo release
- MobileDownloadView now fetches version from /api/v1/mobile/app-version/android
- Fallback to Forgejo releases if API unavailable
- Uses dynamic URLs from DB instead of hardcoded paths
- Single 'Copier le lien' button (removed duplicate)
- 'Télécharger l'APK' always opens in new tab for direct download
- QR code uses dynamic URL from backend API
- Loading states on buttons
- Better responsive layout
Backend:
- MobileAppVersion model with platform, version, build_number, URLs, is_active, is_mandatory
- Admin API: CRUD endpoints at /api/v1/admin/official-data/mobile-app-version
- Public API: GET /api/v1/mobile/app-version/{platform} for frontend/mobile

Frontend:
- AdminOfficialDataView: Mobile Version section with summary card (single active version)
- Uses activeVersion computed (finds is_active or first)
- Create/Edit dialog with all fields
- MobileDownloadView: fetches version from backend API, fallback to Forgejo
- Single 'Copier le lien' button, direct download opens in new tab
- QR code uses dynamic URL from backend

Deploy script:
- After Forgejo release, POSTs to backend API to update DB
- Auto-deletes existing local/remote tags before push
- Builds debug APK (signed) for direct install
- Mobile app version endpoints now declared before catch-all /{entry_id}
- Admin API /mobile-app-version works correctly
Backend:
- MobileAppVersion model: removed release_tag, apk_url, bundle_url, latest_json_url columns
- Added @property methods to auto-generate URLs from version + Forgejo base
- Admin API: updated schemas (create/update only need version, build_number, etc.)
- mobile.py: unchanged (uses model properties)

Frontend:
- Types: MobileAppVersionCreate/Update only need version, build_number, release_notes, is_active, is_mandatory, min_supported_version, published_at
- Admin UI: removed release_tag, apk_url, bundle_url, latest_json_url fields from dialog
- Summary view: still shows auto-generated URLs (via API response)
- Validation: simplified to only require platform + version
Backend:
- MobileAppVersion model: only stores version, build_number, release_notes, is_active, is_mandatory, min_supported_version, published_at
- URLs (release_tag, apk_url, bundle_url, latest_json_url) auto-generated via @property
- Partial unique index: one active version per platform (where is_active=true)
- API POST /api/v1/mobile/app-version only requires version, build_number, etc.
- Admin API updated to match

Frontend:
- MobileDownloadView.vue: fetches version from API, displays auto-generated URLs in QR code
- AdminOfficialDataView.vue: simplified form (version, build_number, release_notes, is_active, is_mandatory, min_supported_version, published_at)
- Types updated: MobileAppVersionCreate/Update only need essential fields

Deploy script:
- update_db_version() only sends version + build_number + is_active + is_mandatory + published_at
- Backend auto-generates all URLs from Forgejo base

DB migrations applied:
- 110931540ddc: removed URL columns
- 69e1303ebde2: partial unique index on (platform) where is_active

CORS: added port 5176 for test frontend
fix(frontend+backend): complete mobile download page with toast + CORS fixes
All checks were successful
Backend / backend (pull_request) Successful in 1m0s
Frontend / frontend (pull_request) Successful in 20s
Migration Test / migration-test (pull_request) Successful in 45s
Mobile Frontend / Build Web Assets (pull_request) Successful in 10m19s
457760a8e8
- MobileDownloadView: use VITE_API_URL instead of hardcoded prod URL
- Copy link: fallback to execCommand for HTTP (non-secure contexts)
- Toast: import Toast component in App.vue for global notifications
- Backend Dockerfile: run alembic upgrade head on startup (auto-migrate)
- CORS: origin https://sci.humectzx.duckdns.org allowed for production

Tested:
- Admin UI: CRUD mobile versions (7 fields)
- Mobile download: QR + Télécharger + Copier + Toast
- API: v0.0.0 (fallback) + v1.0.x active versions
- CORS: works for both test (5176) and prod origins
- Forgejo: public download without auth
hume merged commit a87f7fa7b4 into main 2026-08-23 19:24:52 +00:00
hume deleted branch feat/mobile-live-update 2026-08-23 19:24:53 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
hume/sci-rental-manager!11
No description provided.