
Chai 2.0 — Emacs reading workflow, stripped down to what actually matters
I shared Chai (拆) v1 here late months ago. Since then I've been rethinking a basic question: what should a reading annotation tool actually do?
The old approach: v1 forked content into a separate "Refinery" workbench, annotated there, then saved back as notes. Too many hops — you're reading in Org files, why take a detour?
The 2.0 rewrite: No more Refinery. You read directly in plain Org files. Highlights are standard Org links ([[chai:idea][text]]). Notes are standard Org blocks (#+BEGIN_CHAI_COMMENT). Export only when you need it. Without Chai loaded, the files are just normal Org — your marks never go stale.
Chai now does three things:
- Library — Manage reading materials. Import PDF/EPUB/HTML/Markdown into Org. Set status (unread/reading/done/archived), rating (0–5 stars), keywords — all encoded in the filename. Full-frame table view with filtering, sorting, and a transient quick-command menu (
?). - Highlight & Comment — 12 semantic highlight types (important/idea/question/critical/key/core/detail/example/hard/block/view/outdated), each with its own face. Right-click on a highlighted link to change type, add a note, or remove it. Right-click on a selected region to highlight directly. Free-standing comments via
#+BEGIN_CHAI_COMMENT. - Export & Preview — Source-ordered Org headlines with
:PROPERTIES:drawers pointing back to original line numbers.M-x chai-export-previewopens an editable preview buffer you can save directly.M-x chai-export-highlights-copy-orgcopies to kill ring for pasting into Org-roam/Denote.
What changed in 2.0:
- Refinery workbench removed — the intermediate editing step is gone
- tp.el dependency removed — library table uses standard
tabulated-list-mode - Export rewritten — headlines with dynamic
#+SEQ_TODO, annotations in#+BEGIN_CHAI_ANNOTATIONblocks, source title preferred over filename - Library added a transient quick-command menu (
?) - Recommends Copy as Org Mode Chrome extension — paste web articles with title/author metadata intact, no manual editing
- Batch rename consolidated into one core function for both interactive and terminal use
Honestly this release is more about what I removed than what I added. If you tried Chai v1 and found it too heavy, give 2.0 a shot.
Quick start:
(add-to-list 'load-path "~/path/to/chai/")
(require 'chai)
(require 'chai-library)
(global-set-key (kbd "C-c l") #'chai-library-open)
Docs, screenshots, and code: GitHub