diff --git a/app/app.json b/app/app.json
index 5215ecc..9738ac2 100644
--- a/app/app.json
+++ b/app/app.json
@@ -3,14 +3,14 @@
"name": "BigBrainParking",
"slug": "bigbrainparking",
"scheme": "bigbrainparking",
- "version": "0.4.0",
+ "version": "0.4.1",
"orientation": "portrait",
"userInterfaceStyle": "automatic",
"newArchEnabled": true,
"icon": "./assets/icon.png",
"android": {
"package": "top.mowden.bigbrainparking",
- "versionCode": 18,
+ "versionCode": 19,
"edgeToEdgeEnabled": true,
"adaptiveIcon": {
"foregroundImage": "./assets/adaptive-icon.png",
diff --git a/app/src/screens/MeterDetailScreen.tsx b/app/src/screens/MeterDetailScreen.tsx
index 39e8494..f5d3fec 100644
--- a/app/src/screens/MeterDetailScreen.tsx
+++ b/app/src/screens/MeterDetailScreen.tsx
@@ -159,12 +159,16 @@ export function MeterDetailScreen() {
navigation.navigate('StartSession', { zone: z });
};
- // Always available — pick a duration (defaults to the labeled limit if any).
+ // Labeled free zone → check in straight at its known limit. Unlabeled → pick.
const onCheckin = () => {
+ if (labeledHours) {
+ void doCheckin(labeledHours);
+ return;
+ }
Alert.alert('Free check-in', 'Start a local timer for the free limit here:', [
- { text: labeledHours === 2 ? '2 hours ✓' : '2 hours', onPress: () => doCheckin(2) },
- { text: labeledHours === 3 ? '3 hours ✓' : '3 hours', onPress: () => doCheckin(3) },
- { text: labeledHours === 4 ? '4 hours ✓' : '4 hours', onPress: () => doCheckin(4) },
+ { text: '2 hours', onPress: () => doCheckin(2) },
+ { text: '3 hours', onPress: () => doCheckin(3) },
+ { text: '4 hours', onPress: () => doCheckin(4) },
{ text: 'Cancel', style: 'cancel' },
]);
};
@@ -280,15 +284,15 @@ export function MeterDetailScreen() {
-
-
- {labeledHours ? `Check in (free · ${labeledHours}h)` : 'Check in (free timer)'}
-
-
-
{label?.kind === 'pay_immediate' ? (
Pay immediately — no free window here.
- ) : null}
+ ) : (
+
+
+ {labeledHours ? `Check in (free · ${labeledHours}h)` : 'Check in (free timer)'}
+
+
+ )}