lumide_api 1.13.0
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.instructionscarries 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, andstopCommandtotests.createRunso users can view output, rerun or debug tests, and stop runs from the Tests pane. Pass therequestIdargument of the command Lumide ran tocreateRun, so the run takes the place it was asked for. - Coverage — Add
LumideTestRun.setCoverageto shade covered and uncovered lines in the editor. - Workspace folders — Add
workspace.getWorkspaceFoldersandonDidChangeWorkspaceFoldersfor workspaces of several folders. A folder has aname(its basename) and thelabelLumide shows; label changes arrive inchanged, and every folder in its new order infolders, withreorderedset when folders only moved.getRootUristays the first folder;findFilessearches every folder. Both methods have default implementations, andgetWorkspaceFoldersfalls back to the root on older Lumide versions. - Folder scope — Add
workspace.getWorkspaceFolder(uri)for the folder holding a file, afolderargument tofindFiles, and ascopeargument togetConfiguration: settings that can differ between folders resolve from the settings of the folder holding the scope.getWorkspaceFolderhas a default implementation and falls back to the folder list on older Lumide versions;findFileskeeps only the folder's files there. - Launch per folder —
LumideLaunchConfiguration,LumideLaunchSourceConfigurationandLumideLaunchEventcarry aworkspaceFolder, andLumideLaunchResolveRequest.workspaceFoldernames the folder Lumide asks about: it asks once per folder.LumideLaunchConfiguration.withWorkspaceFoldercopies a configuration into another folder. - Language servers per folder —
languages.registerLanguageServertakes an optionalrunsPerFolder, 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.didChangetakes an optionalworkspaceFolder. Resolve withworkspacePathset to a folder for that folder's SDK.
Breaking changes #
- Custom implementations — Custom
LumideTestsandLumideTestRunimplementations (e.g. test fakes) must acceptdebugCommandandrequestIdand implementsetCoverage. CustomLumideWorkspace,LumideSdksandLumideLanguagesimplementations must accept the new optionalscope,folder,workspaceFolderandrunsPerFolderarguments. 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.registerFormattingProviderto format documents on Format Document and format-on-save, including unsaved changes. - Diagnostics API — Add
languages.setDiagnosticsandclearDiagnosticsto show problems in the editor and Problems panel. - Progress API — Add
window.createProgressandwithProgressto show cancellable progress in the status bar. - Tests API — Add
context.teststo report test runs to the Tests pane. - Workspace events —
onDidChangeTextDocumentnow receives edits, and addonDidChangeFilesfor file creates, changes, deletes, and renames. - Commands API — Add
commands.executeCommandto run Lumide and plugin commands. Commands foronCommand:activation now show in the Command Palette before the plugin starts. - Process API — Add
environmentandstdinto shell commands, signals toshell.kill, andsdks.spawnfor long-running SDK processes. - Keybindings — Support
mod(Cmd on macOS, Ctrl elsewhere) andwhenclauses. - Debug API — Add
logMessageto breakpoints. Users can edit breakpoint conditions and log messages.
Breaking changes #
- Listeners —
on*listener methods return aLumideDisposableinstead ofvoid. Calldispose()to stop listening. - Custom implementations — Custom
LumideContext,LumideWorkspace,LumideCommands,LumideWindow,LumideLanguages,LumideShell, andLumideSdksimplementations (e.g. test fakes) must implement the new methods.
1.11.0 #
New features #
- Plugin process control — Add the
executablemanifest 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
extensionLanguageMapparameter tolanguages.registerLanguageServerso 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.sdkProvidersandcontext.sdks. - Add
workingDirectoryparam 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 #
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
workspaceUritoworkspacePathin launch requests (uses native path instead of URI). - Launch API — Custom
LumideLaunchimplementations must implementonResolveConfigurationandonImportConfiguration.
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/showOpenDialogandwindow/showOpenFolderDialogfor FilePicker UI. - Settings — Added
folderPathconfiguration 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/onDidDisposeandterminal/onDidDisposeRPC notifications to handle IDE host-initiated panel and terminal closures gracefully.
Fixes #
- Memory — Fixed memory leaks in
LumideWebviewPanelandLumideTerminalby properly disposing of them locally and cleaning them up inLumideContext. - Routing — Fixed an issue where creating multiple webview panels caused
webview/onDidReceiveMessagehandlers 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.debugfor starting, updating, and ending debug sessions from plugins. - Session State — Added
LumideDebugSession,LumideDebugSessionState, andLumideDebugCapabilitiesfor describing debugger state and supported actions. - Breakpoint Sync — Added
LumideDebugBreakpoint,updateBreakpoints, andonSetBreakpointsfor bidirectional breakpoint synchronization. - Stack / Scope / Variable Inspection — Added
LumideDebugStackFrame,LumideDebugScope,LumideDebugVariable,onGetStackFrames,onGetScopes, andonGetVariables. - Expression Evaluation — Added
LumideDebugEvaluationResultandonEvaluate. - Exception Filters — Added
LumideDebugExceptionPauseModeandonSetExceptionPauseMode. - Output Integration —
LumideDebugSession.outputChannelIdcan 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.variablesReferenceandLumideDebugEvaluationResult.variablesReferencenow 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.sendLspRequestto send non-standard JSON-RPC requests to active language servers. - Enhanced LSP Registration —
languages.registerLanguageServernow supports optionalicon,iconPath, and authentication callbacks (checkStatus,signIn,signOut). - Window API — Added
window.showDeviceAuthDialogto 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.registerLanguageServerto register custom Language Server Protocol (LSP) providers for specific file extensions. - FileSystem API — Added
fs.downloadFileto download files natively from the IDE with built-in progress tracking and optional.tar.gz/.zipextraction.
0.9.0 #
New features #
- Quick Pick Improvements —
QuickPickItemnow supports atooltipfield 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,titleparameter onshowMessage(). - Shell —
workingDirectoryparameter onrun()to execute commands in a specific directory.
0.7.1 #
Improvements #
- Plugin lifecycle —
LumidePlugin.run()now guaranteesonDeactivate()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.themesandcontributes.iconThemesinplugin.yaml. - Manifest improvements — Added
copyWithtoLumideManifestfor 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 —
LumideManifestnow supportsactivation_eventsto control plugin loading (e.g.,onCommand,workspaceContains). - Quick Pick Icons —
QuickPickItemnow supportsiconPath(SVG/Image),enabledstate, andisSeparator. - Status Bar Icons —
LumideStatusBaritems now supporticonPathfor rendering SVGs. - Toolbar Icons —
LumideToolbaritems now supporticonPathfor rendering SVGs.
0.4.0 #
New features #
- Structured Logging —
LumideOutputChannel.appendLogallows 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 —
getSelectedTextandreplaceSelectionfor easier text manipulation. - Quick Pick Improvements —
showQuickPicknow supports richQuickPickItemobjects with descriptions, details, and icons. - Window Positioning —
showQuickPickaccepts an optional anchor position.
Breaking changes #
- Commands API —
LumideCommands.registerCommandcallback now accepts an optionalMap<String, dynamic>? argsparameter. 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.yamlundercontributes.keybindings. - Status Bar API — Create, update, show/hide, and dispose status bar items via
LumideStatusBar. - Editor events —
editor.onDidChangeSelectionsandeditor.onDidChangeActiveDocumentpush selection and focus changes to plugins. - Workspace events —
workspace.onDidSaveTextDocumentnotifies when a document is saved.
Breaking changes #
workspace/onDidChangeConfigurationis 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.