HisenseBar v1.0.0: native menu-bar remote for Hisense VIDAA TVs
build / sanity (push) Waiting to run
build / macos-build (push) Waiting to run

- SwiftUI popover: apps grid w/ live search, sources, glass remote, gradient volume slider, animations
- Persistent python protocol bridge (vidaa-control, MQTT/TLS :36669)
- Wake-on-LAN power-on, one-time PIN pairing with token auto-refresh
- MCP server for AI agents (11 tv_* tools) + live test script
- Gitea Actions CI workflow
This commit is contained in:
2026-10-13 18:20:11 +03:00
commit cc2018aae7
12 changed files with 1699 additions and 0 deletions
+71
View File
@@ -0,0 +1,71 @@
# HisenseBar
A native macOS menu-bar app that controls Hisense VIDAA smart TVs over the local network — volume, apps, input sources, remote keys, and power, all from the menu bar.
![HisenseBar](docs/icon.png)
## Features
- **Volume** — live slider with mute (changes are pushed to the TV as you drag)
- **Apps** — full app grid with icons and local search; click to launch
- **Sources** — switch inputs (TV, HDMI1–3, AV…) with friendly device names ("PlayStation 5")
- **Remote** — d-pad with hold-to-repeat, OK/back/home/menu, transport keys, number pad
- **Power** — off via remote key, on via Wake-on-LAN (MAC auto-detected)
- **Pairing** — one-time PIN flow straight from the popover; token stored in `~/Library/Application Support/HisenseBar/tokens.json` and auto-refreshed
## Requirements
- macOS 14+
- Hisense VIDAA TV on the same network (MQTT protocol, port 36669)
- Python 3.9+ on this Mac for the protocol bridge (see Architecture)
## Install
1. Download `HisenseBar.app.zip` from [Releases](https://gitea.anwarpy.ai/ahmed/hisence-mac-app/releases).
2. Unzip and drag `HisenseBar.app` to `/Applications`.
3. First launch: right-click → **Open** (the app is not notarized), then allow **Local Network** access when macOS asks.
4. Click the **TV icon** in the menu bar → enter the PIN shown on your TV once.
## Build from source
```bash
git clone https://gitea.anwarpy.ai/ahmed/hisence-mac-app.git
cd hisence-mac-app
# create a python venv with the vidaa-control protocol library, then:
bash make_app.sh
```
`make_app.sh` builds the Swift package, assembles `HisenseBar.app`, and bundles the bridge + icon.
## Architecture
```
SwiftUI menu-bar app (BridgeTV actor)
│ line-JSON over stdio
▼
bridge.py — persistent protocol bridge (vidaa-control implementation)
│ MQTT 3.1.1 over TLS :36669
▼
Hisense VIDAA TV
```
The UI is pure native SwiftUI. All TV protocol work (pairing, tokens, MQTT) happens in the Python bridge process, which stays connected for instant commands. The TV's TLS stack rejects Apple's Network.framework TLS, but accepts OpenSSL — the bridge sidesteps that entirely.
## Troubleshooting
| Problem | Fix |
|---|---|
| Nothing happens / no PIN | System Settings → Privacy & Security → **Local Network** → enable HisenseBar |
| macOS blocks launch | Right-click the app → Open (unsigned build) |
| TV shows "fake sleep", commands half-work | Press any key once — the screen wakes, everything responds |
| Pairing expired | Menu bar → gear → Pair TV again |
## Roadmap
- [x] Design refresh: animations, custom slider, glass remote buttons, app icon
- [ ] Hermes MCP server (`mcp_tv_server.py` — in progress, 11 `tv_*` tools)
- [ ] Notarized builds
## License
MIT — see [LICENSE](LICENSE).