66 lines
2.3 KiB
Markdown
66 lines
2.3 KiB
Markdown
# Milestone 6c — Default Editor Plugin
|
|
|
|
## Goal
|
|
|
|
Create the official Default Editor Plugin as an openProvider for text, generic
|
|
markdown, and notes-context markdown files. Core desktop does not own or import
|
|
the editor component.
|
|
|
|
## What was built
|
|
|
|
### Plugin: `verstak.default-editor`
|
|
|
|
Location: `verstak-official-plugins/plugins/default-editor/`
|
|
|
|
**Manifest declares 3 openProviders:**
|
|
|
|
| Provider ID | Context | Extensions |
|
|
|-------------|---------|------------|
|
|
| `verstak.default-editor.text` | `generic-text` | `.txt`, `.log`, `.conf`, `.ini`, `.toml`, `.yaml`, `.yml`, `.json`, `.csv` |
|
|
| `verstak.default-editor.markdown` | `generic-markdown` | `.md`, `.markdown` |
|
|
| `verstak.default-editor.notes-markdown` | `notes-markdown` | `.md`, `.markdown` |
|
|
|
|
All providers use the same `DefaultEditor` component (unified, not 3 separate editors).
|
|
|
|
**Permissions:** `files.read`, `files.write`, `workbench.open`
|
|
|
|
**Capabilities required:** `verstak/core/files/v1`, `verstak/core/workbench/v1`
|
|
|
|
### Frontend component: `DefaultEditor`
|
|
|
|
- **Modes:** text (textarea), generic-markdown (editor + preview), notes-markdown (editor + preview + notes badge)
|
|
- **File loading:** `api.files.readText(path)` with loading/error states
|
|
- **Saving:** `api.files.writeText(path, content, { overwrite: true })` with dirty/saved/error states
|
|
- **Keyboard:** Ctrl+S / Cmd+S save, Tab indentation
|
|
- **Markdown preview:** Simple renderer (no raw HTML, no script injection)
|
|
- **Notes context:** Badge + info bar, no separate note entity, no `.verstak/notes`
|
|
|
|
## Verification
|
|
|
|
- `go test ./...` — PASS
|
|
- `go vet ./...` — PASS
|
|
- `npm run build` (frontend) — PASS
|
|
- `npm run test:e2e` — 28/28 PASS (20 existing + 8 new)
|
|
- `scripts/check.sh` (official-plugins) — PASS
|
|
- `scripts/build.sh` (official-plugins) — PASS
|
|
- SDK checks — PASS
|
|
|
|
## Manual testing
|
|
|
|
Until Files UI plugin exists, use platform-test diagnostics panel to manually
|
|
open files via workbench: click "Open Text Diagnostic", "Open Markdown Diagnostic",
|
|
or "Open Notes Diagnostic" buttons. These call `api.workbench.editResource` and
|
|
route through the default-editor provider.
|
|
|
|
## Deferred
|
|
|
|
- CodeMirror/Monaco editor
|
|
- Backlinks, internal link navigation
|
|
- Secret widgets
|
|
- Image asset pipeline
|
|
- Files UI plugin
|
|
- Notes UI plugin
|
|
- Watcher/sync
|
|
- External open
|
|
- Sidecar/security isolation
|