Omniscio documentation
Browse all documentation
  1. Getting Started13
  2. Sessions & Agents115
  3. Inbox & Notifications59
  4. Projects & Tasks95
  5. Automation & Scheduling75
  6. Knowledge & Memory26
  7. AI Features60
  8. Integrations100
  9. Plugins & Marketplace33
  10. Cloud & Teams56
  11. Settings & Customization58
  12. Account & Billing28
  13. Troubleshooting84
  14. CLI & API Reference22
  15. Legal & Policies4
  16. Uncategorised22

Writer Studio (standalone writing editor) (part 5)

Part 5 of the Writer Studio page: the complete writer IPC channel reference and the key-files table that maps each part of the feature to the source that implements it.

What it is

This is part 5 of the Writer Studio (standalone writing editor) page. It is the reference half of the feature: the complete list of writer IPC channels and the key-files table that maps each part of Writer Studio to the source that implements it.

Where to find it

Writer Studio opens from the Writer virtual project in the sidebar, and the parent page covers gating, surfaces and first-run setup. Nothing in this part has a UI of its own: the channels below are what the renderer, the plugin webview and the CLI routes all call, and the key-files table is there for reading the code.

How it behaves

IPC channels (writer:*)

Defined in src/shared/ipc-channels/writer.ts; handlers in src/main/ipc/writer-handlers.ts (all gated by isUnreleasedFeatureVisible('ai-writer', ...)); Zod schemas in src/shared/ipc-schemas.ts (the writer* entries).

Constant Channel string Purpose
WRITER_LIST writer:list list all non-deleted documents, ordered by updated_at DESC
WRITER_GET writer:get fetch one document by id
WRITER_CREATE writer:create create a new document; returns it
WRITER_SAVE_CONTENT writer:save-content patch a document's body content
WRITER_UPDATE_META writer:update-meta patch title / goal / audience / tone / creativity (metadata)
WRITER_DELETE writer:delete soft-delete a document
WRITER_RESTORE writer:restore undo a soft-delete
WRITER_SEARCH writer:search search documents by title and content
WRITER_FOLDER_LIST writer:folder-list list all folders
WRITER_FOLDER_CREATE writer:folder-create create a new folder
WRITER_FOLDER_RENAME writer:folder-rename rename a folder
WRITER_FOLDER_DELETE writer:folder-delete delete a folder (moves documents to Unfiled)
WRITER_DOC_MOVE writer:doc-move move a document into a folder (or back to Unfiled)
WRITER_DOC_SET_PINNED writer:doc-set-pinned pin or unpin a document within its folder
WRITER_VERSION_LIST writer:version-list list version snapshots for a document
WRITER_VERSION_GET writer:version-get fetch a single version snapshot
WRITER_VERSION_SNAPSHOT writer:version-snapshot create a manual version snapshot
WRITER_VERSION_RESTORE writer:version-restore restore a document to a previous version
WRITER_AI_EDIT writer:ai-edit AI-rewrite a selection; returns rewritten text
WRITER_AI_OPTIONS writer:ai-options generate N alternative versions of a selected segment
WRITER_AI_AUTOCOMPLETE writer:ai-autocomplete inline ghost-text continuation at end of paragraph (max 40 tokens)
WRITER_AI_CHAT writer:ai-chat chat-assistant turn: returns { conversation, edits } from the <conversation>/<suggested_edits> protocol; persists the turn (user + assistant) on success when a documentId is supplied
WRITER_CHAT_HISTORY_GET writer:chat-history-get load a document's persisted Assistant chat history (oldest-first) to rehydrate the panel on open
WRITER_CHAT_HISTORY_CLEAR writer:chat-history-clear clear a document's persisted chat history
WRITER_CREATE_FROM_SESSION writer:create-from-session create a Writer document from a Claude session's content
WRITER_IMPORT_FILE writer:import-file import a local file (DOCX, MD, TXT, RTF, ODT, EPUB) as markdown; returns { title, markdown }
WRITER_TEMPLATE_LIST writer:template-list list all non-deleted user templates, ordered by updated_at DESC
WRITER_TEMPLATE_GET writer:template-get fetch one user template by id
WRITER_TEMPLATE_CREATE writer:template-create create a user template from a document's content and guidance; returns it
WRITER_TEMPLATE_DELETE writer:template-delete soft-delete a user template
WRITER_PUBLISH writer:publish publish document to Shares; returns { url, token }
WRITER_UNPUBLISH writer:unpublish revoke the active share and clear share columns
WRITER_WINDOW_OPEN writer:window-open open the pop-out Writer window
WRITER_DOCUMENTS_CHANGED writer:documents-changed push notification when the document list changes
WRITER_ACTION_PRESET_LIST writer:action-preset-list list all non-deleted custom action presets, ordered by sort order
WRITER_ACTION_PRESET_CREATE writer:action-preset-create create a custom action preset ({ label, instruction })
WRITER_ACTION_PRESET_UPDATE writer:action-preset-update update a preset's label, instruction, or sort order
WRITER_ACTION_PRESET_DELETE writer:action-preset-delete soft-delete a custom action preset
WRITER_MC_LINK writer:mc-link link a document to a Mission Control item
WRITER_MC_UNLINK writer:mc-unlink unlink a document from a Mission Control item
WRITER_MC_CREATE_AND_LINK writer:mc-create-and-link create a Mission Control item and link the document
WRITER_MC_GET_LINK writer:mc-get-link get the Mission Control link for a document
WRITER_CLONE_DOCUMENT writer:clone-document duplicate a document (content + metadata + tags) with "Copy of" title prefix
WRITER_TAG_ADD writer:tag-add add a tag to a document (INSERT OR IGNORE)
WRITER_TAG_REMOVE writer:tag-remove remove a tag from a document
WRITER_TAG_LIST writer:tag-list list tags for a specific document
WRITER_TAG_LIST_ALL writer:tag-list-all list all distinct tags across all documents (sorted)
WRITER_EXPORT_FILE writer:export-file save a document to disk as Markdown (.md) or HTML (.html) via a system save dialog
WRITER_EXPORT_TO_VAULT writer:export-to-vault export a document to KMS vault
WRITER_IMPORT_FROM_VAULT writer:import-from-vault import a document from KMS vault
WRITER_PULL_FROM_VAULT writer:pull-from-vault pull latest vault note content into a linked Writer document (creates a pre-import version snapshot)
WRITER_KMS_SYNC_STATUS writer:kms-sync-status query sync status between a Writer document and its linked vault note (in-sync / writer-ahead / vault-ahead / conflict / unlinked)
WRITER_PM_STATUS writer:pm-status get PM integration status for a document
WRITER_SEND_TO_PM writer:send-to-pm send a document to the PM system

Every channel is registered in tests/integration/ipc-contract.test.ts.

For agents

Key files

What Where
Migration src/main/db/migrations/20260603162951-create-writer-documents-table.ts; chat history: …20260618150227-writer-chat-messages-table.ts; tags: …20260903023357-create-writer-document-tags-table.ts; templates: …20260903023722-create-writer-templates-table.ts
Query layer src/main/db/queries-writer.ts; chat history: src/main/db/queries-writer-chat.ts; templates: src/main/db/queries-writer-templates.ts
IPC handlers src/main/ipc/writer-handlers.ts
File import service src/main/services/writer/writer-file-import-service.ts
CLI routes src/main/services/cli/cli-server-writer-routes.ts
IPC channels src/shared/ipc-channels/writer.ts
Shared types src/shared/types/writer.ts
Gating registry src/shared/unreleased-features.ts (ai-writer)
Renderer (store + UI) src/renderer/src/features/writer/
Plugin port (webview) src/plugins/writer/ — writer-bridge.ts (backend glue), web/src/ (guest app source), ui/ (committed build output)

For the test-locked invariants and the safe-change checklist, see the contract: .claude/memory/contracts/writer-contract.md.

Related

The user-facing behaviour these channels implement is split across part 2 (editor, document list and data model), part 3 (the AI capabilities) and part 4 (sharing, exports and integrations); the Writer Studio (standalone writing editor) page is the parent.

Last verified 2026-09-27