Skip to content

Development: Create infrastructure for client plugins - #20

Closed
Anatoly03 wants to merge 7 commits into
masterfrom
dev/client-refactor
Closed

Anatoly03 wants to merge 7 commits into
masterfrom
dev/client-refactor

Conversation

@Anatoly03

@Anatoly03 Anatoly03 commented Aug 11, 2026 •

Copy link
Copy Markdown
Owner

This Pull Request will evolve the first building blocks of client plugins infrastructure. The following ideas will be implemented.

  • General Plugin API. A Torii-native system for loading, dispatching, running and offloading extensions. Plugins should have access to the following underlying infrastructure.
    • TipTap.
    • ProseMirror.
    • Settings.
    • Localisation Extensions.
    • Themes & CSS.
  • View Anchors. An idea where the main application has several "anchor views", all with a unique ID, and the plugins can append elements that the anchor views will render. Sidebar buttons, footers, main views are all anchor points.

This Pull Request has a huge scope, so the overall ADHD-friendly approach will be to divide the Pull Request into smaller scopes, overall consisting of the following phases.

Phase 1: Plugin API Core

  • ToriiPlugin: A separate library module defining plugin.
  • Define plugin lifecycle hooks (onInit, onRecordOpen, onComponentUpdate, etc.)
  • Define anchor point constants. Anchor points are views which can be extended by plugins.
  • PluginManager with register new plugins and getAnchorView() to render an anchor

Phase 2: Call Plugin API

  • Define a Vue anchor component (renderer) and place some in the app.
  • Pass workspace context to plugins.

Phase 3: Plugin Extraction

  • word-count
  • recent-projects

@Anatoly03 Anatoly03 closed this Aug 31, 2026
@Anatoly03
Anatoly03 deleted the dev/client-refactor branch August 31, 2026 09:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant