You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 19fb672
Browse filesBrowse the repository at this point in the historyBrowse files
-**Version Gating** - Enforce `api_version` and `min_app_version` with configurable severity
103
103
-**Application Identity Gating** - Declare `target_application` on plugins and `app_id` on the host; mismatched plugins refuse to activate. Permissive: enforcement only fires when the host has declared `app_id`
104
104
-**FastAPI Integration** - Mount plugin routes with configurable prefix
105
+
-**Idempotent Route Mounting (v0.8.0)** - `mount_routes` is safe to re-call; no route-table accumulation across `TestClient` lifespans (closes the v0.7.0 recursion-cascade reported by downstream consumers)
106
+
-**Test Helpers (v0.8.0)** - `pluginforge.testing.IsolatedPluginManager` and `MockPlugin` for consumer-app test wiring
107
+
-**Single-Router Convention (v0.8.0)** - one router per `get_routes()` is recommended; multi-router plugins emit a `DeprecationWarning`
108
+
-**Type Annotations (PEP 561)** - `py.typed` marker shipped; `mypy` / `pyright` consume PluginForge's full type information
105
109
-**Alembic Support** - Collect migration directories from plugins
106
110
-**i18n** - Multi-language strings from YAML with fallback
107
111
-**Security** - Plugin name validation and path traversal prevention
The full documentation is available in the [Wiki](https://github.com/astrapi69/pluginforge/wiki):
152
+
The full documentation is available in the [Wiki](https://github.com/astrapi69/pluginforge/wiki) and the in-repo guides:
149
153
154
+
-[Consumer Integration Guide](docs/guides/consumer-integration.md) - wire PluginForge into your FastAPI app from scratch (covers lifespan, mounting, hot reload, testing)
> **Post-release note (2026-05-20):** The "v0.8.0 enforcement" behavior
10
+
> described below as future-tense (Decision 4 Migration, the Behavior
11
+
> Matrix v0.8.0 column, Q2/Q4 resolutions, etc.) did NOT ship in v0.8.0.
12
+
> v0.8.0 shipped with the v0.7.0 warning behavior preserved; the
13
+
> hard-filter transition is deferred to v0.9.0. See the Roadmap and
14
+
> CHANGELOG for the actual v0.8.0 contents. This document is left
15
+
> unrevised as a record of what was planned at the time the v0.7.0
16
+
> implementation shipped.
17
+
9
18
## Context
10
19
11
20
PluginForge today has no concept of which application a plugin targets. The de facto isolation mechanism (entry-point group separation via `plugins.entry_point_group` in `app.yaml`) is a publishing convention, not an enforced invariant. A plugin can register under multiple groups, a plugin's own code cannot assert which application it targets, and a user pip-installing a plugin from a wrong source has no protection.
0 commit comments