Sfoglia il codice sorgente

Add Divoom setup docs

Alvin Unreal 3 mesi fa
parent
commit
48b9d34d54
4 ha cambiato i file con 170 aggiunte e 6 eliminazioni
  1. 13 2
      README.md
  2. 12 4
      docs/configuration.md
  3. 145 0
      docs/divoom.md
  4. BIN
      img/divoom-minitoo.mp4

+ 13 - 2
README.md

@@ -21,6 +21,17 @@ The main idea is simple: instead of forcing one model to do everything, the plug
 
 To explore the agents themselves, see **[Meet the Pantheon](#meet-the-pantheon)**. For the full feature set, see **[Features & Workflows](#features-and-workflows)** below.
 
+### Divoom MiniToo Status Display
+
+You can optionally mirror orchestrator and specialist-agent activity to a Divoom
+MiniToo Bluetooth display. Install and run the companion macOS daemon first,
+then enable `divoom.enabled` in the plugin config. See **[Divoom Display
+Integration](docs/divoom.md)**.
+
+<div align="center">
+  <video src="img/divoom-minitoo.mp4" controls width="720"></video>
+</div>
+
 ### Quick Start
 
 Copy and paste this prompt to your LLM agent (Claude Code, AmpCode, Cursor, etc.):
@@ -89,8 +100,8 @@ starter config. See **[Session Management](docs/session-management.md)** if you
 want to customize how many resumable child-agent sessions are remembered.
 
 Optional Divoom Bluetooth display status GIFs are available but disabled by
-default. Enable them with `"divoom": { "enabled": true }`; see
-**[Configuration](docs/configuration.md#divoom-display-integration)**.
+default. Install the companion daemon first, then enable them with
+`"divoom": { "enabled": true }`; see **[Divoom Display Integration](docs/divoom.md)**.
 
 ### For Alternative Providers
 

+ 12 - 4
docs/configuration.md

@@ -172,13 +172,21 @@ automatically.
 
 ### Divoom Display Integration
 
-Divoom integration is disabled by default. When enabled, the plugin sends bundled
-GIFs to the Divoom MiniToo app's bundled CLI:
+Divoom integration is disabled by default. Install and start the Divoom MiniToo
+macOS daemon from
+[`divoom-minitoo-osx`](https://github.com/alvinunreal/divoom-minitoo-osx)
+first, then enable this plugin integration. See the full
+**[Divoom guide](divoom.md)** for setup, daemon startup, and troubleshooting.
 
-- plugin load: `intro.gif`
+When enabled, the plugin sends bundled GIFs to the Divoom MiniToo app's bundled
+CLI:
+
+- plugin load / waiting for user input: `intro.gif`
+- orchestrator busy: `orchestrator.gif`
 - first active delegated agent: that agent's GIF
 - parallel delegated agents: the first agent keeps the display
-- all delegated agents complete: `orchestrator.gif`
+- all delegated agents complete while orchestrator keeps working: `orchestrator.gif`
+- orchestrator idle again: `intro.gif`
 
 ```jsonc
 {

+ 145 - 0
docs/divoom.md

@@ -0,0 +1,145 @@
+# Divoom MiniToo Display Integration
+
+oh-my-opencode-slim can mirror agent activity to a Divoom MiniToo Bluetooth
+display. The integration is optional and disabled by default.
+
+<div align="center">
+  <video src="../img/divoom-minitoo.mp4" controls width="720"></video>
+</div>
+
+## What it shows
+
+When enabled, the plugin sends bundled GIFs as OpenCode changes state:
+
+| OpenCode state | Divoom display |
+|----------------|----------------|
+| Plugin loaded / orchestrator waiting for user input | `intro.gif` |
+| Orchestrator is busy planning or working directly | `orchestrator.gif` |
+| A delegated agent starts | that agent's GIF |
+| Multiple agents run in parallel | first delegated agent keeps the display |
+| Delegated agents finish but orchestrator is still working | `orchestrator.gif` |
+| Orchestrator becomes idle again | `intro.gif` |
+
+Bundled GIFs currently cover `orchestrator`, `explorer`, `librarian`, `oracle`,
+`designer`, `fixer`, and `council`.
+
+## Prerequisites
+
+This plugin does not talk to the Bluetooth device directly. It shells out to the
+Divoom MiniToo macOS sender/daemon tooling from:
+
+https://github.com/alvinunreal/divoom-minitoo-osx
+
+Before enabling the plugin integration:
+
+1. Install the Divoom MiniToo macOS app/tooling from that repository.
+2. Pair the Divoom MiniToo with macOS.
+3. Disconnect the normal macOS audio profile once so the daemon can claim the
+   RFCOMM app channel.
+4. Start the Divoom daemon.
+5. Confirm the bundled sender works manually.
+
+The important operational detail: the daemon should stay running. Once it holds
+the RFCOMM channel open, plugin-triggered GIF sends should not need repeated
+Bluetooth disconnect/reconnect cycles.
+
+## Start the Divoom daemon
+
+Follow the current instructions in
+[`divoom-minitoo-osx`](https://github.com/alvinunreal/divoom-minitoo-osx). The
+validated flow is:
+
+```bash
+# From the divoom-minitoo-osx checkout/app resources, disconnect audio once.
+blueutil --disconnect <DIVOOM_BLUETOOTH_ADDRESS> || true
+
+# Start the daemon on RFCOMM channel 1 / localhost port 40583.
+tools/divoom-daemon <DIVOOM_BLUETOOTH_ADDRESS> 1 40583
+```
+
+If you are using the packaged MiniToo app bundle, use its daemon/menu-bar start
+flow instead. The key is the same: disconnect the audio profile if normal daemon
+startup fails, then start the daemon and leave it running.
+
+## Manual sender smoke test
+
+Before blaming OpenCode, verify the Divoom sender works directly:
+
+```bash
+"/Applications/Divoom MiniToo.app/Contents/Resources/.venv/bin/python" \
+  "/Applications/Divoom MiniToo.app/Contents/Resources/tools/divoom_send.py" \
+  "/path/to/test.gif" \
+  --size 128 \
+  --fps 8 \
+  --speed 125 \
+  --max-frames 24 \
+  --posterize-bits 3
+```
+
+If that updates the display, the OpenCode integration should work once enabled.
+
+## Enable in oh-my-opencode-slim
+
+Open your plugin config:
+
+```text
+~/.config/opencode/oh-my-opencode-slim.json
+```
+
+Add:
+
+```jsonc
+{
+  "divoom": {
+    "enabled": true
+  }
+}
+```
+
+Then rebuild/restart OpenCode if you are running from a local checkout.
+
+## Tunable settings
+
+The defaults target the macOS Divoom MiniToo app bundle:
+
+```jsonc
+{
+  "divoom": {
+    "enabled": true,
+    "python": "/Applications/Divoom MiniToo.app/Contents/Resources/.venv/bin/python",
+    "script": "/Applications/Divoom MiniToo.app/Contents/Resources/tools/divoom_send.py",
+    "size": 128,
+    "fps": 8,
+    "speed": 125,
+    "maxFrames": 24,
+    "posterizeBits": 3
+  }
+}
+```
+
+You can also override individual GIFs with either bundled filenames or absolute
+paths:
+
+```jsonc
+{
+  "divoom": {
+    "enabled": true,
+    "gifs": {
+      "oracle": "/Users/me/Pictures/oracle.gif",
+      "fixer": "fixer.gif"
+    }
+  }
+}
+```
+
+## Troubleshooting
+
+- **Nothing changes on the display:** run the manual sender smoke test first.
+- **Daemon cannot open the channel:** disconnect the Divoom audio profile, then
+  start the daemon again.
+- **GIF sends are slow:** reduce `maxFrames`, lower `fps`, or use fewer colors
+  via `posterizeBits`.
+- **A custom GIF does not show:** verify the path exists. Relative names resolve
+  against the bundled Divoom asset directory; absolute paths are used as-is.
+- **Only one of several parallel agents appears:** expected behavior. The first
+  delegated agent keeps the display until all parallel delegated work finishes.

BIN
img/divoom-minitoo.mp4