Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 18 additions & 3 deletions .cursor/rules/architecture.mdc
Original file line number Diff line number Diff line change
Expand Up @@ -271,9 +271,24 @@ class Foo @Inject constructor(private val plugins: ActivePluginPoint<MyPlugin>)

All flags default to `TRUE` so newly contributed plugins are on by default and can be killed remotely.

### Notable active plugin points in the browser
- `JsInjectorPlugin` — hooks into `onPageStarted` / `onPageFinished` on the browser WebView
- `ContentScopeJsMessageHandlersPlugin` — handles JS→native messages via content scope scripts
### Notable plugin points in the browser

Basic (`@ContributesPluginPoint`, consumed as `PluginPoint<T>`, no feature-flag gating):

| Plugin | Point declared by | Purpose |
|---|---|---|
| `JsInjectorPlugin` | `UnusedJsInjectorPluginPoint` (`:app`) | hooks into `onPageStarted` / `onPageFinished` on the browser WebView |
| `ContentScopeJsMessageHandlersPlugin` | `ContentScopeJsMessageHandlersPluginPoint` (`content-scope-scripts-impl`) | handles JS→native messages via content scope scripts |

Active (`@ContributesActivePluginPoint`, consumed as `ActivePluginPoint<T>`, flag-gated):

| Plugin | Plugin point `featureName` |
|---|---|
| `NewTabPagePlugin` | `pluginPointNewTabPagePlugin` |
| `NewTabPageSectionPlugin` | `pluginPointNewTabPageSectionPlugin` |
| `NewTabPageShortcutPlugin` | `pluginPointNewTabPageShortcutPlugin` |
| `NativeInputPlugin` | `pluginPointNativeInput` |
| `NativeInputChatTabItemPlugin` | `pluginPointNativeInputChatTabItemPlugin` |

---

Expand Down
Loading