docs: 2025.x version coverage, ConfigUiValues callbacks, audit fixes (v1.9.0)#37
Conversation
…tes, ConfigUiValues callbacks - quick-start.md: expand version reference table (paths, Python, Runtime API) to cover 2025.2 / 2025.1 / 2023.2 and clarify ServerApiVersion is a minimum - common-issues.md + quick-start.md: document version-keyed pip success marker (3.13-pip-install-log-success.txt on 2025.2) - common-issues.md: add "Upgrading to Indigo 2025.2 / Python 3.13" section covering telnetlib removal, websockets v14+ rename, matplotlib legendHandles and plot_date deprecations - plugin-lifecycle.md: add ConfigUI pre-population callbacks reference covering all five get*ConfigUiValues callbacks (incl. previously undocumented getMenuActionConfigUiValues and getActionConfigUiValues), with menu-item date-default and device-token examples - cross-link new reference from menu-items.md, actions.md, devices.md, configui.md, events.md, plugin-preferences.md - bump plugin.json + marketplace.json to 1.9.0 Closes #32, #33, #34, #35 https://claude.ai/code/session_01PBR2a67rzj9NsZ8Vpmat6H
Fixes 6 of 7 findings in #36; deferred item is the menu-item validation/closed ConfigUI callbacks pending plugin_base.py verification. - snippets/plugin-base-template.py: docstring now reflects 3.10–3.13 range - docs/plugin-dev/concepts/scripting-shell.md: switch CLI path examples to Indigo 2025.2 with a substitute-your-version note linking the version table - skills/dev/SKILL.md: replace "bundle in Contents/Packages/" with the requirements.txt-based guidance, and update the Python version line - docs/api/README.md: fix broken link to indigo-object-model.md (correct path is plugin-dev/api/), and fix two adjacent broken links to concepts/ and examples/ that pointed to non-existent repo-root paths - docs/api/overview.md: same indigo-object-model.md path fix - docs/plugin-dev/concepts/README.md: replace dead link to non-existent CONTRIBUTING.md with a pointer to the GitHub repo https://claude.ai/code/session_01PBR2a67rzj9NsZ8Vpmat6H
📝 WalkthroughWalkthroughVersion 1.9.0 release updates plugin manifests and documentation. Adds ConfigUI pre-population callback documentation across multiple concept guides and plugin lifecycle reference. Updates version examples to Indigo 2025.2 with Python 3.10–3.13 support, adds 2025.2/Python 3.13 upgrade troubleshooting, and maintains consistent path and API references throughout. ChangesPlugin Version Bump & Documentation Updates
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related issues
Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Tip 💬 Introducing Slack Agent: The best way for teams to turn conversations into code.Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.
Built for teams:
One agent for your entire SDLC. Right inside Slack. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Review rate limit: 0/1 reviews remaining, refill in 60 minutes.Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (2)
docs/plugin-dev/troubleshooting/common-issues.md (1)
348-348: ⚡ Quick winCapitalize “Plugins” when referring to Indigo Plugins.
Use
Plugins(capitalized) for Indigo Plugin references to match repository terminology rules.As per coding guidelines, "Use 'Plugin' (capitalized) when referring to Indigo plugins (the tools this project helps build)".
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/plugin-dev/troubleshooting/common-issues.md` at line 348, The sentence "Indigo 2025.2 ships Python 3.13.9. Several stdlib and popular-library changes between 3.11 and 3.13 break plugins that worked on 2025.1." should use the repository's terminology by capitalizing "Plugins" when referring to Indigo Plugins; update the word "plugins" to "Plugins" to comply with the guideline (use 'Plugin'/'Plugins' capitalized when referring to Indigo plugins) so the phrase reads "...break Plugins that worked on 2025.1."docs/plugin-dev/quick-start.md (1)
317-317: ⚡ Quick winUse “Plugin” capitalization for Indigo Plugin references.
In this sentence, capitalize
plugintoPluginfor consistency with the project’s terminology rule.As per coding guidelines, "Use 'Plugin' (capitalized) when referring to Indigo plugins (the tools this project helps build)".
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/plugin-dev/quick-start.md` at line 317, Update the capitalization of the word "plugin" to "Plugin" in the sentence referencing `ServerApiVersion` and `Info.plist`; locate the sentence containing the phrases `ServerApiVersion` and `Info.plist` and change "plugin" to "Plugin" so it follows the project's terminology rule for Indigo Plugin references.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@docs/plugin-dev/troubleshooting/common-issues.md`:
- Around line 352-378: Update the new fenced code blocks that show error output
to include a language identifier (use "text") so Markdown lint MD040 is
satisfied; specifically add ```text to the blocks containing the strings
"ModuleNotFoundError: No module named 'telnetlib'", "TypeError: connect() got
unexpected keyword argument 'extra_headers'", "AttributeError: 'Legend' object
has no attribute 'legendHandles'", and "MatplotlibDeprecationWarning: plot_date
was deprecated in 3.9 and will be removed in 3.11. Use plot() instead." so each
error-output fence is ```text ... ``` instead of just ``` ... ```.
In `@snippets/plugin-base-template.py`:
- Line 13: Docstring version range uses an en dash (Unicode “–”) causing RUF002;
replace it with an ASCII hyphen "-" in the docstring text "Indigo 2023.2+
(Python 3.10–3.13; 2025.2 recommended)" so it becomes "Indigo 2023.2+ (Python
3.10-3.13; 2025.2 recommended)"; update the top-level docstring literal in
snippets/plugin-base-template.py (the line containing that version string)
accordingly.
---
Nitpick comments:
In `@docs/plugin-dev/quick-start.md`:
- Line 317: Update the capitalization of the word "plugin" to "Plugin" in the
sentence referencing `ServerApiVersion` and `Info.plist`; locate the sentence
containing the phrases `ServerApiVersion` and `Info.plist` and change "plugin"
to "Plugin" so it follows the project's terminology rule for Indigo Plugin
references.
In `@docs/plugin-dev/troubleshooting/common-issues.md`:
- Line 348: The sentence "Indigo 2025.2 ships Python 3.13.9. Several stdlib and
popular-library changes between 3.11 and 3.13 break plugins that worked on
2025.1." should use the repository's terminology by capitalizing "Plugins" when
referring to Indigo Plugins; update the word "plugins" to "Plugins" to comply
with the guideline (use 'Plugin'/'Plugins' capitalized when referring to Indigo
plugins) so the phrase reads "...break Plugins that worked on 2025.1."
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: a0e8b227-42ac-4bbd-ad7d-e2d479f9891a
📒 Files selected for processing (17)
.claude-plugin/marketplace.json.claude-plugin/plugin.jsondocs/api/README.mddocs/api/overview.mddocs/plugin-dev/concepts/README.mddocs/plugin-dev/concepts/actions.mddocs/plugin-dev/concepts/configui.mddocs/plugin-dev/concepts/devices.mddocs/plugin-dev/concepts/events.mddocs/plugin-dev/concepts/menu-items.mddocs/plugin-dev/concepts/plugin-lifecycle.mddocs/plugin-dev/concepts/plugin-preferences.mddocs/plugin-dev/concepts/scripting-shell.mddocs/plugin-dev/quick-start.mddocs/plugin-dev/troubleshooting/common-issues.mdskills/dev/SKILL.mdsnippets/plugin-base-template.py
| ``` | ||
| ModuleNotFoundError: No module named 'telnetlib' | ||
| ``` | ||
|
|
||
| **Fix**: add `telnetlib-313-and-up` to your `requirements.txt`. The shim restores the same import path so existing code keeps working. | ||
|
|
||
| ### `websockets` v14+ — `extra_headers` renamed | ||
|
|
||
| ``` | ||
| TypeError: connect() got unexpected keyword argument 'extra_headers' | ||
| ``` | ||
|
|
||
| **Fix**: rename `extra_headers=` to `additional_headers=` in `websockets.connect()`. This is a `websockets` library change (v14+), not Python 3.13 itself — pinning `websockets<14` in `requirements.txt` is the alternative. | ||
|
|
||
| ### `matplotlib` — `legendHandles` removed | ||
|
|
||
| ``` | ||
| AttributeError: 'Legend' object has no attribute 'legendHandles' | ||
| ``` | ||
|
|
||
| **Fix**: use `legend_handles` (snake_case) instead — e.g. `ax.legend().legend_handles`. | ||
|
|
||
| ### `matplotlib` — `plot_date` deprecated | ||
|
|
||
| ``` | ||
| MatplotlibDeprecationWarning: plot_date was deprecated in 3.9 and will be removed in 3.11. Use plot() instead. | ||
| ``` |
There was a problem hiding this comment.
Add language identifiers to the new fenced code blocks.
The new error-output fences in this section omit language tags, which triggers MD040.
Suggested fix
-```
+```text
ModuleNotFoundError: No module named 'telnetlib'...
- +text
TypeError: connect() got unexpected keyword argument 'extra_headers'
...
-```
+```text
AttributeError: 'Legend' object has no attribute 'legendHandles'
...
- +text
MatplotlibDeprecationWarning: plot_date was deprecated in 3.9 and will be removed in 3.11. Use plot() instead.
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)
[warning] 352-352: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
[warning] 360-360: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
[warning] 368-368: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
[warning] 376-376: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/plugin-dev/troubleshooting/common-issues.md` around lines 352 - 378,
Update the new fenced code blocks that show error output to include a language
identifier (use "text") so Markdown lint MD040 is satisfied; specifically add
```text to the blocks containing the strings "ModuleNotFoundError: No module
named 'telnetlib'", "TypeError: connect() got unexpected keyword argument
'extra_headers'", "AttributeError: 'Legend' object has no attribute
'legendHandles'", and "MatplotlibDeprecationWarning: plot_date was deprecated in
3.9 and will be removed in 3.11. Use plot() instead." so each error-output fence
is ```text ... ``` instead of just ``` ... ```.
| Requirements: | ||
| - Indigo 2023.2+ (Python 3.10+) | ||
| - ServerApiVersion 3.0 in Info.plist | ||
| - Indigo 2023.2+ (Python 3.10–3.13; 2025.2 recommended) |
There was a problem hiding this comment.
Replace EN DASH with ASCII hyphen in docstring version range.
Line 13 uses –, which Ruff flags as ambiguous Unicode punctuation (RUF002).
Suggested fix
- - Indigo 2023.2+ (Python 3.10–3.13; 2025.2 recommended)
+ - Indigo 2023.2+ (Python 3.10-3.13; 2025.2 recommended)📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - Indigo 2023.2+ (Python 3.10–3.13; 2025.2 recommended) | |
| - Indigo 2023.2+ (Python 3.10-3.13; 2025.2 recommended) |
🧰 Tools
🪛 Ruff (0.15.12)
[warning] 13-13: Docstring contains ambiguous – (EN DASH). Did you mean - (HYPHEN-MINUS)?
(RUF002)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@snippets/plugin-base-template.py` at line 13, Docstring version range uses an
en dash (Unicode “–”) causing RUF002; replace it with an ASCII hyphen "-" in the
docstring text "Indigo 2023.2+ (Python 3.10–3.13; 2025.2 recommended)" so it
becomes "Indigo 2023.2+ (Python 3.10-3.13; 2025.2 recommended)"; update the
top-level docstring literal in snippets/plugin-base-template.py (the line
containing that version string) accordingly.
Summary
Documentation refresh for Indigo 2025.x developers, plus an audit-fix follow-up. Bumps to v1.9.0.
Commit 1 (
4b7a5b6) — closes #32, #33, #34, #35quick-start.md: expanded version reference table covering 2025.2 / 2025.1 / 2023.2 (paths, Python, Runtime API), with a note thatServerApiVersionis a minimumquick-start.md+common-issues.md: documented the version-keyed pip success marker (3.13-pip-install-log-success.txton 2025.2,pip-install-log-success.txton older)common-issues.md: new "Upgrading to Indigo 2025.2 / Python 3.13" section coveringtelnetlibremoval,websocketsv14+ rename, matplotliblegendHandlesandplot_dateplugin-lifecycle.md: new ConfigUI pre-population callbacks reference covering all fiveget*ConfigUiValuescallbacks (incl. previously undocumentedgetMenuActionConfigUiValuesandgetActionConfigUiValues), plus menu-item date-default and device-token examplesmenu-items.md,actions.md,devices.md,configui.md,events.md,plugin-preferences.mdCommit 2 (
3caa6f1) — closes 6 of 7 in #36snippets/plugin-base-template.py: docstring reflects 3.10–3.13 rangescripting-shell.md: CLI path examples switched to 2025.2 with substitute-your-version noteskills/dev/SKILL.md: replaced "bundle inContents/Packages/" withrequirements.txtguidance; updated Python version linedocs/api/README.md+overview.md: fixed brokenindigo-object-model.mdlinks and two adjacent broken linksdocs/plugin-dev/concepts/README.md: deadCONTRIBUTING.mdlink replaced with a GitHub repo pointerThe remaining item in #36 (menu-item
validate*/closed*ConfigUI callbacks) is deferred pendingplugin_base.pyverification.Test plan
quick-start.md,common-issues.md,plugin-lifecycle.mdplugin-lifecycle.md#configui-pre-population-callbacksfrom each concepts file; fixed object-model links fromdocs/api/)scripting-shell.mdare accurate for your installhttps://claude.ai/code/session_01PBR2a67rzj9NsZ8Vpmat6H
Generated by Claude Code
Summary by CodeRabbit
New Features
Documentation
Chores