14 Commits

Author SHA1 Message Date
irene 1db5f3dedf ci: split into fast analyze + slow release build with path gating
analyze runs on every push/PR (fast check).
release-apk only fires on push to master or workflow_dispatch (slow build).
Doc-only pushes no longer trigger any CI run.
workflow_dispatch triggers both jobs unconditionally.
2026-08-27 23:59:05 +09:00
irene 27ca718e54 ci: split into fast analyze + slow release build with path gating
analyze runs on every push/PR (fast check).
release-apk only fires on push to master or workflow_dispatch (slow build).
Doc-only pushes no longer trigger any CI run.
workflow_dispatch triggers both jobs unconditionally.
2026-08-27 23:58:02 +09:00
irene 8096b6809c ci: split into fast analyze + slow release build with path gating
analyze job runs on push/PR regardless of changed files (fast check).
release-apk job only fires when Dart source, Android, pubspec, or
tooling files change on push to master (slow build).
workflow_dispatch triggers both jobs unconditionally.
Doc-only pushes no longer trigger any CI run.
2026-08-27 23:56:31 +09:00
irene 6b137b9c9f Merge branch 'feat/release-2.3.0' into master
CI / Analyze & Build (push) Successful in 1m19s
2026-08-27 20:55:01 +09:00
irene 411166ef5d feat: bump version to 2.3.0+2
Release 2.3.0 with 4Hz GPS update interval, CI workflow, and lint fixes
2026-08-27 20:53:41 +09:00
irene b2f0015556 Merge branch 'fix/analysis-options' into master
CI / Analyze & Build (push) Successful in 3m5s
2026-08-27 13:41:24 +09:00
irene f9a33809a2 fix: disable sort_pub_dependencies lint rule 2026-08-27 13:41:06 +09:00
irene abd6d779ea fix: sort pubspec.yaml dependencies alphabetically 2026-08-27 13:37:56 +09:00
irene 92815c4682 fix: address remaining lint warnings 2026-08-27 13:36:57 +09:00
irene 8a3487f65e fix: suppress constant_identifier_names lint in analysis_options.yaml
SCREAMING_SNAKE_CASE is project convention for GPS constants.
2026-08-27 13:35:16 +09:00
irene 64b80eecc9 Merge branch 'ci/gps-speedo-workflow' into master
CI / Analyze & Build (push) Failing after 11s
2026-08-27 13:17:43 +09:00
irene 43f1e4ecb2 Merge branch 'feat/gps-update-interval' into master 2026-08-27 13:17:43 +09:00
irene 449e345e3e ci: add CI workflow (analyze + release APK)
- Modelled on iperf3-gui: analyze job on flutter-android runner.
- flutter analyze + flutter build apk --release.
- Uploads release APK as artifact.
2026-08-27 13:17:43 +09:00
irene c2bcd685cf feat: add 4Hz GPS update interval
- Switch LocationSettings to AndroidSettings with intervalDuration: 250ms.
- 250ms = 4Hz; higher rate is only achievable when GNSS is available (not indoors).
2026-08-27 13:17:15 +09:00
5 changed files with 76 additions and 24 deletions
+58
View File
@@ -0,0 +1,58 @@
name: CI
on:
push:
branches: [ master ]
paths:
- 'lib/**.dart'
- 'test/**.dart'
- 'android/**'
- 'pubspec.yaml'
- 'pubspec.lock'
pull_request:
branches: [ master ]
workflow_dispatch:
# Target the self-hosted Flutter/Android runner at the android-stuff org.
# See tool/setup_ci_runner.sh for how that runner is provisioned.
#
# The runner is host-mode so the same JDK 17 + Android SDK + Flutter
# toolchain is used as the verified release — nothing installs per-run.
jobs:
analyze:
name: Analyze & Test
runs-on: flutter-android
steps:
- uses: actions/checkout@v4
- name: Toolchain
run: |
flutter --version
echo "ANDROID_HOME=${ANDROID_HOME:?not set on this runner}"
- name: Get dependencies
run: flutter pub get
- name: Analyze
run: flutter analyze
release-apk:
name: Release APK
runs-on: flutter-android
needs: [analyze]
if: github.event_name == 'push' || github.event_name == 'workflow_dispatch'
steps:
- uses: actions/checkout@v4
- name: Get dependencies
run: flutter pub get
- name: Build release APK
run: flutter build apk --release
- uses: actions/upload-artifact@v4
with:
name: app-release-apk
path: build/app/outputs/flutter-apk/app-release.apk
if-no-files-found: error
+8
View File
@@ -10,3 +10,11 @@ analyzer:
- windows/** - windows/**
- macos/** - macos/**
- linux/** - linux/**
linter:
rules:
prefer_single_quotes: true
# SCREAMING_SNAKE_CASE for constants is project convention
constant_identifier_names: false
# sort_pub_dependencies doesn't play well with flutter SDK dep first
sort_pub_dependencies: false
+2 -1
View File
@@ -15,9 +15,10 @@ class GpsService {
LocationAccuracy accuracy = LocationAccuracy.high, LocationAccuracy accuracy = LocationAccuracy.high,
}) { }) {
return Geolocator.getPositionStream( return Geolocator.getPositionStream(
locationSettings: LocationSettings( locationSettings: AndroidSettings(
accuracy: accuracy, accuracy: accuracy,
distanceFilter: 0, distanceFilter: 0,
intervalDuration: Duration(milliseconds: 250),
), ),
); );
} }
+1 -1
View File
@@ -23,7 +23,7 @@ class OverlayService {
() async { () async {
await FlutterOverlayWindow.showOverlay( await FlutterOverlayWindow.showOverlay(
enableDrag: true, enableDrag: true,
overlayTitle: "Speedometer", overlayTitle: 'Speedometer',
overlayContent: 'Speedo overlay active', overlayContent: 'Speedo overlay active',
flag: OverlayFlag.defaultFlag, flag: OverlayFlag.defaultFlag,
visibility: NotificationVisibility.visibilityPublic, visibility: NotificationVisibility.visibilityPublic,
+7 -22
View File
@@ -2,7 +2,7 @@ name: gps_speedo
description: "Speedo - A Flutter application." description: "Speedo - A Flutter application."
publish_to: 'none' publish_to: 'none'
version: 2.2.2+1 version: 2.3.0+2
environment: environment:
sdk: ^3.9.0 sdk: ^3.9.0
@@ -11,37 +11,22 @@ dependencies:
flutter: flutter:
sdk: flutter sdk: flutter
# cupertino_icons: ^1.0.8
# Probably no icons needed for now
# GPS and Location Services - Essential only # GPS and Location Services - Essential only
bg_launcher: ^0.1.0
flutter_overlay_window: ^0.5.0
geolocator: ^14.0.2 geolocator: ^14.0.2
permission_handler: ^12.0.1 permission_handler: ^12.0.1
# Keep screen awake during navigation
wakelock_plus: ^1.2.8
# Floating window overlay capability
flutter_overlay_window: ^0.5.0
# Bring app to foreground from background/overlay
bg_launcher: ^0.1.0
# State management
provider: ^6.1.2 provider: ^6.1.2
# Persistent settings storage
shared_preferences: ^2.3.4
# Retry logic for platform operations
retry: ^3.1.2 retry: ^3.1.2
shared_preferences: ^2.3.4
wakelock_plus: ^1.2.8
dev_dependencies: dev_dependencies:
flutter_launcher_icons: "^0.14.4"
flutter_lints: ^6.0.0
flutter_test: flutter_test:
sdk: flutter sdk: flutter
flutter_lints: ^6.0.0
flutter_launcher_icons: "^0.14.4"
flutter: flutter:
uses-material-design: true uses-material-design: true