Repository navigation
Releases
ThrottleIQ — beta-v4.15.0 (v1.0.0-beta.4.15.0+38)
• Comments, replies, posts, votes and forum follows now work offline. They're saved on your phone, marked "waiting to upload" with the time you wrote them, and sent when you're back online.
• Forum notice board: the newest notice from a forum's owner is pinned on Pulse.
• Safer accounts: ThrottleIQ now connects only when installed from Google Play.
• When an update is needed, the app takes you straight to Google Play.
• Fixes for opening ThrottleIQ links.
Android builds ship through Google Play only: https://throttleiqfb.web.app/install
ThrottleIQ — beta-v4.9.0 (v1.0.0-beta.4.9.0+31)
🏍️ ThrottleIQ Release beta-v4.9.0 (v1.0.0-beta.4.9.0+31)
Recent Updates
- chore(release): drop Android build from deploy pipeline; Play Store only
- chore(release): bump version to 1.0.0-beta.4.9.0+31 and update deployment artifacts
- feat(share): password-protected /r/@handle link with last known location
- docs(handoff): share-to-groups rules and indexes deployed
- feat: side-by-side tour, no radar banner, offline places cache, write-first forum posts
- chore(release): retire APKs; Android ships through Google Play only
- docs(handoff): release beta-v4.8.0 (+30)
Install
Android builds ship through Google Play only: https://throttleiqfb.web.app/install
ThrottleIQ — beta-v4.8.0 (v1.0.0-beta.4.8.0+30)
Install: Android builds ship through Google Play only. Get the invite at https://throttleiqfb.web.app/install. APKs are no longer published.
🏍️ ThrottleIQ Release beta-v4.8.0 (v1.0.0-beta.4.8.0+30)
Recent Updates
- chore(release): bump version to 1.0.0-beta.4.8.0+30 and update deployment artifacts
- docs(posters): batch_three, 18 posters from real app screens
- fix(claude): retro status line also runs the account's own status line
- docs(handoff): branches and session notes after the 2026-10-22 agent run
- docs(needs-attention): drafts, likes steps 2-3, privacy gaps and CodeQL from the 2026-10-22 run
- docs(handoff): keep mayabi current by merging main, no force-push
- docs(agent-rooms): product manager status after the 2026-10-22 agent run
- docs(agent-rooms): chief of staff status after the 2026-10-22 agent run
- docs(agent-rooms): qa engineer status after the 2026-10-22 agent run
- docs(agent-rooms): operations manager status after the 2026-10-22 agent run
- docs(agent-rooms): architect status after the 2026-10-22 agent run
- Merge lane/h-widget-tests into integration/agent-rooms-2026-10-22
- test(ui): active ride and sign-in screen tests; §83.28 status
- fix(sync-issues): show the Retry result after the card unmounts
- Merge lane/e-drafts into integration/agent-rooms-2026-10-22
- Merge lane/g-report-silently into integration/agent-rooms-2026-10-22
- docs(drafts): lane E owner-review drafts for agent rooms
- fix(errors): reportSilently for swallowed catches, bare-catch ratchet test (§83.14)
- Merge lane/c-functions into integration/agent-rooms-2026-10-22
- Merge lane/b-crash-timestamps into integration/agent-rooms-2026-10-22
- Merge lane/a-reads-likes into integration/agent-rooms-2026-10-22
- fix(cloud): keep late refusals visible for ride checkpoints and badges (§104.6)
- fix(privacy): floor crashEvents.createdAt to the UTC hour
- fix(functions): bounded report purge, purge time budget, retry-safe erasure
- fix(social): stop sweeping legacy likes on share delete (§80 step 1)
- Merge fix/reads-104: screen write acks, group-ride interval, vote reads (§104)
- docs(load-test): move load_test reports under Handoff for agents and Todos
- docs(guardian): onboarding guardian slide table for tour v5
- style(tour): dart format the slide page
- docs(agent-rooms): per-role agent to-do hubs, linked from the DOCS map
- docs(ui): dark-UI screenshot book (PDF, 2026-10-22)
- docs(ui): dark-UI screenshots, feature tour steps from tour v5
- fix(export): UTC timezone skew for GPX/JSON and upgrade Gradle wrapper to 8.14
- feat(places): on-device live-ride places cache (§104.1) and Data Safety docs (§110.5)
- feat(tour): show the real screens, one accent, steps grouped by tab (v5)
- assets(tour): real-UI captures for each feature tour step
- docs(readme): hero header and dark-UI screenshot gallery
- docs(handoff): 2026-10-22 entry for the DOCS clean-up and branch sync
- docs: fix links and path mentions after the 2026-10-22 clean-up; dedupe §107.5/§109.6
- docs(issues): issues_open §90–§106 holds only open work; fixed parts moved
- docs(handoff): needs_attention holds only open owner items, mapped to the owner page
- docs(issues): issues_open §1–§89 holds only open work; fixed parts moved
- docs(handoff): current-state handoff; stale log and done to-dos removed
- docs: rewrite the DOCS map for the 2026-10-22 layout
- docs(social): re-export the Facebook cover with the Live Share chip
- docs(posters): batch two, the old-skin posters in the current ThrottleIQ brand
- docs(skills): point the marketing skill at the consolidated marketing docs
- docs(marketing): consolidate the non-coding handoff; stale claims fixed
- docs(handoff): retire six old working notes; leftovers in issues §107
- docs(features): current feature map; removed features and changelog history dropped
- docs(handoff): retire the Oct 14/15 critiques; leftovers in issues §109
- docs(handoff): retire the Antigravity grill docs; leftovers in issues §108
- docs: record owner decisions (analytics opt-out stays, hello@ delivery confirmed, quota merge)
- fix(cloud): bound screen-facing Firestore writes with an ack timeout (§104.6)
- docs(issues): §104.4 hasRestrictedPosts needs a data-model change and backfill
- fix(feed): skip vote reads for rides nobody voted on (§104.3)
- fix(group-ride): slow position ticks as the group grows (§104.2)
- fix(places): cache nearby places per geohash cell during rides (§104.1)
- fix(scripts): Google Places import no longer marks places verified
- docs: point code comments, rules and root docs at the new DOCS paths
- docs: one architecture folder; load tests, App Check runbook out of the handoff
- Merge branch 'feat/quota-outage': Firestore quota outage mode (§104.6)
- docs: reorganise DOCS into audience folders (owner's moves)
- refactor(scripts): move one-off admin scripts to scripts/oneoff/
- docs(quota): §106 fixed on main, E2E passes with the fix, owner to-dos
- docs(judge): review of the unpushed commits (2026-10-21)
- test(rules): report copy still works on a moderated message and a deleted peer
- fix(moderation): retention purge keeps the evidence of a reopened report
- fix(ride): dispose no longer creates the live-share coordinator
- docs(research): Facebook bike-group topics, Apify lessons, gitignore raw scrapes
- feat(moderation): post report snapshots, 90-day retention, deletion rule
- feat(moderation): chat reports keep a protected copy of the message
- docs(handoff): quota outage branch committed, gate result, owner to-dos
- docs(judge): record iOS simulator E2E run (2026-10-21)
- feat(places): dry-run revert script for the Google Maps import
- feat(sync): Firestore quota outage mode, rider strip and owner alert (§104.6)
- feat(app-check): sideload gate, release debug-provider switch, owner runbook
- feat(moderation): written policy, 24 h human review, findable reports
- feat(account-deletion): anonymise a deleted rider's side of chats
- Merge branch 'test': keep only the dark-mode map filter
- chore: stop tracking DOCS/General/screenshots_ui (558 MB, backed up outside git)
- docs(judge): 2026-10-19 review round (Google Maps data, ranked gaps)
- docs: record minBuild = 29 and the /ThrottleIQ/install redirect
- docs(handoff): install page note
- docs(handoff): 2026-10-19 places import session and open follow-ups
- docs(places): Google Maps import written to production (§105)
- feat(scripts): import Dhaka places from Google Maps facts; drop Google ratings (§105)
- fix(install): drop the date-triggered 'live on Google Play' claim
- style(places): dart format place_detail_screen
- fix(places): hide the Google rating column when a place has none; track Apify data work (§105)
- fix(update-gate): point the install link at Hosting; SECURITY: Cloudinary preset owner steps
- test: live-share teardown end-to-end through OutboxService
- feat(ride): actions menu, minimize, and a ride-in-progress strip
- fix(live-share): remove /live_shares/{token} in the queued teardown (§99.4)
- fix(ride): keep speed colours on the full-screen ride map
- docs(readme): point status at beta-v4.7.1
- fix: revert to OSM tiles and use ColorFiltered for dark mode to remove API key requirement
- UI: Apply critique recommendations for map theming, typography, and spacing
ThrottleIQ — beta-v4.7.1 (v1.0.0-beta.4.7.1+29)
Install: Android builds ship through Google Play only. Get the invite at https://throttleiqfb.web.app/install. APKs are no longer published.
ThrottleIQ beta-v4.7.1 — 1.0.0-beta.4.7.1+29
Released 2026-10-16 · AAB: app/build/app/outputs/bundle/release/app-release.aab · versionCode 29 · previous: beta-v4.7.0 (+28)
Play Console release notes (en-US, under 500 chars)
What's new in 4.7.1
• Places: the full-screen map's exit and filter buttons no longer hide under the iPhone status bar, so you can always get back to the half view.
• Ride history: the full-screen map now keeps your route's speed colours instead of turning it one colour.
• Live share uses less data while you're stopped or crawling in traffic.
• Fixes and polish.
What changed since beta-v4.7.0
- Full-screen map controls (
places_list_screen.dart): full screen drops the AppBar, which was the only thing clearing the status bar, so the exit and filter buttons sat under the Dynamic Island and couldn't be tapped. The body is now in a top-onlySafeArea. Regression test inplaces_hub_test.dart. Installed on an iPhone (iOS 27 beta) before release, not yet checked by hand. - Full-screen ride map keeps speed colours (
full_screen_route_map_screen.dart,speed_band_style.dart): the ride summary passed only the points, so full screen drew one primary line. It now gets the speeds and uses the same band colours (moved into a sharedSpeedBand.colorextension). Test intest/shared/widgets/full_screen_route_map_screen_test.dart. Added after the release: the AAB and universal APK were rebuilt from the fix commit and replaced in place (same versionCode 29); thebeta-v4.7.1tag still points at the commit before it. - Live share write gate (
d0a4311): a tick writesliveSessions/{token}only on a new token, a status change, 100 m moved or 15 s elapsed. A moving rider still updates every 10 s. - Not user-facing: rules compile-warning fix, users visibility backfill script (not run), Spark quota load test, docs.
Known gaps
- The beta-v4.7.0 gaps still apply (see that file and
issues_open.md§103).
ThrottleIQ — beta-v4.7.0 (v1.0.0-beta.4.7.0+28)
Install: Android builds ship through Google Play only. Get the invite at https://throttleiqfb.web.app/install. APKs are no longer published.
ThrottleIQ beta-v4.7.0 — 1.0.0-beta.4.7.0+28
Released 2026-10-15 · AAB: app/build/app/outputs/bundle/release/app-release.aab · versionCode 28 · previous: beta-v4.6.0 (+27)
Play Console release notes (en-US, under 500 chars)
What's new in 4.7.0
• Places: full-screen map. Hide everything but the map, filters and place cards, handy when you need fuel or a garage fast.
• Shared rides are more compact: @username, bike model and ride score in one tidy card.
• Your own shared ride: edit photos and caption, delete the post, or open the full ride.
• Delete a ride from Rides → History.
• During a ride, set where your phone is (mount, pocket, bag) from the top-left pill.
• Fixes and polish.
What changed since beta-v4.6.0
- Places full-screen map (
places_list_screen.dart,placesFullMapProvider): hides the app bar, hub tabs, search, radar banner and result row. Category chips, filter button and carousel stay. Android back exits full screen first. - Shared-ride feed card (
social_feed_tab.dart,rider_handle.dart):@usernamereplaces the full name, bike model sits right-aligned, the "Motorcycle" label is gone, and the riding score moved into the stat row. - Owner menu on your shared ride (
shared_ride_detail_screen.dart,edit_shared_ride_sheet.dart): Edit ride (caption + up to 3 photos), Delete ride (post only, points to History for full delete), See more. - History → Delete ride (
ride_summary_screen.dart): local delete with a sync tombstone, plus a best-effort delete of the shared post. - Cockpit fixes (
active_ride_screen.dart,phone_placement_selector.dart): the beta "I'm in a jam" button no longer covers the speed panel. Phone placement moved from the Record screen to a top-left pill during the ride.
Known gaps (see issues_open.md §103)
- Nothing above was checked on a device before release; the E2E test was not run.
- Deleting a ride doesn't roll back the bike odometer. Shared-post delete from History fails silently offline.
- New Bangla strings are machine-drafted (
bn_pending_review.txt). - Ride analytics don't record mid-ride phone-placement changes; placement is read only at impact time.
ThrottleIQ — beta-v4.6.0 (v1.0.0-beta.4.6.0+27)
Install: Android builds ship through Google Play only. Get the invite at https://throttleiqfb.web.app/install. APKs are no longer published.
🏍️ ThrottleIQ Release beta-v4.6.0 (v1.0.0-beta.4.6.0+27)
Recent Updates
- chore(release): bump version to 1.0.0-beta.4.6.0+27 and update deployment artifacts
- Merge origin/main (feature tour follows Your ThrottleIQ, crash-export gitignore)
- feat(tour): feature tour follows Your ThrottleIQ
- chore(gitignore): keep raw crash exports out of the public repo
- Ride tracking off: no ride start from Places, routes or anywhere else
- Merge origin/main (Your ThrottleIQ modules, shadow-mode crash detection) into the oct14/oct15 fix round
- Merge origin/main into feat/crash-shadow-mode; add crash report docs
- Merge fix/oct15-throttleiq
- Docs: record the 2026-10-15 fixes and the privacy page step
- Install page: make the iPhone section honest, drop fake tracking
- SECURITY.md: wait for testers before the rules deploy, migrate the same hour
- Require a verified email to own an email lookup
- Stop re-asking auto-tracking permissions on every pause and ride end
- Give split APKs the same versionCode as the universal APK and AAB
- Add re-critique after the fix round (CrtiQue_Oct15.md)
- feat(ride): shadow-mode crash detection, after-ride fall question, opt-in research data
- Merge fix/oct14-tiq-ride
- Log instead of bare catch in the new ride-service, GPS log and OEM code
- docs(privacy): Your ThrottleIQ — no-location option and what community off does not hide
- docs: Your ThrottleIQ app modules in README, PRD (SET-5), handoff, dir READMEs
- feat: Your ThrottleIQ — turn off community, places or ride tracking
- Handoff: ride recording fixes (B4, B5, B12)
- Merge oct14-int into fix/oct14-tiq-ride
- Name the foreground-service channel for both of its jobs
- Docs for B4/B5: arch foreground service, feature map, issue 96.1
- Merge fix/oct14-tiq-themes
- B5: one-time battery-settings guide for Xiaomi, OPPO, vivo, realme
- Merge fix/oct14-tiq-sync
- Record the gate result for the two-theme cut
- docs(handoff): record gate result for the sync branch
- B5: host manual rides in the foreground-task service
- Drop stale color-mode mention from widget theme keys doc
- Update docs for the two-theme cut
- docs: last-writer-wins sync (C4 decided) and UTC ride times
- feat(sync): last-writer-wins on updated_at across devices (C4, B10)
- feat(db): schema v28, updated_at on synced rows and UTC ride times
- Hide the cockpit g readout until the IMU axis is calibrated
- Log GPS fixes dropped for accuracy per ride
- B4: manual rides ask for while-in-use only; background behind auto-tracking
- Delete the 28-theme UI tour and PDF generator
- Cut appearance to one light and one dark theme
- B12: dismissing a crash alert sets status only
- Merge fix/oct14-tiq-shell
- Docs: record the gate result for the 2026-10-14 pass
- Update the tile User-Agent test to hello@blankframe.tech (B14)
- Docs: handoff, feature map and owner to-dos for the 2026-10-14 pass
- Add an iOS privacy manifest to the Runner target
- Read the build number with package_info_plus, not a deploy.sh define
- Remove the RTDB group-ride client; park it on park/rtdb-group-ride
- Remove the '% of riders own this' badge rarity UI (B7)
- Merge fix/oct14-tiq-rules
- Cut the top-speed badge family
- Delete the challenges feature (B6)
- iDEA pitch: update the last stale test count
- Remove crash-detection and emergency claims from the store listing and iDEA pitch; declare default-on analytics
- docs: handoff entry for the 2026-10-14 rules work; firebase-tools note
- docs: owner deploy order, App Check runbook, arch notes
- scripts: one-off migration moving emails off public profiles (B2)
- profile: email off the public doc, find-by-email via lookup (B2)
- Say cloud data is deleted by hand within 30 days (B1); add the owner deletion runbook
- functions: complete account erasure, Cloudinary secrets, GPS retention (B1, B8)
- Gate crash copy on the detector flag and stop promising contact delivery (B11)
- Add a forced-update gate on config/app.minBuild; build per-ABI APKs
- rtdb: deny every read and write (B9)
- rules: email lookup, users list cap, block gaps, config/app (B2, B3)
- Commit Podfile.lock from a real iOS build
- Cut storage.rules, v1/v2 poster generators and crash-claim posters; fix tile UA contact and README analytics line
- Add independent critique (CrtiQue_Oct14.md)
- judge: log rules deploy
- judge: log 2026-10-14 status
- docs: real SECURITY policy, add AGENTS.md and CODING_STANDARDS.md
- docs: handoff and docs index for dependabot merge, DOCS/old, branch sync
- style: dart format auto_tracking_service
- chore(deps): merge dependabot bumps; move stale files to DOCS/old
- Merge remote-tracking branch 'origin/dependabot/pub/app/home_widget-0.10.0'
- Merge remote-tracking branch 'origin/dependabot/pub/app/flutter_launcher_icons-0.14.4'
- Merge remote-tracking branch 'origin/dependabot/pub/app/dio-5.11.1'
- Merge remote-tracking branch 'origin/dependabot/npm_and_yarn/functions/types/node-22.20.5'
- Merge remote-tracking branch 'origin/dependabot/npm_and_yarn/functions/firebase-admin-14.5.0'
- docs: rewrite root README for beta 4.5 and Indriyo; purge stale docs
- chore(qa): pass stamp covers docs-only follow-ups; handoff notes for gate and chart registry
- Merge branch 'worktree-agent-a5c5d0f007d44d2a3' into experimental
- refactor(stats): per-family analytics chart specs and registries
- chore(qa): single quality gate scripts/check.sh, used by CI, pre-push and deploy
- chore(deps): bump home_widget from 0.6.0 to 0.10.0 in /app
- chore(deps-dev): bump @types/node from 22.20.4 to 22.20.5 in /functions
- chore(deps): bump flutter_launcher_icons from 0.13.1 to 0.14.4 in /app
- chore(deps): bump dio from 5.10.0 to 5.11.1 in /app
- chore(deps): bump firebase-admin from 14.4.0 to 14.5.0 in /functions
ThrottleIQ — beta-v4.5 (v1.0.0-beta.4.5.0+26)
Install: Android builds ship through Google Play only. Get the invite at https://throttleiqfb.web.app/install. APKs are no longer published.
Lean angle, peak g-force and elevation saved per ride (schema v26) with new Rides charts; lean is GPS-estimated. Fuel log per bike (schema v27): fill-ups, km/L between full tanks, and fuel spend / km/L / cost-per-km / litres charts. Badge '% of riders' now works on the free Spark plan via rules-guarded counters (shows once 20+ riders are counted). Home-screen widgets keep rounded button and DUE chip corners. Follow QR codes now use www.blankframe.tech, which has an install page and the follow-link router. CI fixes. Not yet verified on a device.
ThrottleIQ — beta-v4.4 (v1.0.0-beta.4.4.0+25)
Install: Android builds ship through Google Play only. Get the invite at https://throttleiqfb.web.app/install. APKs are no longer published.
Seven ride-mode color themes back (sport, rain, race, commute, tour, adv, city); home-screen widgets follow the app theme. Rides tab: compact header, 16 stacked analytics charts (incl. jam time, ride score, hard brakes, overspeed alerts) with tap-to-detail and CSV export; schema v25 stores per-ride overspeed count. Badge detail sheet with % of riders and rarity tiers (needs functions + rules deploy). Profile: badge list removed; My QR / Scan QR follow with app-link deep links and web fallback. Feature tour v4 redesigned. @fastify/busboy bump in functions. Not yet verified on a device.
ThrottleIQ — beta-v4.3 (v1.0.0-beta.4.3.0+24)
Install: Android builds ship through Google Play only. Get the invite at https://throttleiqfb.web.app/install. APKs are no longer published.
Places/Forums §97 fixes (Material wrappers, overflow, avatar and tile image errors, place photos, lazy saved list, web-safe platform check, forum photo-upload errors). Auto-tracking: schema v22, daily retention purge of old summarized fixes. New PRD in DOCS/PRD.md. Not yet verified on a device.
ThrottleIQ — beta-v4.2 (v1.0.0-beta.4.2.0+23)
Install: Android builds ship through Google Play only. Get the invite at https://throttleiqfb.web.app/install. APKs are no longer published.
Places hub and Forums "Pit Wall" redesign.
Places
- Map-first hub with Places | Routes | Saved tabs, search, category chips with counts and a filter sheet
- Radius setting (5/15/25/50 km), clustered map pins with a swipeable card row
- Directions, Call and Save on every card; saved places work offline
- Speed cameras and police checkposts moved into a Highway Radar banner
- Clear Google vs rider ratings, and a "Rider Approved" badge
- Rider tags when adding a place (24/7, 95 octane, tyre repair, EFI diagnostics…)
- Location errors (GPS off, permission denied, offline) now show a button that fixes each one
Forums
- Pulse feed (recent posts from your garage and followed forums) and Hubs (garage cards, brand paddocks, topic boards, rider clubs)
- Post types (Troubleshoot, DIY guide, Gear review, General), author bike badge, Solved with an accepted answer
- Photos on posts (up to 4)
- Brand paddocks now count riders and posts across the brand's model forums (they all used to say "0 riders")
- Ask owners from bike detail; share a ride or maintenance visit into a forum
Firestore rules deployed with this build. flutter analyze: 0 issues · flutter test: 1658/1658 · rules tests: 199/199.