From 03b74b11507155d60fa4571b35e6a47c4cdf960d Mon Sep 17 00:00:00 2001 From: Seb3thehacker Date: Thu, 1 Oct 2026 11:20:14 -0700 Subject: [PATCH] issue templates, doc updates --- .github/ISSUE_TEMPLATE/bug_report.yml | 59 ++++++++++++++++++++ .github/ISSUE_TEMPLATE/car_report.yml | 65 ++++++++++++++++++++++ .github/ISSUE_TEMPLATE/config.yml | 1 + .github/ISSUE_TEMPLATE/feature_request.yml | 23 ++++++++ .gitignore | 34 +++++------ CONTRIBUTING.md | 48 ++++++++++++++++ README.md | 38 +++++++++---- RELEASE_NOTES.md | 38 ------------- 8 files changed, 242 insertions(+), 64 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.yml create mode 100644 .github/ISSUE_TEMPLATE/car_report.yml create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/ISSUE_TEMPLATE/feature_request.yml create mode 100644 CONTRIBUTING.md delete mode 100644 RELEASE_NOTES.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..2dafa5a --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,59 @@ +name: Bug report +description: Something in Gearslip broke or behaves wrong. +labels: ["bug"] +body: + - type: markdown + attributes: + value: | + Thanks for reporting. Check the [open issues](https://github.com/Seb3thehacker/gearslip/issues) first, in case someone has already reported it. + + - type: input + id: car + attributes: + label: Car + description: Make, model, and year. + placeholder: 2019 Honda Civic + validations: + required: true + + - type: dropdown + id: head-unit + attributes: + label: Head unit + options: + - The one the car came with + - A factory unit from another car + - An aftermarket unit (Pioneer, Kenwood, Alpine, and so on) + - A homemade or open-source unit, such as LIVI + - I don't know + validations: + required: true + + - type: dropdown + id: connection + attributes: + label: Connection + options: + - USB cable + - Wireless dongle + validations: + required: true + + - type: textarea + id: what-happened + attributes: + label: What happened + description: What you did, what you expected, and what happened instead. + validations: + required: true + + - type: textarea + id: log + attributes: + label: Log + description: | + On the phone, open Logs from Gearslip's home screen and tap Share log. Drag the file here. + The log records your phone, its Android version, the Gearslip version, and why the connection ended. + placeholder: Drop the log file here. + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/car_report.yml b/.github/ISSUE_TEMPLATE/car_report.yml new file mode 100644 index 0000000..c7e4382 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/car_report.yml @@ -0,0 +1,65 @@ +name: Car report +description: Tell us whether Gearslip works in your car, so others know before they install. +labels: ["car report"] +body: + - type: markdown + attributes: + value: | + Reports from working cars help as much as reports from broken ones. + + - type: input + id: car + attributes: + label: Car + description: Make, model, and year. + placeholder: 2019 Honda Civic + validations: + required: true + + - type: dropdown + id: head-unit + attributes: + label: Head unit + options: + - The one the car came with + - A factory unit from another car + - An aftermarket unit (Pioneer, Kenwood, Alpine, and so on) + - A homemade or open-source unit, such as LIVI + - I don't know + validations: + required: true + + - type: dropdown + id: connection + attributes: + label: Connection + options: + - USB cable + - Wireless dongle + validations: + required: true + + - type: dropdown + id: result + attributes: + label: Does it work? + options: + - Yes, everything I tried works + - Partly. It connects, but something is wrong + - No, it never connects + validations: + required: true + + - type: textarea + id: notes + attributes: + label: Notes + description: What you tried, and anything that didn't work. + + - type: textarea + id: log + attributes: + label: Log + description: | + Needed if the car doesn't work. On the phone, open Logs from Gearslip's home screen and tap Share log. Drag the file here. + placeholder: Drop the log file here. diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..3ba13e0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1 @@ +blank_issues_enabled: false diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000..4cc2bcc --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,23 @@ +name: Feature request +description: Suggest something Gearslip should do. +labels: ["enhancement"] +body: + - type: textarea + id: problem + attributes: + label: What do you want to do? + description: Describe the problem, not the solution. "I can't see my next turn while music plays" helps more than "add a turn widget." + validations: + required: true + + - type: textarea + id: idea + attributes: + label: How should it work? + description: Your idea for a fix, if you have one. + + - type: textarea + id: apps + attributes: + label: Apps involved + description: Any apps this touches, such as a map or music app. diff --git a/.gitignore b/.gitignore index 552ad99..0714ac2 100644 --- a/.gitignore +++ b/.gitignore @@ -6,25 +6,27 @@ /build local.properties -# Reference checkouts only - never referenced by the build; safe to delete entirely. -/cloned-repos - -# The head unit certificate. Never committed or shared beyond who Seb sends it to directly. -/cert - -# The release signing key and its passwords. Losing these breaks app updates; leaking them -# lets anyone sign an APK as Gearslip. +# Keys *.jks *.keystore keystore.properties -/docs/cert-sweep.sh -archive/ -CLAUDE.md -*.pdf -extraction/ -.claude/ -todo -logs/ # Native build cache. .cxx/ + +# Testing +/docs/cert-sweep.sh +extraction/ +/cloned-repos + +# Internal +*.pdf +todo +logs/ + +# For AI code +.claude/ +CLAUDE.md + +# Other +archive/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..c067922 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,48 @@ +# Contributing to Gearslip + +Thanks for helping. Bug reports from real cars are the most useful thing you can send, so +start there if you aren't sure where to begin. + +## Reporting a bug + +Open an issue on [GitHub](https://github.com/Seb3thehacker/gearslip/issues) and include: + +- your car's make, model, and year, and whether the head unit is the original one; and +- the log from the drive. Open Logs on the phone app's home screen and tap Share log. + +The log records your phone, its Android version, the Gearslip version, the head unit, and +why the connection ended. Most car bugs can't be fixed without it. Head units often report +only a part number, so the log can't name your car for you. + +## Building + +You need Android Studio, or the Android SDK with JDK 21. Gradle downloads the NDK, CMake, +and the speech library on the first build. + +``` +./gradlew :gearslip:assembleDebug +``` + +The APK lands at `build/Gearslip-debug.apk`. It installs as Gearslip Dev, next to the +regular app. + +## Pull requests + +- Keep each pull request to one change, and explain the problem it solves. +- Say how you tested it: which car or head unit, which phone, and which apps. +- Code written with AI tools is welcome. Read it, test it, and stand behind it as you would + your own. +- Gearslip asks for no adb, root, or Shizuku. A feature must work with ordinary Android + permissions and on-device consent dialogs. + +## Writing + +Text that users read, such as screens, release notes, and docs, follows Strunk's +[*The Elements of Style*](https://www.gutenberg.org/ebooks/37134). In short: use the active +voice, state things positively, cut needless words, and use the serial comma. + +## License + +Gearslip is licensed under AGPL-3.0, and your contributions are too. The author also sells a +commercial license, described in [NOTICE.md](NOTICE.md). By opening a pull request, you +agree that your contribution may be offered under that license as well. diff --git a/README.md b/README.md index 8d7dfb2..2d80180 100644 --- a/README.md +++ b/README.md @@ -25,8 +25,13 @@ mode. doesn't ship a car interface of its own. - **Weather and the day ahead.** A dashboard screen shows the week's calendar next to the current and coming weather. -- **Notifications.** Read and reply to notifications from the car screen, using the same - on-screen keyboard. +- **Messages.** New messages appear as a small card on the car screen. Gearslip reads + each one aloud, and you reply by voice or with a quick reply. Speech runs on the phone, + so it needs no Google account. +- **Notifications.** Only messages, missed calls, alarms, and reminders interrupt you. + The rest wait on the dashboard. +- **Car controls.** Steering wheel buttons, control knobs, and D-pads all work. +- **Themes.** Choose flat buttons or skeuomorphic ones that look like real keys. ## Status @@ -38,16 +43,23 @@ mode. - **Templated apps work.** Gearslip renders all 16 template types that the Car App Library defines, and it draws its own keyboard for search, sign-in, and text fields. It has been tested against several real navigation and media apps. -- **Gearslip works with [LIVI](https://github.com/f-io/LIVI),** LIVI, used in open source car dashboards, is fully supported by Gearslip. +- **Gearslip works with [LIVI](https://github.com/f-io/LIVI),** the open-source head unit + used in homemade car dashboards. +- **Some apps refuse Gearslip.** Spotify, Waze, and Google Messages use a version of + Google's car library that accepts only Android Auto itself. Spotify still plays through + Gearslip's own player. +- **For now, Gearslip works with cars from before 2020.** Newer head units reject its + certificate. +- **Calls use the car's Bluetooth,** as they do in Android Auto. Pair the phone with the + car to hear calls through its speakers. - **Audio reaches the car by capturing playback, not by mirroring the screen.** Android - requires a screen-share style consent dialog and indicator for this, even though - Gearslip never reads the screen; that grant is the only way a non-privileged app can - tap another app's audio. The consent normally repeats every drive; two optional adb - commands in the setup guide reduce it to a one-time grant. + shows a screen-share consent dialog for this, even though Gearslip never reads the + screen; it is the only way an ordinary app can capture another app's audio. The dialog + appears once per drive. - **Gearslip needs no adb, root, or Shizuku.** Every feature relies on an ordinary - Android permission or an on-device consent dialog. The two adb commands mentioned - above, for audio, are the sole exception: both are optional, and both only remove a - dialog that the driver would otherwise see once per drive. + Android permission or an on-device consent dialog. The setup guide offers two optional + adb commands: one removes the audio dialog for good, and the other keeps notifications + visible while audio plays. ## Building @@ -67,6 +79,12 @@ keystore. Without them, the debug build still works. [docs/BUILDING_APPS.md](docs/BUILDING_APPS.md) specifies how to write apps that Gearslip can render: templated apps, media apps, and the Gearslip app protocol. +## Trademarks + +Android, Android Auto, Google Messages, and Waze are trademarks of Google LLC. Spotify is +a trademark of Spotify AB. Gearslip is not affiliated with, endorsed by, or sponsored by +any of these companies. All other names belong to their owners. + ## License Gearslip is licensed under AGPL-3.0; see [LICENSE](LICENSE). The author offers a separate diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md deleted file mode 100644 index 29d7a81..0000000 --- a/RELEASE_NOTES.md +++ /dev/null @@ -1,38 +0,0 @@ -# Gearslip 0.1.0-alpha - -This release lets you read and answer messages by voice, and the speech runs on your phone with no Google services. - -## Messages and voice - -- Messaging apps such as Signal and Molly open to your recent chats. -- Gearslip reads a message aloud, and you reply by voice. Say "cancel" or "change it" before it sends, or tap a quick reply such as your arrival time. -- Voice works on any phone, GrapheneOS included. Gearslip turns speech into text itself, so it needs no Google account. -- New messages show as a small card at the top right, even while you drive. A bar shows how long until the card closes or the reply sends. -- Only messages, missed calls, alarms, and reminders pop up. Everything else waits on the dashboard. - -## Map - -- The map stays loaded when you switch screens, so it no longer flashes black. -- Map apps draw more reliably and keep their connection when the phone is locked. -- The Home button shows your map app, so it no longer appears twice. -- The next turn shows in the nav bar when you leave the map. - -## Controls and settings - -- Steering wheel buttons, control knobs, and D-pads now work. -- To see the whole song title and artist in the nav bar, choose Settings > Player in the nav bar > Song title. -- Choose miles or kilometres under Settings > Units. -- "Button style" is now called "Theme". -- Try the voice assistant and the vehicle data screen under Settings > Experimental features. -- Logs now say why a car ended the connection. - -## Known issues - -- Spotify, Waze, and Google Messages updated to a version of Google's car library that only accepts Android Auto itself. Their own car screens won't open in Gearslip. Spotify still plays through the Gearslip player, which has the green check. -- Calls go through the car's Bluetooth, as they do in Android Auto. Pair your phone with the car to hear calls on its speakers. - -## Install - -Download `Gearslip-release.apk` below and open it on your phone. It updates 0.0.05-alpha in place and keeps your settings. - -Found a bug, or a car where the buttons don't work? [Open an issue](https://github.com/Seb3thehacker/gearslip/issues) and share the log from the Logs screen in the phone app.