Repository navigation
Plugin id and friendly name (M5 part 3a-0) - #251
Merged
Merged
Conversation
Each [[plugin]] block now has a fixed `id` (letters, digits, _ and -, at most 40, unique; names the storage folder) and an optional friendly `name` shown by the web interface. The Plugin Library makes the id (type + 8 random hex characters); the name may be empty or the same as another plugin's. `paperpi render --config` takes `--id`; `paperpi list` shows both. Part of #238 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 8, 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
What changed
Each
[[plugin]]block now has a fixedidand an optional friendlyname(agreed with txoof 2026-10-08; v2 does not read v1 configs, global decision, migration tool = #248).id: required, unique (capitals don't count,-is the same as_), only letters, digits,_and-, at most 40, at least one letter or digit. It names the plugin's storage folder, the log lines andpaperpi render --config … --id. IDs starting withbuilt-inare kept for PaperPi's own plugins (fallback clock, default, splash), so they always have their own folder.name: what the web interface shows, any text up to 100 characters (no control characters, no invisible text-direction characters), not unique, can change at any time. Empty: theidis shown.met_no-3f9a1c2e.type · idwhen the id differs, so two plugins with the same name can be told apart. Forms send theid.paperpi listhas anidcolumn and anamecolumn.paperpi render --configtakes--id(was--name).config-format.md,web-interface.md,plugin-interface.md,errors-and-time-limits.md) updated.Choices made without asking:
idto a block by itself; a block without one is an error.paperpi render --idmatches IDs the same way the uniqueness check does (--id clockfindsid = "Clock").built-in-default,built-in-clockandbuilt-in-splash, so their storage folders keep their names.Size: +578/−335 (about 900 lines), a bit over the guideline. Most of it is the mechanical rename
name→idin tests and docs. The next parts (3a-1 form logic, 3a-2 settings page) will be stacked on this branch.Area
core (
plugin.pyPluginEntry,config.py,scheduler.py,cli.py,example.py), web (src/paperpi/web/), plugin READMEs, docs,paperpi.example.toml. No other open PR changesconfig.py,plugin.py,pyproject.tomloruv.lock.Tests
New tests: id rules (length, empty, only
_/-,-same as_,built-inkept), lookup by id, a name of only spaces shows the id, hidden direction characters refused, the Library makes a new id / never one in use / one that fits for a long type, empty or repeated names. Existing tests changed fromnametoid.uv run pytestpasses (1323 on the Pi, 4 cores)uv run ruff check .passesReview
Only txoof approves and merges this PR.
🤖 Generated with Claude Code