Skip to content

About

✏️ VSCode extension for NoteDeck (Misskey client)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

NoteDeck for VS Code

Develop extensions for NoteDeck (a Misskey client, "Misskey Pro") from VS Code. NoteDeck's plugins, widgets, column queries, skills and themes are plain files in its settings folder; this extension opens that folder, checks AiScript through the running NoteDeck, pushes your edits into it and runs its capabilities, all through NoteDeck's local HTTP API on 127.0.0.1:19820.

For AiScript syntax highlighting install the official AiScript extension (.vsix from its releases; it is not in the Marketplace yet). Its intellisense is built on an older AiScript than the one NoteDeck runs, so rely on NoteDeck's validator (below) for correctness. This extension only adds what is NoteDeck-specific and works alongside it.

Commands

Command What it does Needs
NoteDeck: Open settings folder Adds NoteDeck's settings folder to the workspace (or opens it in a new window). The folder is what File → Open settings folder opens in NoteDeck nothing
NoteDeck: Set API token Stores the token in VS Code's secret storage –
NoteDeck: Check connection Pings NoteDeck; the status bar item shows the result token
NoteDeck: Validate AiScript Sends the current .is file to NoteDeck's validator; problems appear in the Problems panel. Also runs on save (notedeck.validateOnSave) token (no permission)
NoteDeck: Push this file to NoteDeck For .is files under plugins/, widgets/ or queries/: replaces the source in the running NoteDeck through plugins.update / widgets.update / queries.update. Active plugins and widgets restart with the new source. NoteDeck asks for confirmation token + plugins.write / widgets.write / queries.write
NoteDeck: New plugin… / New widget… Creates it through NoteDeck (so the meta file is right), then opens the .is file token + plugins.write / widgets.write
NoteDeck: Run capability… Pick any capability, enter parameters as JSON, see the result in the NoteDeck output channel token + whatever the capability needs

Plus completions in .is files for Nd:*, event names inside Nd:on("…") and capability ids inside Nd:call("…") (fetched from the running NoteDeck), and snippets: ndplugin, ndwidget, ndquery, ndcommand, ndon, ndcall, and ndskill in Markdown.

Why push instead of just saving?

NoteDeck reads the files when it starts and when something is created or edited through its own UI or API. It does not watch the folder, so a file saved from VS Code is not picked up until the next restart. Push sends the file through the same API the in-app editor uses, which also records the edit in NoteDeck's history and restarts the plugin or widget if it is active.

Setup

  1. Issue a token in NoteDeck under Settings → Permissions → API tokens, name it vscode, and run NoteDeck: Set API token.
  2. External tools get a read-only permission set by default. In the same Permissions window, under the External principal, allow plugins.write / widgets.write / queries.write for pushing and creating.
  3. Run NoteDeck: Open settings folder. If NoteDeck has never been started on this machine the folder does not exist yet; start NoteDeck once, or set notedeck.settingsDir.

If you changed NoteDeck's HTTP API port, or run a development build (different port), set notedeck.apiUrl.

Install

Not in the Marketplace yet. Download the .vsix from a release (or build it, see below), then Extensions → … → Install from VSIX.

Development

npm install
npm run dev        # esbuild watch → dist/extension.js
npm run build
npm run lint       # biome
npm run typecheck  # tsc
npm test           # vitest (settings folder resolution, diagnostics mapping, completion context)
npm run package    # notedeck-vscode-<version>.vsix

Press F5 in VS Code to launch an Extension Development Host with this folder.

The extension only talks to NoteDeck's local endpoints: GET /api, GET /api/capabilities and POST /api/capabilities/{id}/execute. Nothing is sent anywhere else.

Relationship to NoteDeck's other integrations

The Raycast, Stream Deck, Obsidian and browser integrations are for using NoteDeck from other apps. This one is for the people who build things for NoteDeck. Same API, nothing added to NoteDeck itself.

License

MIT. NoteDeck itself is AGPL-3.0; this extension is a separate client of its public API.

About

✏️ VSCode extension for NoteDeck (Misskey client)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages