Skip to main content

lumide_api 1.13.0 copy "lumide_api: ^1.13.0" to clipboard
lumide_api: ^1.13.0 copied to clipboard

Host API for Lumide IDE plugins. Provides abstractions for plugin development.

1.13.0 #

New features #

  • Inline completions — InlineCompletionRequest.instructions carries a system message for chat models, such as the commit message style to follow when the request is for a commit message. Null for source files.
  • Tests API — Add output, runCommand, debugCommand, and stopCommand to tests.createRun so users can view output, rerun or debug tests, and stop runs from the Tests pane. Pass the requestId argument of the command Lumide ran to createRun, so the run takes the place it was asked for.
  • Coverage — Add LumideTestRun.setCoverage to shade covered and uncovered lines in the editor.
  • Workspace folders — Add workspace.getWorkspaceFolders and onDidChangeWorkspaceFolders for workspaces of several folders. A folder has a name (its basename) and the label Lumide shows; label changes arrive in changed, and every folder in its new order in folders, with reordered set when folders only moved. getRootUri stays the first folder; findFiles searches every folder. Both methods have default implementations, and getWorkspaceFolders falls back to the root on older Lumide versions.
  • Folder scope — Add workspace.getWorkspaceFolder(uri) for the folder holding a file, a folder argument to findFiles, and a scope argument to getConfiguration: settings that can differ between folders resolve from the settings of the folder holding the scope. getWorkspaceFolder has a default implementation and falls back to the folder list on older Lumide versions; findFiles keeps only the folder's files there.
  • Launch per folder — LumideLaunchConfiguration, LumideLaunchSourceConfiguration and LumideLaunchEvent carry a workspaceFolder, and LumideLaunchResolveRequest.workspaceFolder names the folder Lumide asks about: it asks once per folder. LumideLaunchConfiguration.withWorkspaceFolder copies a configuration into another folder.
  • Language servers per folder — languages.registerLanguageServer takes an optional runsPerFolder, to run one server per workspace folder, rooted there, even when the server handles workspace folders. Older Lumide versions ignore it.
  • SDK per folder — sdks.didChange takes an optional workspaceFolder. Resolve with workspacePath set to a folder for that folder's SDK.

Breaking changes #

  • Custom implementations — Custom LumideTests and LumideTestRun implementations (e.g. test fakes) must accept debugCommand and requestId and implement setCoverage. Custom LumideWorkspace, LumideSdks and LumideLanguages implementations must accept the new optional scope, folder, workspaceFolder and runsPerFolder arguments. Callers are unaffected.

Fixed #

  • Allow several language servers and inline completion providers with sign-in or status checks, and re-registering a provider, without crashing the plugin.

1.12.0 #

Note: This release requires Lumide version later than 0.22.0.

New features #

  • Formatting API — Add languages.registerFormattingProvider to format documents on Format Document and format-on-save, including unsaved changes.
  • Diagnostics API — Add languages.setDiagnostics and clearDiagnostics to show problems in the editor and Problems panel.
  • Progress API — Add window.createProgress and withProgress to show cancellable progress in the status bar.
  • Tests API — Add context.tests to report test runs to the Tests pane.
  • Workspace events — onDidChangeTextDocument now receives edits, and add onDidChangeFiles for file creates, changes, deletes, and renames.
  • Commands API — Add commands.executeCommand to run Lumide and plugin commands. Commands for onCommand: activation now show in the Command Palette before the plugin starts.
  • Process API — Add environment and stdin to shell commands, signals to shell.kill, and sdks.spawn for long-running SDK processes.
  • Keybindings — Support mod (Cmd on macOS, Ctrl elsewhere) and when clauses.
  • Debug API — Add logMessage to breakpoints. Users can edit breakpoint conditions and log messages.

Breaking changes #

  • Listeners — on* listener methods return a LumideDisposable instead of void. Call dispose() to stop listening.
  • Custom implementations — Custom LumideContext, LumideWorkspace, LumideCommands, LumideWindow, LumideLanguages, LumideShell, and LumideSdks implementations (e.g. test fakes) must implement the new methods.

1.11.0 #

New features #

  • Plugin process control — Add the executable manifest field to explicitly mark asset-only plugins as non-executable. When omitted, the SDK infers whether a plugin needs a process from its declared contributions.
  • Per-extension language IDs — Add the optional extensionLanguageMap parameter to languages.registerLanguageServer so a language server can receive the correct language ID for each file extension.

1.10.0 #

New features #

  • SDK providers — Plugins can contribute discoverable and installable SDK catalogs through contributes.sdkProviders and context.sdks.
  • Add workingDirectory param for shell spawn API.

1.9.0 #

New features #

  • Snippet contributions — Plugins can contribute TextMate-compatible JSON snippet files through contributes.snippets.

1.8.0 #

New features #

  • New Workspace API — Add getPluginStorageDir() method for plugins to get their own storage directory.
  • File nesting contributions — Plugins can declaratively contribute explorer file nesting patterns through contributes.fileNesting.

Fixed #

  • Prevent plugins to deactivate multiple times.

1.7.0 #

New features #

  • Launch configurations — Add persisted launch configurations with validation, JSON Schema forms, format-neutral imports, and target deduplication.

Breaking changes #

  • Workspace path — Rename workspaceUri to workspacePath in launch requests (uses native path instead of URI).
  • Launch API — Custom LumideLaunch implementations must implement onResolveConfiguration and onImportConfiguration.

1.6.0 #

Note: This release requires Lumide version later than 0.14.0.

New features #

  • New Menu API — Add new APIs for plugins to register custom actions in menu.
    • Add Pane menu.
    • File/Folder item's context menu.
    • Tab bar item's context menu.
    • Editor's context menu.
  • Add a method to File System API for plugins to create directory.

1.5.0 #

Note: This release requires Lumide version later than 0.12.0.

New features #

  • New Launch API — Add new APIs for plugins to register Run/Debug/Attach/Test launch configurations with dedicated UI supported on top bar.
  • Window API — Add window/showOpenDialog and window/showOpenFolderDialog for FilePicker UI.
  • Settings — Added folderPath configuration type for generated plugin settings that should pick directories instead of files.

1.3.0 #

✨ This release improves the stability of Lumide plugins by fixing memory leaks in webview panels and terminals, and ensures proper cleanup of resources.

New features #

  • Event Handling — Added webview/onDidDispose and terminal/onDidDispose RPC notifications to handle IDE host-initiated panel and terminal closures gracefully.

Fixes #

  • Memory — Fixed memory leaks in LumideWebviewPanel and LumideTerminal by properly disposing of them locally and cleaning them up in LumideContext.
  • Routing — Fixed an issue where creating multiple webview panels caused webview/onDidReceiveMessage handlers to overwrite each other.

1.2.0 #

✨ This release introduces the first public Debug API for Lumide plugins, including host-controlled sessions, breakpoints, stack inspection, variable loading, and exception pause mode support.

New features #

  • Debug API — Added context.debug for starting, updating, and ending debug sessions from plugins.
  • Session State — Added LumideDebugSession, LumideDebugSessionState, and LumideDebugCapabilities for describing debugger state and supported actions.
  • Breakpoint Sync — Added LumideDebugBreakpoint, updateBreakpoints, and onSetBreakpoints for bidirectional breakpoint synchronization.
  • Stack / Scope / Variable Inspection — Added LumideDebugStackFrame, LumideDebugScope, LumideDebugVariable, onGetStackFrames, onGetScopes, and onGetVariables.
  • Expression Evaluation — Added LumideDebugEvaluationResult and onEvaluate.
  • Exception Filters — Added LumideDebugExceptionPauseMode and onSetExceptionPauseMode.
  • Output Integration — LumideDebugSession.outputChannelId can now bind a debug session to an existing output channel, so plugins can reuse one log stream in both Output and Debug surfaces.
  • Expandable Variables — LumideDebugVariable.variablesReference and LumideDebugEvaluationResult.variablesReference now support lazy child-variable loading.

1.1.0 #

✨ This release introduces significant enhancements to the Languages API, including custom LSP requests and inline completion support, alongside new window and workspace capabilities.

New features #

  • Languages API — Support for registering inline completion providers via languages.registerInlineCompletionProvider.
  • Custom LSP Requests — Added languages.sendLspRequest to send non-standard JSON-RPC requests to active language servers.
  • Enhanced LSP Registration — languages.registerLanguageServer now supports optional icon, iconPath, and authentication callbacks (checkStatus, signIn, signOut).
  • Window API — Added window.showDeviceAuthDialog to streamline OAuth and device-based authentication flows for plugins.
  • Workspace Configuration — Support for programmatically updating workspace settings via workspace.updateConfiguration.

1.0.0 #

🦊 Initial stable release for lumide_api. The API is now mostly feature-complete for Language Server Protocol (LSP) integrations and core editor extensions.

New features #

  • Languages API — Added languages.registerLanguageServer to register custom Language Server Protocol (LSP) providers for specific file extensions.
  • FileSystem API — Added fs.downloadFile to download files natively from the IDE with built-in progress tracking and optional .tar.gz/.zip extraction.

0.9.0 #

New features #

  • Quick Pick Improvements — QuickPickItem now supports a tooltip field for rendering rich hover tooltips on individual options.

0.8.0 #

New features #

  • Workspace — getRootUri() to get the workspace root path, findFiles(glob) to search files by glob pattern.
  • FileSystem — isDirectory(path) to check if a path is a directory.
  • Editor — getDocumentText(uri) to read open document content, openDocument(uri) to open files, revealRange() to navigate to a specific location.
  • Window — showConfirmDialog(message) for OK/Cancel dialogs, title parameter on showMessage().
  • Shell — workingDirectory parameter on run() to execute commands in a specific directory.

0.7.1 #

Improvements #

  • Plugin lifecycle — LumidePlugin.run() now guarantees onDeactivate() is called even when the host IDE crashes or the stdio pipe breaks unexpectedly. This prevents orphaned child processes from plugins that spawn external processes.

0.7.0 #

New features #

  • Theming system — Support contributing color themes and icon themes via contributes.themes and contributes.iconThemes in plugin.yaml.
  • Manifest improvements — Added copyWith to LumideManifest for easier state modification.

0.6.0 #

New features #

  • WebViews — Create and manage custom UI panels via window.createWebviewPanel.
  • URL Opening — Open external URLs via window.openUrl.
  • Output Control — Added LumideOutputChannel.clear() to clear logs programmatically.

0.5.0 #

New features #

  • Activation Events — LumideManifest now supports activation_events to control plugin loading (e.g., onCommand, workspaceContains).
  • Quick Pick Icons — QuickPickItem now supports iconPath (SVG/Image), enabled state, and isSeparator.
  • Status Bar Icons — LumideStatusBar items now support iconPath for rendering SVGs.
  • Toolbar Icons — LumideToolbar items now support iconPath for rendering SVGs.

0.4.0 #

New features #

  • Structured Logging — LumideOutputChannel.appendLog allows appending structured log records (LumideLogRecord) with levels, error details, and stack traces.

0.3.0 #

New features #

  • Toolbar API — Register items in the top toolbar via LumideToolbar. Supports icons, tooltips, alignment, and priority.
  • Terminal API — Create, control, and interact with integrated terminals via LumideTerminal.
  • Output API — Create and write to output channels via LumideOutputChannel.
  • Editor Selection API — getSelectedText and replaceSelection for easier text manipulation.
  • Quick Pick Improvements — showQuickPick now supports rich QuickPickItem objects with descriptions, details, and icons.
  • Window Positioning — showQuickPick accepts an optional anchor position.

Breaking changes #

  • Commands API — LumideCommands.registerCommand callback now accepts an optional Map<String, dynamic>? args parameter. Existing callbacks must be updated.

0.2.0+1 #

New features #

  • Commands API — Register commands for the Command Palette via LumideCommands.registerCommand().
  • Keybindings — Declare keybindings in plugin.yaml under contributes.keybindings.
  • Status Bar API — Create, update, show/hide, and dispose status bar items via LumideStatusBar.
  • Editor events — editor.onDidChangeSelections and editor.onDidChangeActiveDocument push selection and focus changes to plugins.
  • Workspace events — workspace.onDidSaveTextDocument notifies when a document is saved.

Breaking changes #

  • workspace/onDidChangeConfiguration is now a host-to-plugin method (was previously plugin-to-IDE). Plugins receive configuration updates passively instead of polling.

0.1.0 #

  • Initial public release of the Lumide Plugin SDK.
  • Support for core plugin lifecycle management (onActivate, onDeactivate).
  • FileSystem API: Generic file/directory operations (read, write, list, exists).
  • Editor API: Active document tracking, text insertion, selection management, and range replacement.
  • Workspace API: Configuration management and document event listeners (open, close, change).
  • Window API: UI interaction methods (showMessage, showQuickPick, showInputBox).
  • Shell API: Controlled execution of host shell commands.
  • HTTP API: Standardized network requests (GET, POST).
  • Comprehensive JSON-RPC 2.0 based communication layer.
3
likes
160
points
547
downloads

Documentation

API reference

Publisher

verified publishersofluffy.io

Weekly Downloads

Host API for Lumide IDE plugins. Provides abstractions for plugin development.

Homepage
Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

json_rpc_2, stream_channel, yaml

More

Packages that depend on lumide_api