Select the types of activity you want to include in your feed.
Recommend IPython and clarify async REPL usage
Update README examples to IPython prompt/output format, add python -m asyncio guidance for the stdlib REPL, and note that subscriptions fire in both REPLs. Recommend IPython and clarify async REPL usage
···11# rockbox-sdk
2233-Async Python SDK for [Rockbox](https://www.rockbox.org) — a typed, batteries-included
33+Async Python SDK for [Rockbox Zig](https://github.com/tsirysndr/rockbox-zig) — a typed, batteries-included
44client for the GraphQL API exposed by `rockboxd`.
5566```python
···41414242## Try it in the REPL
43434444-The SDK is async-first, so the easiest way to poke at a live `rockboxd` is
4545-Python's built-in async REPL — `await` works at the top level:
4444+The SDK is async-first. The recommended REPL is **IPython** — `await` works at
4545+the top level, and you get tab-completion on models, inline docs with `?`, and
4646+`%timeit` for benchmarking:
46474748```sh
4848-uv run python -m asyncio
4949+uv run ipython
4950```
50515152```python
5252->>> from rockbox_sdk import RockboxClient, PlaybackStatus
5353->>> client = RockboxClient(host="localhost", port=6062)
5454->>> await client.playback.status()
5555-<PlaybackStatus.PLAYING: 1>
5656->>> track = await client.playback.current_track()
5757->>> track.title, track.artist
5858-('Money', 'Pink Floyd')
5959->>> await client.sound.get_volume()
6060-VolumeInfo(volume=-12, min=-74, max=6)
6161->>> await client.library.search("daft punk")
6262->>> await client.aclose()
5353+In [1]: from rockbox_sdk import RockboxClient, PlaybackStatus
5454+In [2]: client = RockboxClient(host="localhost", port=6062)
5555+In [3]: await client.playback.status()
5656+Out[3]: <PlaybackStatus.PLAYING: 1>
5757+In [4]: track = await client.playback.current_track()
5858+In [5]: track.title, track.artist
5959+Out[5]: ('Money', 'Pink Floyd')
6060+In [6]: await client.sound.get_volume()
6161+Out[6]: VolumeInfo(volume=-12, min=-74, max=6)
6262+In [7]: await client.library.search("daft punk")
6363+In [8]: await client.aclose()
6364```
64656566You can also test offline — models, enums, and the builder don't need a server:
66676768```python
6868->>> from rockbox_sdk import RockboxClient, Track, InsertPosition
6969->>> Track.model_validate({"title": "Money", "albumArt": "x.jpg"}).album_art
7070-'x.jpg'
7171->>> RockboxClient.builder().host("nas.local").build()._config.resolve_http_url()
7272-'http://nas.local:6062/graphql'
6969+In [1]: from rockbox_sdk import RockboxClient, Track, InsertPosition
7070+In [2]: Track.model_validate({"title": "Money", "albumArt": "x.jpg"}).album_art
7171+Out[2]: 'x.jpg'
7272+In [3]: RockboxClient.builder().host("nas.local").build()._config.resolve_http_url()
7373+Out[3]: 'http://nas.local:6062/graphql'
7374```
74757575-If you'd rather use the plain `python` REPL, wrap each call in `asyncio.run(...)`:
7676+If you prefer the stdlib REPL, `python -m asyncio` also supports top-level
7777+`await`, or wrap each call in `asyncio.run(...)` in a plain `python` session:
7878+7979+```sh
8080+uv run python -m asyncio
8181+```
76827783```python
7878->>> import asyncio
7984>>> from rockbox_sdk import RockboxClient
8085>>> client = RockboxClient()
8181->>> asyncio.run(client.playback.status())
8686+>>> await client.playback.status()
8287```
83888484-The async REPL is much nicer — subscriptions (`await client.connect()`) also keep
8585-firing in the background between prompts.
8989+Subscriptions (`await client.connect()`) keep firing in the background between
9090+prompts in both REPLs.
86918792## Configure
8893
+1-1
sdk/ruby/README.md
···11# rockbox
2233-Ruby SDK for [Rockbox](https://www.rockbox.org) — a builder-friendly, block-friendly GraphQL client with real-time event subscriptions and a plugin system.
33+Ruby SDK for [Rockbox Zig](https://github.com/tsirysndr/rockbox-zig) — a builder-friendly, block-friendly GraphQL client with real-time event subscriptions and a plugin system.
4455```ruby
66require "rockbox"
+1-1
sdk/typescript/README.md
···11# @rockbox-zig/sdk
2233-TypeScript SDK for [Rockbox](https://www.rockbox.org) — a fully typed GraphQL client with real-time subscriptions and a plugin system.
33+TypeScript SDK for [Rockbox Zig](https://github.com/tsirysndr/rockbox-zig) — a fully typed GraphQL client with real-time subscriptions and a plugin system.
4455## Table of contents
66