Skip to content

Commit ee921ea

Browse files
author
johndoe
committed
Make the repository ready for open-source contributors
1 parent c1b641d commit ee921ea

34 files changed

Lines changed: 1092 additions & 331 deletions
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
title: "Question: "
2+
body:
3+
- type: markdown
4+
attributes:
5+
value: |
6+
Ask in English or 繁體中文. Please include enough context for someone with a different device to help. Keep tokens and pairing files private.
7+
- type: input
8+
id: setup
9+
attributes:
10+
label: Device / Android version / app version
11+
validations:
12+
required: true
13+
- type: textarea
14+
id: question
15+
attributes:
16+
label: What are you trying to do?
17+
validations:
18+
required: true
19+
- type: textarea
20+
id: tried
21+
attributes:
22+
label: What have you tried, and what happened?
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
title: "My device / scene: "
2+
body:
3+
- type: markdown
4+
attributes:
5+
value: |
6+
Show what you made! English and 繁體中文 welcome. Please hide credentials, private chats and personal network details in photos or logs.
7+
- type: input
8+
id: device
9+
attributes:
10+
label: Device and app version
11+
placeholder: Chromecast, Android 12, 0.3 source build
12+
- type: textarea
13+
id: use
14+
attributes:
15+
label: What does your device do now?
16+
description: A short description, screenshot or video helps other people understand it.
17+
validations:
18+
required: true
19+
- type: textarea
20+
id: recipe
21+
attributes:
22+
label: How can someone reproduce it?
23+
description: Include prerequisites, commands or scene configuration, and what you actually observed.
24+
- type: textarea
25+
id: limits
26+
attributes:
27+
label: Known limits or things you want help with
Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,47 @@
11
name: Bug report
2-
description: Something doesn't work on your device
2+
description: Help us reproduce a problem with the app or runtime.
33
labels: [bug]
44
body:
55
- type: markdown
66
attributes:
77
value: |
8-
Fill in what you can. "Doesn't work" with no device info will get
9-
asked for device info — save us both a round trip.
8+
Thanks for testing! English and 繁體中文 are welcome. Please remove SDK tokens, pairing data and private chat content from attachments. Setup questions can go to Discussions.
109
- type: input
11-
id: device
10+
id: version
1211
attributes:
13-
label: Device
14-
description: e.g. Chromecast with Google TV 4K, Pixel 7, Fire TV Stick
15-
placeholder: model name
12+
label: App version and build
13+
placeholder: 0.3 source build, universal, commit SHA if known
1614
validations:
1715
required: true
1816
- type: input
19-
id: api
17+
id: device
2018
attributes:
21-
label: Android version / API level
22-
description: The probe screen shows this (android=… sdk=…), or adb shell getprop ro.build.version.sdk
23-
placeholder: Android 12 (sdk 31)
19+
label: Device and Android version
20+
placeholder: Chromecast with Google TV 4K, Android 12 / API 31
2421
validations:
2522
required: true
2623
- type: input
2724
id: abi
2825
attributes:
29-
label: ABI
30-
description: adb shell getprop ro.product.cpu.abi
31-
placeholder: armeabi-v7a
32-
validations:
33-
required: false
26+
label: ABI and page size, if known
27+
description: Optional — adb shell getprop ro.product.cpu.abi and adb shell getconf PAGE_SIZE
28+
placeholder: armeabi-v7a, 4096
3429
- type: textarea
35-
id: what
30+
id: steps
3631
attributes:
37-
label: What happened, and what did you expect
38-
placeholder: Tapped Pair > Open setup; phone never sees the device. Expected a MuseGadgetXXXXXX entry.
32+
label: Steps to reproduce
33+
placeholder: "1. Open…\n2. Select…\n3. Observe…"
3934
validations:
4035
required: true
4136
- type: textarea
42-
id: logs
37+
id: outcome
4338
attributes:
44-
label: Relevant logs
45-
description: adb logcat excerpts. SCRUB tokens and pairing.json values first (see SECURITY.md).
46-
render: shell
39+
label: Expected and actual result
40+
description: Include the exact error or status text if one appeared.
4741
validations:
48-
required: false
42+
required: true
43+
- type: textarea
44+
id: evidence
45+
attributes:
46+
label: Redacted screenshot or relevant logs
47+
description: Short excerpts are enough. Never upload pairing.json, SDK tokens or an entire unreviewed logcat.

‎.github/ISSUE_TEMPLATE/config.yml‎

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
blank_issues_enabled: false
22
contact_links:
3-
- name: Question / discussion
3+
- name: Setup help, ideas and scene sharing / 使用討論
44
url: https://github.com/hypery11/muse-gadget-everywhere/discussions
5-
about: Setup help, ideas, and "does it run on X?" go here, not in issues.
5+
about: Ask a question or share how you use a device. English and 繁體中文 welcome.
6+
- name: Getting started and troubleshooting
7+
url: https://github.com/hypery11/muse-gadget-everywhere/blob/main/docs/GETTING_STARTED.md
8+
about: Build choice, installation, pairing and common fixes.
9+
- name: Private security reporting
10+
url: https://github.com/hypery11/muse-gadget-everywhere/security/policy
11+
about: Read the security policy before sharing a vulnerability or sensitive logs.
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
name: Device compatibility report
2+
description: Tell others what worked on your TV, phone or tablet — no coding needed.
3+
title: "[Device] "
4+
labels: [device-report]
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
Successful and unsuccessful tests are both useful. Report only what you observed. Please omit identifiers, tokens, account details and private network addresses.
10+
- type: input
11+
id: device
12+
attributes:
13+
label: Device model and Android version
14+
placeholder: Chromecast with Google TV 4K, Android 12 / API 31
15+
validations:
16+
required: true
17+
- type: input
18+
id: build
19+
attributes:
20+
label: App version / build / ABI / page size
21+
placeholder: 0.3 source, universal, armeabi-v7a, 4096
22+
validations:
23+
required: true
24+
- type: dropdown
25+
id: environment
26+
attributes:
27+
label: Test environment
28+
options:
29+
- Physical device
30+
- Emulator
31+
validations:
32+
required: true
33+
- type: checkboxes
34+
id: tested
35+
attributes:
36+
label: What did you actually test?
37+
options:
38+
- label: Install and launch
39+
- label: Remote / touch navigation
40+
- label: Local display card
41+
- label: BLE pairing with Muse phone app
42+
- label: Muse cloud command with observed device response
43+
- label: Native media or speech
44+
- label: Cast receiver playback and controls
45+
- label: Camera / OCR / barcode / microphone
46+
- label: Home Assistant or MQTT on a real local setup
47+
- label: Service restart / device reboot
48+
- type: textarea
49+
id: result
50+
attributes:
51+
label: Results and limitations
52+
description: Say which checks passed or failed, how you observed them, and what you did not test.
53+
validations:
54+
required: true
55+
- type: textarea
56+
id: evidence
57+
attributes:
58+
label: Redacted evidence, if available
59+
description: Screenshot, short log excerpt or reproduction steps. Do not expose private data.
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
name: Feature request
2+
description: Describe a useful task the project cannot handle yet.
3+
labels: [enhancement]
4+
body:
5+
- type: textarea
6+
id: task
7+
attributes:
8+
label: What are you trying to do?
9+
description: Tell us the device, situation and outcome you need.
10+
validations:
11+
required: true
12+
- type: textarea
13+
id: workaround
14+
attributes:
15+
label: How do you handle it today?
16+
- type: textarea
17+
id: proposal
18+
attributes:
19+
label: Suggested behavior
20+
description: Include any relevant hardware, permissions or offline requirements.
21+
validations:
22+
required: true
23+
- type: dropdown
24+
id: help
25+
attributes:
26+
label: Would you like to help?
27+
options:
28+
- I can test on my device
29+
- I can help with documentation or design
30+
- I may be able to implement it
31+
- Sharing the idea for now

‎.github/pull_request_template.md‎

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
1-
## What
1+
## What changes for the user?
22

3-
## How I tested
3+
Describe the problem and the resulting behavior. Link a related issue if there is one.
44

5-
Device / API / ABI + a screenshot or logcat excerpt. No proof, no merge.
5+
## Validation
6+
7+
List the checks you ran and their results. For UI or hardware changes, include device / Android API / ABI and a redacted screenshot or log. State any checks you could not run.
68

79
## Checklist
810

9-
- [ ] `lintDebug` green, Python overlay tests pass
10-
- [ ] `docs/COMPATIBILITY.md` updated (if device behavior changed)
11-
- [ ] No tokens or pairing secrets in logs/screenshots
11+
- [ ] Relevant build, lint and Python checks pass (or gaps are explained above)
12+
- [ ] Changed behavior has appropriate regression coverage
13+
- [ ] User-facing docs and compatibility evidence are updated where needed
14+
- [ ] No credentials, private chats or personal data in code, logs or images
15+
- [ ] Upstream `vendor/` remains unmodified

‎.github/workflows/ci.yml‎

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,15 @@ on:
88
jobs:
99
build:
1010
runs-on: ubuntu-latest
11+
strategy:
12+
matrix:
13+
include:
14+
- python: "3.11"
15+
modern: "false"
16+
artifact: universal
17+
- python: "3.13"
18+
modern: "true"
19+
artifact: modern
1120
steps:
1221
- uses: actions/checkout@v4
1322
with:
@@ -21,7 +30,7 @@ jobs:
2130
# Chaquopy builds against the exact minor on PATH.
2231
- uses: actions/setup-python@v5
2332
with:
24-
python-version: "3.11"
33+
python-version: ${{ matrix.python }}
2534

2635
# Runners already ship an SDK; just point at it and accept
2736
# licenses. (android-actions/setup-android is broken against
@@ -35,11 +44,33 @@ jobs:
3544
3645
- uses: gradle/actions/setup-gradle@v3
3746

38-
- name: Lint (includes full 4-ABI compile)
39-
run: ./gradlew :app:lintDebug --no-daemon
47+
- name: Compile and lint Android runtime
48+
run: ./gradlew -PmodernRuntime=${{ matrix.modern }} :app:assembleDebug :app:assembleDebugAndroidTest :app:assembleRelease :app:lintDebug --no-daemon
49+
50+
- name: Verify modern native alignment
51+
if: matrix.modern == 'true'
52+
run: python scripts/check_apk.py app/build/outputs/apk/debug/app-debug.apk --require-16k
53+
54+
- name: Package development APK and checksum
55+
run: |
56+
mkdir -p dist
57+
cp app/build/outputs/apk/debug/app-debug.apk dist/muse-gadget-${{ matrix.artifact }}-debug.apk
58+
cd dist
59+
sha256sum *.apk > SHA256SUMS
60+
61+
- uses: actions/upload-artifact@v4
62+
with:
63+
name: muse-gadget-${{ matrix.artifact }}-debug
64+
path: dist/
65+
retention-days: 14
66+
if-no-files-found: error
67+
68+
- name: Check documentation links
69+
run: python scripts/check_docs.py
4070

4171
- name: Python overlay tests
72+
if: matrix.modern == 'false'
4273
run: |
43-
python3.11 -m pip install -q pytest
74+
python3.11 -m pip install -q pytest==8.3.4 cryptography==42.0.8 websockets==17.2 paho-mqtt==2.1.0
4475
PYTHONPATH=app/src/main/python:vendor/muse-gadget-sdk/linux/src \
45-
python3.11 -m pytest app/src/main/python/androidtv/tests/ -q
76+
python3.11 -m pytest app/src/main/python/androidtv/tests/ vendor/muse-gadget-sdk/linux/tests/ -q

‎CHANGELOG.md‎

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,27 @@
11
# Changelog
22

3-
## Unreleased
3+
## Unreleased — 0.3 development
44

5-
- Visual overhaul: dark brand world (two-tone title, cards, status
6-
dots, amber/green prerequisite states), primary/secondary buttons
7-
with TV focus rings, centered column on wide screens. Pair screen
8-
shows SDK-token state before you tap.
5+
- Add native message cards, media playback/queues, TTS, visible voice/camera flows,
6+
bundled OCR/barcodes, sensors, Cast discovery, local scenes, events and optional
7+
Home Assistant/MQTT integration. See `docs/FEATURES.md` for exact behavior.
8+
- Replace the long controls list with Home, Display, Media, Scenes and Device
9+
destinations: TV side navigation, compact bottom navigation, persistent drafts,
10+
input validation, readable results and accessible focus states.
11+
- Guide token setup and pairing, offer controls after successful pairing,
12+
confirm pairing/scene deletion, and group integration settings.
13+
- Preserve the unchanged upstream SDK while fixing graceful service restart,
14+
BLE lifecycle, SDK-report deduplication and UUID event sessions.
15+
- Restrict file operations to the workspace; make the trusted developer shell
16+
a local opt-in. Native cryptography advisories remain unresolved.
17+
- Add a modern Python 3.13 build for 64-bit/16 KiB devices alongside the
18+
four-ABI Python 3.11 build required by 32-bit Chromecast userspace.
19+
- Add real device/emulator verification, native alignment checks and CI artifacts.
20+
- Refresh README visuals, add a Traditional Chinese guide, device/feature issue
21+
forms, a conduct policy and a practical community launch pack.
22+
23+
These source changes are not a published 0.3 release. Production signing,
24+
physical phone/tablet and integration coverage, and a 72-hour soak remain open.
925

1026
## 0.2.0 — one APK for every Android device
1127

@@ -27,9 +43,8 @@
2743
all UI strings extracted to resources.
2844
- Android 15 edge-to-edge insets, scrollable button row on narrow
2945
phones, no-shared-storage guard in the token import.
30-
- `lintDebug` clean: 0 errors, 0 NewApi (SDK-36/37 treadmill
31-
warnings accepted in `lint-baseline.xml` — no emulator images
32-
exist to verify a bump against).
46+
- `lintDebug` clean: 0 errors, 0 NewApi (newer-target warnings accepted in
47+
`lint-baseline.xml`; newer target behavior was not validated).
3348
- Compatibility matrix with per-API/ABI proof: `docs/COMPATIBILITY.md`.
3449

3550
## 0.1.0 — Chromecast with Google TV

‎CODE_OF_CONDUCT.md‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Community Code of Conduct
2+
3+
This project welcomes people of every background and experience level. These expectations apply in issues, pull requests, discussions and other spaces maintained for this project.
4+
5+
- Be respectful. Discuss the work and evidence; avoid personal attacks, harassment, threats and discriminatory language.
6+
- Help newcomers. Ask for missing context kindly and explain assumptions.
7+
- Respect privacy. Do not share another person’s identity, credentials, private messages or personal information without permission.
8+
- Keep participation relevant. No spam, unsolicited promotion or coordinated manipulation of stars, votes or reviews.
9+
- Credit other people’s work, and disclose your connection when sharing a project.
10+
11+
Maintainers may edit or remove harmful content, close disruptive threads, or restrict participation. Responses should fit the severity and repetition of the behavior, with an explanation when appropriate and safe.
12+
13+
To report abuse privately, use GitHub’s **Report content** menu on the affected content or [GitHub’s abuse reporting route](https://support.github.com/contact/report-abuse). Do not post private evidence in an issue. For a technical vulnerability, follow [SECURITY.md](SECURITY.md).

0 commit comments

Comments
 (0)