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 integration

quillon_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

MilestoneStatus
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