<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in README.md</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2025</copyright>
    <generator>Java</generator><item>
        <title>86c3281af18ac3f82557b4466adb5aef413e1639 - Add screenshot and link in README</title>
        <link>http://127.0.0.1:8080/history/plugin/annotations/README.md#86c3281af18ac3f82557b4466adb5aef413e1639</link>
        <description>Add screenshot and link in READMECo-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;

            List of files:
            /plugin/annotations/README.md</description>
        <pubDate>Tue, 16 Jun 2026 20:22:49 +0000</pubDate>
        <dc:creator>tracker-user &lt;82045103+tracker-user@users.noreply.github.com&gt;</dc:creator>
    </item>
<item>
        <title>72d60f2d94b24cb66fabf596a2ec440f459ba88f - Add clear-resolved to admin overview; make orphaned annotations read-only</title>
        <link>http://127.0.0.1:8080/history/plugin/annotations/README.md#72d60f2d94b24cb66fabf596a2ec440f459ba88f</link>
        <description>Add clear-resolved to admin overview; make orphaned annotations read-onlyAdmin panel now shows a Resolved column alongside Normal and Orphaned, withper-page and wiki-wide &quot;clear resolved&quot; actions mirroring the existing orphanclears. The counts deliberately overlap: a resolved annotation is counted inboth its anchoring facet (Normal or Orphaned) and the Resolved column, so eachclear button removes exactly what its label says.helper::pageCounts() gains the resolved key; clearResolvedAll() mirrorsclearOrphanedAll(). In the front-end, orphaned annotation threads are nowread-only &#8212; Resolve/Reopen and Edit are suppressed, leaving only Delete.Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;

            List of files:
            /plugin/annotations/README.md</description>
        <pubDate>Mon, 15 Jun 2026 03:37:57 +0000</pubDate>
        <dc:creator>tracker-user &lt;82045103+tracker-user@users.noreply.github.com&gt;</dc:creator>
    </item>
<item>
        <title>9fd890c3d28899ac6132f5f0d76a031cc5c27f1a - Add admin overview of annotated pages with clear-orphaned actions</title>
        <link>http://127.0.0.1:8080/history/plugin/annotations/README.md#9fd890c3d28899ac6132f5f0d76a031cc5c27f1a</link>
        <description>Add admin overview of annotated pages with clear-orphaned actionsAdds admin.php (Admin -&gt; Annotations): a wiki-wide table of annotated pageswith Normal/Orphaned counts, per-column filter, sortable headers, numberedpager (entries_per_page config), and per-page and wiki-wide clear-orphanedPOST actions guarded by checkSecurityToken and auth_isadmin.Refactors the orphan rule into helper::quoteMissing() shared byfindOrphaned() and the new pageCounts(); adds getAnnotatedPages() /searchAnnotations() / clearOrphanedAll() to the helper. Extends HelperTestwith four new coverage cases. All four locales (en, de, ru, ja) carry thenew admin strings.Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;

            List of files:
            /plugin/annotations/README.md</description>
        <pubDate>Mon, 15 Jun 2026 00:40:04 +0000</pubDate>
        <dc:creator>tracker-user &lt;82045103+tracker-user@users.noreply.github.com&gt;</dc:creator>
    </item>
<item>
        <title>86c7806d6d41bce7c6d00acbee1316c62845cabb - Add config, selection guards, annotation overlap detection, and glow button</title>
        <link>http://127.0.0.1:8080/history/plugin/annotations/README.md#86c7806d6d41bce7c6d00acbee1316c62845cabb</link>
        <description>Add config, selection guards, annotation overlap detection, and glow button- Config: color_open / color_resolved (hex, drives CSS vars); embed_max_bytes,  context_length, body_cap move from constants to conf/default + metadata.  action.php injects --ann-open-rgb / --ann-resolved-rgb as CSS custom props;  style.css escapes every rgba(var(&#8230;)) with LESS ~&quot;&#8230;&quot; so lesserphp doesn&apos;t  bake them to #000000 at compile time.- Selection guards: Annotate button suppressed inside .ann-* UI, #dw__toc,  .docInfo, .secedit; the old endpoint-only isInsideHighlight is replaced by  selectionHitsHighlight (range.intersectsNode over all highlight spans) so a  selection overrunning an existing annotation on either side opens it instead  of offering a new overlapping one.- Glow: static amber box-shadow on .ann-tooltip .ann-btn (no animation).- Removed email line from plugin.info.txt; updated GeneralTest accordingly.- context_length fed to JS via JSINFO.annotations.contextLen so capture and  PHP trimming stay in sync.- conf/ + lang/*/settings.php + README/DESIGN updated.Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;

            List of files:
            /plugin/annotations/README.md</description>
        <pubDate>Wed, 03 Jun 2026 09:48:21 +0000</pubDate>
        <dc:creator>tracker-user &lt;82045103+tracker-user@users.noreply.github.com&gt;</dc:creator>
    </item>
<item>
        <title>ee9dbf1506bc8a2e17701b4e3c1bc1caf77e1561 - Add nested reply threading; sync docs</title>
        <link>http://127.0.0.1:8080/history/plugin/annotations/README.md#ee9dbf1506bc8a2e17701b4e3c1bc1caf77e1561</link>
        <description>Add nested reply threading; sync docsReplies can now be threaded under one another instead of only sittingflat under their annotation.Backend:- helper.php: addReply() takes an optional parentId, stored on each reply  after sanitising it to hex; an empty or unknown parent simply falls back  to a top-level reply. Replies remain a flat list, with the parent link  carried as data.- action.php: the reply action forwards parentId and returns the full  updated annotation (not just the new reply) so the client re-renders the  whole thread in one round-trip. Also fix a stray-indented docblock and  drop the inaccurate &quot;and exit&quot; wording on the JSON responders.Docs / manifest:- DESIGN.md: document the parentId field, the flat-storage-plus-client-tree  model, and the full-annotation reply response.- README.md: note that replies can nest.- plugin.info.txt: bump the date.Co-Authored-By: Claude Opus 4.8 &lt;noreply@anthropic.com&gt;

            List of files:
            /plugin/annotations/README.md</description>
        <pubDate>Wed, 03 Jun 2026 05:12:45 +0000</pubDate>
        <dc:creator>tracker-user &lt;82045103+tracker-user@users.noreply.github.com&gt;</dc:creator>
    </item>
<item>
        <title>da56206cc13612db0df36be97c0f01d8f3c5e9f4 - Fix highlight off-by-one, localise the UI, add tests</title>
        <link>http://127.0.0.1:8080/history/plugin/annotations/README.md#da56206cc13612db0df36be97c0f01d8f3c5e9f4</link>
        <description>Fix highlight off-by-one, localise the UI, add testsAnchoring (the core bug):- Replace buildNormToRaw with normalizeWithMap so the normalised search  string and the normalised-&gt;raw index map are built in one pass and share  the same trimming. DokuWiki indents its content markup, so the collected  text starts with a whitespace text node; the old untrimmed map shifted  every highlight by a character. Verified on the live wiki: a quote now  re-anchors exactly, including across element boundaries.- Locate all matches first, then wrap last-to-first, so wrapping (which  splits text nodes) never disturbs a not-yet-wrapped offset.- Fix a pre-existing orphan double-count: renderAll passed an orphan total  into updateCounter, which then recounted it from the _orphaned flags.Localisation:- Move front-end strings to $lang[&apos;js&apos;] (exposed as LANG.plugins.annotations)  and read them via t()/fmt() with English fallbacks.- Add de, ru and ja translations alongside en.Conventions / cleanup:- action.php: read request data via $INPUT; pass the CSRF token straight to  checkSecurityToken($token) instead of poking $_POST/$_REQUEST; unify admin  detection on auth_isadmin().- helper.php: write annotation files with JSON_UNESCAPED_UNICODE | _SLASHES.- Drop the dead ann-highlight-orphaned constant; set panel data-status so the  resolved accent in style.css applies.Tests:- Add _test/GeneralTest.php (manifest + conf invariant) and _test/HelperTest.php  (permission rules, CRUD, input cleaning, findOrphaned). 15 tests pass.Docs: sync DESIGN.md and README.md; bump plugin.info.txt date.Co-Authored-By: Claude Opus 4.8 &lt;noreply@anthropic.com&gt;

            List of files:
            /plugin/annotations/README.md</description>
        <pubDate>Tue, 02 Jun 2026 16:47:05 +0000</pubDate>
        <dc:creator>tracker-user &lt;82045103+tracker-user@users.noreply.github.com&gt;</dc:creator>
    </item>
<item>
        <title>8d8701f5afabecdb73a7226eaf85b736f630ddd2 - Make README user-facing; move technical detail into DESIGN</title>
        <link>http://127.0.0.1:8080/history/plugin/annotations/README.md#8d8701f5afabecdb73a7226eaf85b736f630ddd2</link>
        <description>Make README user-facing; move technical detail into DESIGNREADME now covers only what end users need: features, install, usage.The storage format, AJAX API, file layout, browser internals and theACL-level permission table -- all developer material that overlappedwith DESIGN.md -- now live only in DESIGN.md, which gains theplugin.info.txt manifest row and a note on the repository&apos;s doc andlicence files. README links to DESIGN for developers and AI agents.Co-Authored-By: Claude Opus 4.8 &lt;noreply@anthropic.com&gt;

            List of files:
            /plugin/annotations/README.md</description>
        <pubDate>Tue, 02 Jun 2026 15:45:00 +0000</pubDate>
        <dc:creator>tracker-user &lt;82045103+tracker-user@users.noreply.github.com&gt;</dc:creator>
    </item>
<item>
        <title>5fa3d1851dabf8560591f7c142012774077e7767 - Document the shipped plugin: rewrite DESIGN.md, sync README</title>
        <link>http://127.0.0.1:8080/history/plugin/annotations/README.md#5fa3d1851dabf8560591f7c142012774077e7767</link>
        <description>Document the shipped plugin: rewrite DESIGN.md, sync READMEReplace the build-stage narrative and the claude.ai sandbox paths inDESIGN.md with a single architecture reference for the finished plugin:the anchoring model and re-anchoring algorithm, JSON storage and limits,the JSINFO-injection mechanism, the permission model, the CSRF flow, theAJAX endpoint, the FF78/PHP constraints, and the remaining gaps (unwiredUI strings, no translations, no tests, no config).Complete the README file tree (DESIGN.md, LICENSE) and note thataction.php also performs the JSINFO injection.Co-Authored-By: Claude Opus 4.8 &lt;noreply@anthropic.com&gt;

            List of files:
            /plugin/annotations/README.md</description>
        <pubDate>Tue, 02 Jun 2026 15:30:00 +0000</pubDate>
        <dc:creator>tracker-user &lt;82045103+tracker-user@users.noreply.github.com&gt;</dc:creator>
    </item>
<item>
        <title>43d2073c014d8cf78420fa47c6568a01e7249305 - Initial annotations plugin</title>
        <link>http://127.0.0.1:8080/history/plugin/annotations/README.md#43d2073c014d8cf78420fa47c6568a01e7249305</link>
        <description>Initial annotations pluginWord- and sentence-level annotations for DokuWiki pages: text-quoteanchoring, threaded replies, open/resolved status, gutter markers,client- and server-side orphan detection, a per-user on/off toggle, andadmin per-page bulk-clear. Annotations are stored out-of-band in aper-page JSON file, so the wiki changelog is never touched.Built with Claude Opus 4.7 and Sonnet 4.6.Co-Authored-By: Claude Opus 4.8 &lt;noreply@anthropic.com&gt;

            List of files:
            /plugin/annotations/README.md</description>
        <pubDate>Sat, 23 May 2026 01:52:14 +0000</pubDate>
        <dc:creator>tracker-user &lt;82045103+tracker-user@users.noreply.github.com&gt;</dc:creator>
    </item>
</channel>
</rss>
