Repository navigation
API Versions
github-actions[bot] edited this page Sep 29, 2026
·
1 revision
The extension API is versioned separately from the app
(EXTENSION_API_VERSION in packages/core/src/extensions.ts, API_VERSION
in @devlog/extension-api). Every change so far has been additive: there
has been no 2.0, and an extension built for 1.0 still loads in an app that
provides 1.7.
- Declare the lowest version you need in the manifest:
"api": "^1.6.0". -
ctx.apiVersiontells you what the running app provides, for optional features.
| API | Devlog | Headline |
|---|---|---|
| 1.7 | 0.18 | Activity and ranges, managed canvases, sending through destinations, openPage, non-inherited fields |
| 1.6 | 0.17 | Node types, canvas writes, command context/keys/menus/post, events, pick/open/highlight, tray, time providers, canvas-header views |
| 1.5 | 0.16 | Views and @devlog/ui
|
| 1.4 | — | Todos; blocks inside blocks |
| 1.3 | — | Timesheet destinations |
| 1.2 | — | Unrestricted (trusted) extensions, packageDir
|
| 1.1 | — |
machine, focus providers |
| 1.0 | — | The base API |
-
devlog.activity(from, to): what the app recorded, merged with providers. -
devlog.range(from, to): day files with blocks written in a range. -
devlog.managedCanvas(key, { title }): a canvas the extension keeps;addBlockgainskindand freedatethere, andeditBlockworks on any block there. -
ui.openPage(viewId). -
permissions.send;destinations.list(),preview(to, sheet),send(to, sheet); typesDestinationInfo,SheetToSend. - Canvas fields may say
"inherited": false. - Views send
keymessages for shortcuts they did not use. - Types:
ActivityRecord,ExtensionDayBlocks.
-
Node types:
contributes.nodeTypes;ExtensionCanvas.type. -
devlog.createCanvas,updateCanvas,editBlock,promote. -
devlog.onBlockAdded(cb). - Commands: a
CommandContextargument (source,canvasId,date,blockId); manifestkeybinding,menus(canvas,block,tray),nodeType,post,tag. -
ui.pick,ui.open,ui.highlight. -
app.setTrayLabel,app.keepRunning. -
activity.idleAfter(minutes). -
provide.activity(fn)andTimeEvent. - Views:
canvasHeaderplacement,nodeTypeon views, thecontextmessage andViewContext.
-
contributes.viewswith placementspage,statusbar,popover. -
views.handle,views.post. - The view message protocol (
@devlog/extension-api/view) and@devlog/ui.
-
devlog.todos({ doneSince })andExtensionTodo. -
addBlockoptionsparentId+date(inside a block) andtodo.
-
contributes.destinations,destinations.register(id, { preview, send }). - Types
DestinationSheet,DestinationEntry,DestinationLine,SendResult,Destination.
-
permissions.unrestrictedandctx.packageDir.
-
ctx.machine. -
provide.focus(fn)andFocusEvent.
-
ctx.id,ctx.apiVersion. -
devlog.canvases,field,days,blocks,search,addBlock. -
settings.get/onChange;secrets.get/set/delete. -
files.repo/files.local. -
activity.on. -
ui.notify,ui.confirm. -
commands.register. - Manifest:
canvasFields,settings,secrets,commands,check,permissions.read/write/network,appendOnly.
- Add the member to
packages/extension-api/src/index.tswith a comment naming the new version, and toAPP_METHODSinprotocol.tsif the extension calls the app. - Implement it in the host process (
src/main/extensions/hostProcess.ts) and the manager (src/main/extensions/manager.ts), filtered by the grant. - Mirror it in the test harness (
packages/extension-api/src/testing.ts). - Bump
API_VERSIONandEXTENSION_API_VERSIONtogether, and the version indocs/EXTENSIONS.mdandpackages/extension-api/README.md. - Cover it in
tests/extensions.test.tsthrough the real host (theprobeorshaperfixture). - Update this wiki: the API reference, the types and this page.
Devlog 0.18.0 · extension API 1.7.0 · storage format 4 · Repository · Design notes
Using Devlog
Writing extensions
- Overview
- Quickstart
- Manifest
- API Reference
- Types
- Views and UI
- UI Kit Reference
- Timesheet Destinations
- Activity and Time Data
- Sandbox and Permissions
- Testing
- Built-in Extensions
- API Versions
- Troubleshooting
Devlog internals