Skip to content

docs: Plugin system documentation and discoverability (#203)#204

Merged
deucebucket merged 2 commits intodevelopfrom
docs/issue-203-plugin-documentation
Apr 7, 2026
Merged

docs: Plugin system documentation and discoverability (#203)#204
deucebucket merged 2 commits intodevelopfrom
docs/issue-203-plugin-documentation

Conversation

@deucebucket
Copy link
Copy Markdown
Owner

Summary

  • Added Python drop-in plugin guide (manifest.json schema, BasePlugin interface, quick start steps) directly in the Plugins settings tab sidebar
  • Added secrets management card explaining secrets.json usage for both Docker and bare metal
  • Added ready-to-use API configurations for Google Books and Open Library with exact JSONPath mappings
  • Shipped example-logger plugin to examples/plugins/ with comprehensive README
  • Added new hint entries for plugin-related tooltips

Test plan

  • Open Settings > Integrations tab, scroll through the Plugins sidebar cards
  • Verify Python Drop-in Plugins card shows manifest.json and BasePlugin code examples
  • Verify Secrets Management card shows secrets.json example with Docker/bare metal paths
  • Verify Example API Configurations card shows Google Books and Open Library configs
  • Verify hint tooltips appear on the new cards
  • Verify examples/plugins/example-logger/ contains working manifest.json and layer.py

Closes #203

Add in-app docs for Python drop-in plugins, secrets management, and
real-world API examples (Google Books, Open Library) to the Plugins
settings tab. Ship example-logger plugin to examples/plugins/ with
comprehensive README.
Copy link
Copy Markdown

@bucket-agent bucket-agent Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔍 Vibe Check Review

Context

Documentation-only PR adding in-app plugin system help, an example logger plugin, a standalone plugins README, and new hint entries for plugin-related tooltips. Addresses issue #203.

Codebase Patterns I Verified

  • BasePlugin interface (plugin_loader.py:47-103 on PR branch): setup(), can_process(), process(), teardown() — matches docs exactly
  • Timeout: DEFAULT_PLUGIN_TIMEOUT = 30 — matches docs claim of "30s timeout"
  • Confidence weight: source_weight = 60 in plugin_loader.py:335 — matches README claim of "60"
  • Auto-disable threshold: AUTO_DISABLE_THRESHOLD = 5 in plugins.py:29 — matches docs claim of "5 consecutive failures"
  • Hints pattern: Existing hints in hints.py use flat dict keys with descriptive strings — new entries match
  • Template pattern: Existing plugins_settings.html uses Jinja2 {{"{{"}} escaping for literal braces — new cards match

✅ Good

  • All factual claims (timeout, weight, failure threshold, BasePlugin methods) verified against actual code
  • Example plugin is minimal and correct — good template for users
  • README covers manifest fields, interface methods, behavior, and config comprehensively
  • Secrets management card is a nice touch — separating keys from config is a common user confusion point
  • CHANGELOG and version bump present and correct

🚨 Issues Found

Severity Location Exact Code Quote Issue Fix
MEDIUM templates/plugins_settings.html:182 {{"{{"}}title{{"}}"}}}+inauthor: Extra } in Google Books URL template. Renders as {{title}}} (three closing braces) instead of {{title}}. Users copying this example will get a broken template variable. Remove the extra } — change {{"}}"}}} to {{"}}"}}}... actually, change {{"}}"}}}+inauthor: to {{"}}"}}+inauthor:

📋 Scope Verification

Issue Problem Addressed? Notes
#203 Plugin system poorly documented/discoverable, unclear secrets, no real-world examples In-app help cards, example plugin, README, secrets docs, API config examples all added

Scope Status: SCOPE_OK

📝 Documentation Check

  • CHANGELOG.md: ✅ Updated
  • README.md: ✅ Version badge updated

Minor Notes (non-blocking)

  • Two hint keys added to hints.py (custom_api_sources, plugin_health) are not referenced in any template. Not a bug — they may be intended for other UI locations — but worth confirming they're needed.

🎯 Verdict

COMMENT — The extra } in the Google Books URL example (line 182) will show users a broken template variable if they copy it. It's a cosmetic docs issue, not a code bug, so not blocking — but worth fixing before merge since the whole point of this PR is to help users get configs right.


🤖 Ruthless review by vibe-check

Copy link
Copy Markdown

@bucket-agent bucket-agent Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔍 Vibe Check Review

Context

Documentation PR adding in-app plugin guides, example plugin, secrets management docs, and API configuration walkthroughs for the existing plugin system (added in PRs #195-197).

Codebase Patterns I Verified

  • Plugin system exists: library_manager/plugin_loader.py with BasePlugin class added in PR #197 (merged)
  • from library_manager.plugin_loader import BasePlugin - correct import path, verified in PR #197 diff
  • 30-second timeout - DEFAULT_PLUGIN_TIMEOUT = 30 confirmed in plugin_loader.py
  • 5 consecutive failures auto-disable - AUTO_DISABLE_THRESHOLD = 5 confirmed in PR #196
  • Confidence weight 60 - source_weight = 60 confirmed in plugin_loader.py (PR #197 line 448)
  • default_order 35 - confirmed as default in both manifest validation and PluginInfo dataclass
  • Hints pattern - new entries follow existing dict-based pattern with section comments, matching hints.py style exactly
  • secrets.json - referenced in app.py and config.py (confirmed via grep)

✅ Good

  • All documented claims are factually accurate against the implemented code
  • Example plugin is clean, minimal, and correctly demonstrates the full BasePlugin interface
  • manifest.json field table is comprehensive and matches the actual validation logic in plugin_loader.py
  • Secrets management section correctly distinguishes Docker vs bare metal paths
  • Google Books and Open Library API configs use correct endpoint URLs and JSONPath syntax
  • Hint entries are well-written and consistent with existing hint style
  • CHANGELOG and version bump are correct

🚨 Issues Found

No issues found.

📋 Scope Verification

Issue Problem Addressed? Notes
#203 Plugin system poorly documented, unclear secrets management, no examples In-app guide, example plugin in examples/plugins/, secrets card, API config walkthroughs, hint tooltips - all deliverables covered

Scope Status: SCOPE_OK

📝 Documentation Check

  • CHANGELOG.md: ✅ Updated (beta.145 entry)
  • README.md: ✅ Version badge updated

🎯 Verdict

APPROVE - Clean docs PR. All factual claims verified against the actual plugin implementation. Ships useful documentation and a working example plugin.

@deucebucket deucebucket merged commit a06840c into develop Apr 7, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant