Plugins: repin every official plugin to a core release, tag them, list them in the catalogue, and refresh postulo-mcp's API description #1090

Closed
opened 2026-10-30 21:25:08 +00:00 by tiagoagueda · 1 comment
Owner

Every official plugin is held to a core commit that main left behind weeks ago, and only two of them are tagged. A plugin cannot claim a Postulo it has never been tested against, and the catalogue can only offer what is tagged.

What exists today

  • Each Python plugin pins the core by commit in its pyproject.toml dev group. The pins are 77 to 353 commits behind main:
    • postulo-apprise 42be520
    • postulo-dav, postulo-imap, postulo-paperless 925e3e9
    • postulo-helloworld e014152
    • postulo-templates d28ef83
    • postulo-francetravail 8c3d035
  • The pin comments in postulo-dav, postulo-imap and postulo-paperless say they will move to @v0.3.0 "when the core cuts the tag". v0.3.0 and v0.4.0 both exist.
  • Only postulo-helloworld (v0.3.0, v0.3.1) and postulo-templates (v0.3.0) are tagged. apprise, dav, imap, paperless, mcp, chromium and firefox say 0.3.0 and have never been tagged.
  • catalogue/official/plugins.toml lists helloworld and templates only.
  • postulo-mcp tests against tests/openapi.json, a copy of the core's API description taken at a6363a397 on 2026-10-01.
  • postulo-firefox's source.json pins postulo-chromium one commit behind its head (1784db9, the security review fixes). postulo-thunderbird's shared.json pins chromium files at 7998de3, 28 commits old.

What would change

  1. Repin every plugin to v0.4.0, run its suite, fix what moved, and repin again to v0.5.0 when it is cut.
  2. Tag each plugin that passes, through its own release gate.
  3. List apprise, dav, imap and paperless in the official catalogue, signed as #729 set out; postulo-mcp once postulo-mcp#1 is decided.
  4. Refresh postulo-mcp's tests/openapi.json from the current core and fix the drift its tests then find (postulo-mcp#16 already names part of it).
  5. Move postulo-firefox and postulo-thunderbird to the current postulo-chromium.

Decisions

  • Pin by tag or by commit. Recommended: by tag from now on, so a plugin's pin names a release a person can install.
  • One issue per repository or this one. Recommended: this issue tracks the round; each repository gets a short issue that closes with its own commit.

Checked against main at daee30b15 (2026-10-30). From the status review and feature suggestions of 2026-10-30.

Every official plugin is held to a core commit that `main` left behind weeks ago, and only two of them are tagged. A plugin cannot claim a Postulo it has never been tested against, and the catalogue can only offer what is tagged. ## What exists today - Each Python plugin pins the core by commit in its `pyproject.toml` dev group. The pins are 77 to 353 commits behind `main`: - postulo-apprise `42be520` - postulo-dav, postulo-imap, postulo-paperless `925e3e9` - postulo-helloworld `e014152` - postulo-templates `d28ef83` - postulo-francetravail `8c3d035` - The pin comments in postulo-dav, postulo-imap and postulo-paperless say they will move to `@v0.3.0` "when the core cuts the tag". `v0.3.0` and `v0.4.0` both exist. - Only postulo-helloworld (`v0.3.0`, `v0.3.1`) and postulo-templates (`v0.3.0`) are tagged. apprise, dav, imap, paperless, mcp, chromium and firefox say 0.3.0 and have never been tagged. - `catalogue/official/plugins.toml` lists helloworld and templates only. - postulo-mcp tests against `tests/openapi.json`, a copy of the core's API description taken at `a6363a397` on 2026-10-01. - postulo-firefox's `source.json` pins postulo-chromium one commit behind its head (`1784db9`, the security review fixes). postulo-thunderbird's `shared.json` pins chromium files at `7998de3`, 28 commits old. ## What would change 1. Repin every plugin to `v0.4.0`, run its suite, fix what moved, and repin again to `v0.5.0` when it is cut. 2. Tag each plugin that passes, through its own release gate. 3. List apprise, dav, imap and paperless in the official catalogue, signed as #729 set out; postulo-mcp once postulo-mcp#1 is decided. 4. Refresh postulo-mcp's `tests/openapi.json` from the current core and fix the drift its tests then find (postulo-mcp#16 already names part of it). 5. Move postulo-firefox and postulo-thunderbird to the current postulo-chromium. ## Decisions - **Pin by tag or by commit.** Recommended: by tag from now on, so a plugin's pin names a release a person can install. - **One issue per repository or this one.** Recommended: this issue tracks the round; each repository gets a short issue that closes with its own commit. Checked against `main` at `daee30b15` (2026-10-30). From the status review and feature suggestions of 2026-10-30.
tiagoagueda added this to the 0.5.0 milestone 2026-10-30 21:25:09 +00:00
Author
Owner

From the efficiency and reliability audit of 2026-10-30: this issue's What exists today is out of date. The local plugin checkouts were weeks behind the server; on the server's main, all seven Python plugins pin core a8467ab21 (2026-10-23), uv is pinned with its sha256 everywhere, postulo-mcp runs in node:22-bookworm with --locked, and the plugins read messages_tool.selected() (#347). Refresh it before the round starts.

The audit also found that six plugin ci.yml files run on tags: ["v*"] beside release.yml, so a tag installs and tests everything twice; that is folded into the shared plugin CI issue (#1170).

From the efficiency and reliability audit of 2026-10-30: this issue's *What exists today* is out of date. The local plugin checkouts were weeks behind the server; on the server's `main`, all seven Python plugins pin core `a8467ab21` (2026-10-23), uv is pinned with its sha256 everywhere, postulo-mcp runs in `node:22-bookworm` with `--locked`, and the plugins read `messages_tool.selected()` (#347). Refresh it before the round starts. The audit also found that six plugin `ci.yml` files run on `tags: ["v*"]` beside `release.yml`, so a tag installs and tests everything twice; that is folded into the shared plugin CI issue (#1170).
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Postulo/postulo#1090
No description provided.