Repository navigation
Active Plugins and Plugin Library pages (M5 part 2b-2) - #245
Merged
Merged
Conversation
Plugins can mark a setting as required with paperpi.plugin.setting(..., required=True). A switched-on plugin that is missing one is not shown and not counted as broken; the config check warns and paperpi list shows "needs <settings>". met_no and moon_phase require lat, lon and email (met.no's terms of service ask for a real email address); the example config no longer fills in a made-up address. Part of #238 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Part of #238. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Part of #238. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rer texts, more tests Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # src/paperpi/plugins/default/README.md # src/paperpi/plugins/default/__init__.py # src/paperpi/scheduler.py
4 tasks done
…ettings # Conflicts: # src/paperpi/plugins/splash_screen/README.md # src/paperpi/scheduler.py
txoof
approved these changes
Oct 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of #238 (M5 part 2b-2). Built on #244 (part 2b-1), which is built on #241. Merge in that order; each PR then moves to
mainby itself.What changed
Two new pages in the web interface, linked from the home page:
/plugins): every[[plugin]]block in the config file, in file order (the order the plugins take turns). Each row shows its status ("On", "Off", "Needs settings: lat, lon, email", or "Not used: has errors" with the line and message) and has Switch on / Switch off, Up / Down buttons, and Remove, which asks first./library): every plugin type with its description, exceptdefaultanddebugging. Choosing one asks for a name (a free one is suggested, e.g. "Word clock 2") and adds it at the end of Active Plugins.How a change works:
paperpi runhands the scheduler's reload to the web server), so it applies at once.Config.text); a password saved by the web interface does not count as a hand edit.met_nothis includes "Your own, real email address"). Until the settings page (part 3a), the page says to type them into the config file and shows its path.Choices I made without asking:
Docs: README web section,
docs/decisions/web-interface.mdnew "Plugin list pages" section,plugin-interface.mdandwriting-plugins.mdupdated.Size: +918/−26, over the ~800 guideline. About 400 lines are tests; the review rounds added most of them (and the fixes), and small review fixes stay in their PR.
Area
web (
src/paperpi/web/), core (src/paperpi/cli.pywiring,src/paperpi/config.pyConfig.text), docs.Tests
New
tests/test_web_plugins.py(26 tests): each page and change, comments kept, hand edits (after a reload, after a web change, password save, editor without a known text), required settings, names that can't be used, broken plugin types, repeated names, a file PaperPi can't use, log-in and other-website check on every new form, odd requests, permissions, and one test against the real running web server.tests/test_cli.pychecks thatpaperpi runpasses the reload and the file text;tests/test_config.pychecksConfig.text.uv run pytestpasses (1165 tests)uv run ruff check .passesImages
No screenshots: the Pi has no browser. To look at the pages:
uv run paperpi run --config <file>and openhttp://<Pi's IP>:8080/plugins.Review
maxlength="100"is written in the page.Only txoof approves and merges this PR.
🤖 Generated with Claude Code