Overview Version History Q & A Rating & Review
Dossier
A Notion-like block editor inside VS Code. Create rich pages with structured blocks, link them in a nested hierarchy, and export to markdown — all without leaving your IDE.
Features
Block Editor
15 block types — paragraph, headings (H1-H3), bullet list, numbered list, to-do, code (syntax highlighted), callout, toggle, table, divider, image, page link, mermaid diagram
Slash commands — type / to insert any block type with filtering
Inline formatting — bold, italic, code, strikethrough, links
Markdown paste — paste markdown text and it auto-converts to proper blocks
Copy as markdown — copied blocks produce clean markdown in external apps
Pages & Navigation
Page hierarchy — nest pages as children, navigate via sidebar tree or breadcrumbs
Page linking — @ or [[ triggers insert inline link chips or full-width cards
Drag-and-drop — rearrange pages in the sidebar (with circular reference prevention)
Back/forward — Alt+Left / Alt+Right navigation history
Search — full-text search across all pages with highlighted results
Data Management
Version history — automatic snapshots with restore via QuickPick
Trash — soft delete with 30-day retention, restore or permanent delete
Image handling — paste or drop images, drag-to-resize
Templates — save pages as templates, create new pages from them
Markdown export — single page or bulk export preserving directory hierarchy
Auto markdown sync — optionally mirror pages as .md files on every save
Atomic writes — crash-safe saves via tmp+rename
Read-only protection — .dossier files are marked read-only at the OS level to prevent manual edits
Developer Experience
Theme-aware — adapts to VS Code light, dark, and high-contrast themes
Workspace or global storage — store pages per-project (.dossier/) or globally
Git-friendly — each page is a separate JSON file; .gitignore suggestions included
Getting Started
Prerequisites
Install & Run
git clone https://github.com/karan62kj/dossier.git
cd dossier
npm install
Press F5 in VS Code to launch the Extension Development Host.
Commands
Command
Description
Dossier: Init Workspace
Set up .dossier/ folder
Dossier: Create Page
Create a new page
Dossier: Create Child Page
Nest a page under another
Dossier: Rename Page
Rename an existing page
Dossier: Delete Page
Soft-delete a page
Dossier: Search Pages
Full-text search across pages
Dossier: Export Page as Markdown
Export single page to .md
Dossier: Export All Pages as Markdown
Bulk export preserving hierarchy
Dossier: Restore from History
Restore a previous version
Dossier: Save as Template
Save page as reusable template
Dossier: New Page from Template
Create page from a template
Dossier: Insert Link
Insert/edit a hyperlink
Keyboard Shortcuts
Shortcut
Action
Ctrl/Cmd+B
Bold
Ctrl/Cmd+I
Italic
Ctrl/Cmd+E
Inline code
Ctrl/Cmd+K
Insert link
Ctrl/Cmd+Shift+S
Strikethrough
Ctrl/Cmd+Shift+1-3
Heading 1-3
Ctrl/Cmd+Shift+4
Toggle to-do
Ctrl/Cmd+Shift+5
Toggle bullet list
Ctrl/Cmd+Shift+6
Toggle numbered list
Ctrl/Cmd+Shift+7
Toggle code block
Ctrl/Cmd+D
Duplicate block
Ctrl/Cmd+Shift+Delete
Delete block
Alt+Left/Right
Back/forward navigation
/
Open slash command menu
@ or [[
Open page link picker
Settings
Setting
Default
Description
dossierEditor.storageMode
workspace
workspace stores in .dossier/ inside the workspace; global uses VS Code's global storage
dossierEditor.autoExportMarkdown
false
Auto-export pages to .dossier/md/ as markdown on every save
Architecture
Two isolated runtimes communicating via postMessage:
Host (Node.js) Webview (Browser)
├── extension.ts ├── main.tsx
├── providers/ ├── App.tsx
│ ├── DossierEditorProvider.ts ├── Editor.tsx
│ ├── PageTreeProvider.ts ├── components/
│ ├── TrashTreeProvider.ts ├── extensions/
│ └── SearchViewProvider.ts ├── utils/
├── services/ │ ├── serialization.ts
│ ├── StorageService.ts │ ├── markdownParser.ts
│ ├── SearchService.ts │ └── markdownSerializer.ts
│ ├── HistoryService.ts └── styles/
│ ├── TemplateService.ts
│ ├── MarkdownExporter.ts
│ └── NavigationService.ts
└── models/ (shared types)
├── types.ts
└── messages.ts
Storage Layout
.dossier/
├── index.json # Page manifest
├── pages/ # One JSON file per page
├── assets/ # Pasted/dropped images
├── history/ # Version snapshots
├── trash/ # Soft-deleted pages
├── templates/ # Saved page templates
└── md/ # Auto-exported markdown (if enabled)
Build Scripts
npm run build # Production build (host + webview)
npm run watch # Dev mode — watches both pipelines
npm run build:host # esbuild → dist/extension.js
npm run build:webview # Vite → dist/webview/
License
MIT