Development milestones for Quillon.
Core Document Model
Milestone: Basic document representation with blocks and inline content.
- [x] AST structure
{:type, attrs, children}with maps for attrs - [x] Document root node
- [x] Paragraph block
- [x] Heading block (levels 1-6)
- [x] Divider block
- [x] Text node with marks list
- [x] Simple marks: bold, italic, underline, strike, code
- [x] Marks with attrs: link (href, title, target)
- [x] JSON serialization (to_json/from_json)
- [x] Basic factory functions (new/2, new/3)
Text Transforms
Milestone: Operations for manipulating rich text content.
- [x] Text splitting at offset boundaries
- [x] Split at END first, then START (preserve positions)
- [x] Normalization (merge adjacent text with identical marks)
- [x] Remove empty text nodes
- [x] Mark ordering for reliable comparison
- [x] apply_mark/4 (paragraph, start, end, mark)
- [x] remove_mark/4
- [x] toggle_mark/4
- [x] Position mapping (offset ↔ node path)
Commands Layer
Milestone: High-level API for common operations.
- [x] toggle_bold/3
- [x] toggle_italic/3
- [x] toggle_underline/3
- [x] toggle_strike/3
- [x] toggle_code/3
- [x] set_link/4
- [x] unset_link/3
- [x] clear_formatting/3
- [x] selection_has_mark?/4
Schema Validation
Milestone: Enforce valid document structures.
- [x] Node schema definition
- [x] Content expressions ("block+", "inline*", etc.)
- [x] Groups (block, inline, list_content)
- [x] Mark schema (inclusive, keep_on_split, excludes)
- [x] Mark allowance per node type
- [x] Mark conflict detection
- [x] Required attrs validation
[x] validate/1 returning {:ok, doc} | {:error, errors}
- [x] validate!/1 raising on error
Additional Blocks
Milestone: Rich content block types.
- [x] Blockquote (citation attr, contains paragraphs)
- [x] Callout (type: info/warning/success/error, title)
- [x] Code block (code, language attrs)
- [x] Image (src, alt, caption, width)
- [x] Video (src, poster)
Lists
Milestone: Ordered and unordered lists with nesting.
- [x] Bullet list
- [x] Ordered list (start attr)
- [x] List item (contains paragraph + optional nested list)
- [x] List operations (indent, outdent, toggle type)
Tables
Milestone: Table support with cell spans.
- [x] Table container
- [x] Table row (header attr)
- [x] Table cell (colspan, rowspan)
- [x] Cell content (paragraphs)
- [x] Table operations (add/remove row/column)
Additional Marks
Milestone: Extended formatting options.
- [x] Subscript
- [x] Superscript
- [x] Highlight (color attr)
- [x] Font color (color attr)
- [x] Mention (id, type, label attrs)
Path Operations
Milestone: Tree traversal and manipulation.
- [x] get/2 (doc, path)
- [x] update/3 (doc, path, fun)
- [x] insert/3 (doc, path, node)
- [x] delete/2 (doc, path)
- [x] move/3 (doc, from_path, to_path)
- [x] reorder/3 (doc, path, id_list)
- [x] find_path/2 (doc, id)
- [x] get_by_id/2
- [x] update_by_id/3
Documentation
Milestone: User-facing documentation and guides.
- [x] Getting Started guide (tutorial for new users)
- [x] Cheatsheet (quick reference for nodes, marks, functions)
- [x] ExDoc module grouping
- [x] Conceptual guide: Marks system
- [x] Cookbook/recipes (common patterns)
- [x] Conceptual guide: Schema & validation
Future Packages
quillon/ # Core - pure Elixir (this library)
quillon_live/ # LiveView components/hooks
quillon_grove/ # Grove CRDT integrationquillon_live
- [ ] Editor LiveComponent
- [ ] Toolbar component
- [ ] Selection tracking hook
- [ ] Keyboard shortcuts
- [ ] Copy/paste handling
quillon_grove
- [ ] Grove adapter (AST ↔ Grove tree)
- [ ] Operation generation
- [ ] Conflict resolution
- [ ] Presence integration
- [ ] Undo/redo support
Future Considerations
- Comments/annotations on selections
- Track changes (revision history)
- Templates (reusable blocks)
- Extensions (custom node types)
- Export formats (HTML, Markdown, PDF)
- Import from HTML/Markdown
Progress
| Milestone | Status |
|---|---|
| Core Document Model | ✅ Complete |
| Text Transforms | ✅ Complete |
| Commands Layer | ✅ Complete |
| Schema Validation | ✅ Complete |
| Additional Blocks | ✅ Complete |
| Lists | ✅ Complete |
| Tables | ✅ Complete |
| Additional Marks | ✅ Complete |
| Path Operations | ✅ Complete |
| Documentation | ✅ Complete |