You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Release v0.0.26 — plugin install from git, config path fix, hook shared data
- Plugin install uses git+{homepage} for GitHub/GitLab repos
- Post-install verification catches uv no-op bug
- detect_installer() targets correct Python with --python flag
- save_config() respects REELN_CONFIG/REELN_PROFILE env vars
- HookContext.shared dict for plugin-to-core data passing
- GameState.livestreams field persists URLs from hook plugins
- resolve_config_path() extracted for reuse
- Version strings removed from test assertions
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Update docs for v0.0.26: plugin git install, HookContext.shared, config path
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix ruff SIM102: combine nested if statements
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
|`--dry-run`| Preview the install command without executing |
85
85
|`--installer`| Force a specific installer (`pip` or `uv`) |
86
86
87
-
After installation, the plugin is automatically enabled in your config. The installer is auto-detected: `uv` is preferred when available, otherwise falls back to `pip`. On permission failures, the command auto-retries with `--user`.
87
+
After installation, the plugin is automatically enabled in your config.
88
+
89
+
**Install source:** When a plugin's registry entry has a GitHub or GitLab homepage, the install uses `git+{homepage}` (e.g. `git+https://github.com/StreamnDad/reeln-plugin-streamn-scoreboard`). Plugins without a git homepage fall back to the PyPI package name.
90
+
91
+
The installer is auto-detected: `uv` is preferred when available, otherwise falls back to `pip`. On permission failures, the command auto-retries with `--user`.
88
92
89
93
### `reeln plugins update`
90
94
@@ -181,6 +185,19 @@ reeln exposes lifecycle hooks that plugins can subscribe to:
181
185
|`ON_SEGMENT_COMPLETE`| After segment merge and state update |
182
186
|`ON_ERROR`| When an error occurs in core operations |
183
187
188
+
Hooks receive a `HookContext` with three fields:
189
+
190
+
-`hook` — the hook type (e.g. `Hook.ON_GAME_INIT`)
191
+
-`data` — read-only data from core (game directory, team profiles, etc.)
192
+
-`shared` — writable dict for plugins to pass data back to core
193
+
194
+
```python
195
+
defon_game_init(context: HookContext) -> None:
196
+
game_dir = context.data["game_dir"]
197
+
# Write data back — core persists shared["livestreams"] to game.json
Copy file name to clipboardExpand all lines: docs/guide/configuration.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -289,6 +289,8 @@ Priority order (highest wins):
289
289
4.`REELN_PROFILE` env var
290
290
5. Default XDG path (`config.json`)
291
291
292
+
This priority applies to both reading and writing. When a command modifies config (e.g. `reeln plugins enable`), the changes are written back to the same resolved path.
0 commit comments