orkmode/VISION.md

131 lines
4.3 KiB
Markdown

# Orkmode Vision
## The Problem
Org-mode is exceptional for structured thinking, task management, and knowledge work. But it's trapped in Emacs.
Existing alternatives fall short:
- **Organice** (web): Clunky, slow, limited offline
- **Orgzly** (Android): Mobile-only, sync issues
- **VS Code extensions**: No proper AST, just syntax highlighting
- **Logseq/Obsidian**: Different formats, not org-mode
None of these integrate with the Linux desktop. None feel native.
## The Goal
A native KDE application for org-mode that:
- Parses org files correctly (tree-sitter AST, not regex)
- Renders beautifully (Qt/QML, not web views)
- Edits efficiently (keyboard-driven, Emacs-inspired bindings)
- Syncs reliably (file-based, works with Syncthing/git)
- Integrates with KDE (notifications, calendar, search)
## Non-Goals
- Replace Emacs for power users
- Support every org-mode feature on day one
- Build a "second brain" or "PKM" system
- Cloud/SaaS anything
## Design Principles
**1. Files are truth**
Org files on disk are the source of truth. No database. No proprietary format. Edit with Emacs, vim, or orkmode interchangeably.
**2. Parse properly**
Use tree-sitter for a real AST. No regex hacks. Handle malformed files gracefully with error recovery.
**3. Keyboard-first**
Every action reachable by keyboard. Mouse optional. Emacs-inspired bindings where sensible.
**4. Desktop-native**
Use Qt/QML. Respect system themes. Integrate with KDE services (KRunner, Akonadi calendar, notifications).
**5. CLI for automation**
The `ork` CLI enables scripting, agent integration, and headless workflows.
## Architecture
```
┌─────────────────────────────────────────────────┐
│ Qt/QML UI │
│ (document view, agenda, capture, search) │
├─────────────────────────────────────────────────┤
│ orkmode-core (Rust) │
│ (document ops, queries, mutations, sync) │
├─────────────────────────────────────────────────┤
│ org-parser (Rust) │
│ (tree-sitter AST, incremental parsing) │
├─────────────────────────────────────────────────┤
│ org-ast (Rust) │
│ (type definitions, spans, serialization) │
└─────────────────────────────────────────────────┘
↑ ↑
C FFI for Qt CLI (ork)
```
## Milestones
### v0.1 — Parser & CLI (current)
- [x] Tree-sitter parser integration
- [x] Core AST types
- [x] CLI for querying and basic mutations
- [x] JSON output for tooling
### v0.2 — Read-only UI
- [ ] Qt/QML document viewer
- [ ] Headline folding/cycling
- [ ] Syntax highlighting
- [ ] Basic navigation
### v0.3 — Editing
- [ ] Inline text editing
- [ ] TODO state cycling
- [ ] Tag editing
- [ ] Property editing
- [ ] Undo/redo
### v0.4 — Agenda
- [ ] Agenda view (day/week)
- [ ] TODO list view
- [ ] Tag/property filtering
- [ ] Scheduled/deadline display
### v0.5 — KDE Integration
- [ ] KRunner plugin (search headlines)
- [ ] System notifications for deadlines
- [ ] Akonadi calendar integration
- [ ] Global capture hotkey
### Future
- Code block execution
- Diagram rendering (mermaid, plantuml)
- Table formula evaluation
- Capture templates
- Clock/time tracking
- Mobile companion (Kirigami)
## Why Rust + Qt?
**Rust** for the parser/core:
- Memory safety without GC
- Excellent tree-sitter bindings
- Easy C FFI for Qt integration
- Fast incremental parsing
**Qt/QML** for the UI:
- Native KDE integration
- Powerful text rendering (QTextDocument)
- Declarative UI with QML
- Cross-platform if needed later
## Contributing
See AGENTS.md for AI-assisted development workflow.
The codebase is designed for agent collaboration:
- CLI with JSON output for programmatic access
- Clear module boundaries
- Comprehensive type definitions