xref: /plugin/annotations/README.md (revision 8d8701f5afabecdb73a7226eaf85b736f630ddd2)
143d2073cStracker-user# Annotations Plugin for DokuWiki
243d2073cStracker-user
3*8d8701f5Stracker-userWord- and sentence-level annotations on wiki pages, stored separately from the page text with threaded replies. Inspired by [Hypothes.is](https://hypothes.is/) and [ep_comments_page](https://github.com/ether/ep_comments_page).
443d2073cStracker-user
543d2073cStracker-user## Features
643d2073cStracker-user
7*8d8701f5Stracker-user- **Text-quote anchoring** — select any word or sentence; the annotation is tied to the quoted text plus its surrounding context, so it survives minor edits to the page.
8*8d8701f5Stracker-user- **Threaded replies** — any logged-in reader can reply to an existing annotation.
9*8d8701f5Stracker-user- **Open / Resolved status** — mark a discussion closed; resolved annotations turn green.
1043d2073cStracker-user- **Gutter markers** — small icons in the left margin show at a glance where annotations live.
11*8d8701f5Stracker-user- **Orphan detection** — when the annotated text is removed from the page, the annotation is flagged as orphaned and stays reachable via the counter. Admins can bulk-delete orphans.
12*8d8701f5Stracker-user- **Per-user toggle** — turn the annotation overlay on or off from your user preferences.
13*8d8701f5Stracker-user- **No page revisions** — annotations live in a separate file per page; the wiki changelog is never touched.
1443d2073cStracker-user
1543d2073cStracker-user## Requirements
1643d2073cStracker-user
17*8d8701f5Stracker-user- DokuWiki Librarian 2025-05-14b (or a compatible release)
18*8d8701f5Stracker-user- PHP 8.0 or later with the `mbstring` extension
19*8d8701f5Stracker-user- [usersettings plugin](https://github.com/tracker-user/dokuwiki-usersettings) *(optional — adds the per-user on/off toggle)*
20*8d8701f5Stracker-user
21*8d8701f5Stracker-userWorks in current browsers and as far back as Firefox 78 ESR.
2243d2073cStracker-user
2343d2073cStracker-user## Installation
2443d2073cStracker-user
2543d2073cStracker-user1. Copy the `annotations/` directory into `{DokuWiki}/lib/plugins/`.
2643d2073cStracker-user2. If you want the per-user toggle, install the usersettings plugin too.
2743d2073cStracker-user3. No additional configuration is required.
2843d2073cStracker-user
2943d2073cStracker-user## Usage
3043d2073cStracker-user
3143d2073cStracker-user### Reading annotations
3243d2073cStracker-user
3343d2073cStracker-userAnnotated text is highlighted in **amber** (open) or **green** (resolved). Click any highlight to open the thread panel inline below that paragraph.
3443d2073cStracker-user
35*8d8701f5Stracker-userThe counter bar above the page content shows how many annotations the page has. If some are orphaned (their text was deleted), a clickable "N orphaned" link opens a drawer at the bottom of the page with those threads.
3643d2073cStracker-user
3743d2073cStracker-user### Creating an annotation
3843d2073cStracker-user
3943d2073cStracker-user1. Select any text on the page.
4043d2073cStracker-user2. Click the **Annotate** button that appears.
4143d2073cStracker-user3. Type your comment and click **Annotate** to save.
4243d2073cStracker-user
43*8d8701f5Stracker-user> You only need to be logged in and able to *read* the page — edit access is **not** required. If you can read a page, you can annotate it.
4443d2073cStracker-user
4543d2073cStracker-user### Replying
4643d2073cStracker-user
47*8d8701f5Stracker-userOpen the thread panel for any annotation and use the **Reply** field at the bottom. Any logged-in reader can reply.
4843d2073cStracker-user
49*8d8701f5Stracker-user### Resolving / reopening
5043d2073cStracker-user
51*8d8701f5Stracker-userClick **Resolve** on an annotation to mark its discussion closed, or **Reopen** to undo that. Any logged-in reader can resolve or reopen.
5243d2073cStracker-user
5343d2073cStracker-user### Editing and deleting
5443d2073cStracker-user
55*8d8701f5Stracker-user- You can edit or delete your own annotations and replies.
56*8d8701f5Stracker-user- Admins can edit or delete anyone's.
5743d2073cStracker-user
5843d2073cStracker-user### Admin: bulk operations
5943d2073cStracker-user
6043d2073cStracker-userAdmins see two extra buttons in the counter bar:
6143d2073cStracker-user
6243d2073cStracker-user| Button | Effect |
6343d2073cStracker-user|--------|--------|
6443d2073cStracker-user| **Clear resolved** | Permanently deletes all resolved annotations on the page |
65*8d8701f5Stracker-user| **Clear orphaned** | Re-checks the page, then permanently deletes the orphaned annotations |
6643d2073cStracker-user
67*8d8701f5Stracker-user### Turning the overlay off
6843d2073cStracker-user
69*8d8701f5Stracker-userIn **User Preferences** (provided by the usersettings plugin), uncheck **Enable annotations**. The overlay is then hidden for you; your annotations are still stored and remain visible to everyone else.
7043d2073cStracker-user
7143d2073cStracker-user## License
7243d2073cStracker-user
7343d2073cStracker-userGPL 2, matching DokuWiki.
74*8d8701f5Stracker-user
75*8d8701f5Stracker-user---
76*8d8701f5Stracker-user
77*8d8701f5Stracker-user**Developers & AI agents:** see **[DESIGN.md](DESIGN.md)** for the full technical reference — architecture, the text-quote anchoring algorithm, the JSON storage format, the JSINFO-injection mechanism, the permission model, the AJAX API, browser/PHP constraints, and known gaps.
78