mirror of
https://github.com/Dvorinka/Containr.git
synced 2026-10-28 07:41:27 +00:00
* feat(offline): persisted query cache + unreachable banner (web + mobile) - Web: PersistQueryClientProvider on localStorage (24h maxAge); mobile: AsyncStorage persister (7d). Both exclude high-churn keys (logs, notifications, metrics) — stale tails are worse than none. - networkMode 'offlineFirst' so cached data serves while the refetch attempt fails. - Web: ConnectivityBanner in PlatformShell pings public /health every 15s + listens to online/offline events — slim "last-known data" bar so persisted state can't masquerade as live. - Mobile: same banner in the tabs layout — /health ping plus expo-network's local signal distinguishes "no connection" from "instance down". Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com> * feat(mobile): cron jobs screen — schedules, run-now, execution history - /service/cron lists the service's jobs with schedule, timezone, last/next run, and last status; "Run now" triggers via the existing POST /cron-jobs/:id/trigger and "History" expands recent executions with status + output/error. - Manage row on the service detail + Stack registration. Verified live: created */5 job on a running service, triggered it — execution recorded with status success and captured stdout. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com> --------- Co-authored-by: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
40 lines
1.1 KiB
JSON
40 lines
1.1 KiB
JSON
{
|
|
"name": "containr-mobile",
|
|
"version": "1.0.0",
|
|
"main": "expo-router/entry",
|
|
"dependencies": {
|
|
"@expo/vector-icons": "^15.0.2",
|
|
"@react-native-async-storage/async-storage": "2.2.0",
|
|
"@tanstack/query-async-storage-persister": "^5.104.1",
|
|
"@tanstack/react-query": "^5.104.1",
|
|
"@tanstack/react-query-persist-client": "^5.104.1",
|
|
"expo": "~57.0.27",
|
|
"expo-constants": "~57.0.21",
|
|
"expo-font": "~57.0.4",
|
|
"expo-linking": "~57.0.12",
|
|
"expo-network": "~57.0.2",
|
|
"expo-router": "~57.0.25",
|
|
"expo-secure-store": "~57.0.4",
|
|
"expo-status-bar": "~57.0.1",
|
|
"react": "19.2.3",
|
|
"react-dom": "19.2.3",
|
|
"react-native": "0.86.3",
|
|
"react-native-safe-area-context": "~5.7.0",
|
|
"react-native-screens": "~4.26.0"
|
|
},
|
|
"devDependencies": {
|
|
"@types/react": "~19.2.2",
|
|
"eslint": "^9.39.5",
|
|
"eslint-config-expo": "~57.0.2",
|
|
"typescript": "~6.0.3"
|
|
},
|
|
"scripts": {
|
|
"start": "expo start",
|
|
"android": "expo run:android",
|
|
"ios": "expo run:ios",
|
|
"web": "expo start --web",
|
|
"lint": "expo lint"
|
|
},
|
|
"private": true
|
|
}
|