Add initial plugin support to Tendril#555
Draft
zachwolfe wants to merge 150 commits into
Draft
Conversation
ITendrilPluginContext now extends IIvyPluginContext (renamed from IPluginContext). SlackPlugin.Configure takes IIvyPluginContext.
- Remove ConfigureServices from SlackPlugin (removed from IIvyPlugin interface) - Update PluginsSetupView to show Active, Unconfigured, and Unloaded sections - Use GetActivePluginIds/GetUnconfiguredPlugins/ReconfigurePlugin from new API
Stores plugin config in plugin-config.yaml under the plugins directory. Passes factory to UsePlugins to satisfy new required parameter.
Shows custom or schema-driven config forms for active and unconfigured plugins, wrapped in Cards for visual separation.
Requires a secret ApiKey field (lin_api_ prefix).
Introduce Ivy.Tendril.Plugin.Extended.Abstractions with ITendrilExtendedPluginContext and FooterMenuPosition enum. Plugins can now contribute settings menu items at predefined positions (Top, Bottom, ImportIssues) with stable ordering by tag.
Uses the new AddSettingsMenuItem API to insert at the ImportIssues position.
Plugins can now register dialogs via RegisterDialog() and receive an opener Action to use in OnSelect or anywhere else. A single PluginDialogHost view in the app shell renders the active dialog. Also replaces ISettingsMenuItemsProvider with ITendrilPluginContributions for the internal read-side interface. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
# Conflicts: # src/Ivy.Tendril/Apps/SettingsApp.cs # src/Ivy.Tendril/Ivy.Tendril.csproj # src/Ivy.Tendril/Ivy.Tendril.slnx
Plugins can now access the Tendril home directory without relying on environment variables directly. The property is populated from IConfigService.TendrilHome in the main Tendril context.
The UsePlugins signature now requires an IIvyPluginConfigFactory. Add a minimal YAML-based config factory and implement TendrilHome on the MessagingPluginContext.
Replace the Import of Ivy.ExternalWidget.targets (which requires Ivy-Framework on disk) with self-contained build targets so the plugin builds independently in any environment.
…shing Renumber SourceIdentifier migration to 017 to avoid conflict with upstream migrations 015/016. Add Linear plugin to the release workflow and add NuGet package metadata. Fix nullable type warnings in Linear UseQuery calls.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace all hardcoded tendril-api.ivy.app references with the configurable URL from TendrilArgs. Supports TENDRIL_API_SERVER env var for detached child inheritance.
Fetches approved plugins from Tendril Services API and shows them in the plugin config UI. Install downloads the .nupkg and extracts DLLs directly into the plugins directory.
# Conflicts: # src/Ivy.Tendril/AppShell/TendrilAppShell.cs # src/Ivy.Tendril/Apps/Drafts/Dialogs/CreatePlanDialog.cs # src/Ivy.Tendril/TendrilServer.cs
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…lugins from NuGet
…auto-prefixing and unload support
# Conflicts: # src/Ivy.Tendril/AppShell/TendrilAppShell.cs # src/Ivy.Tendril/Apps/Settings/SettingsApp.cs # src/Ivy.Tendril/Services/BugReportService.cs
This API was removed from the plugin interface in the Ivy-Framework plugin-system-fixes branch. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
# Conflicts: # src/Ivy.Tendril/Apps/Settings/SettingsApp.cs # src/Ivy.Tendril/Services/BugReportService.cs
Ship a .targets file in Ivy.Tendril.Plugin.Abstractions that auto-generates tendril.json at pack time from TendrilIconKind/TendrilIconValue csproj properties. The client now uses a single PluginIconHelper.ToWidget() path for all plugin icons, with FromApiResponse() to construct PluginIcon from the services API response.
Ensures the Tendril Services admin panel shows proper display names instead of raw PackageId values when plugins are registered from NuGet.
- Ivy: 1.3.9 → 1.3.10 - Ivy.Plugin.Abstractions: 1.3.9 → 1.3.10 - Ivy.Desktop: 1.3.8 → 1.3.10 - Ivy.Hooks.Pty: 1.3.8 → 1.3.10 - Ivy.Widgets.*: 1.3.8 → 1.3.10 - Ivy.Docs.Helpers: 1.3.8 → 1.3.10 - docs: update plugin-developer-guide versions to 1.1.12 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Allow users to uninstall plugins directly from the settings view with a confirmation dialog that explains what will happen based on plugin type (NuGet package deletion vs reference removal).
The MSBuild auto-generation approach didn't work for ProjectReference consumers. Manual JSON files are simpler, explicit, and work in all contexts including third-party repos. Also adds CopyLocalLockFileAssemblies to plugins that were missing it and documents the pattern in the developer guide.
Staging deploy failed
|
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.
Adds initial plugin support to Tendril, building on top of the plugin system in Ivy-Framework.