<?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 style.css</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2025</copyright>
    <generator>Java</generator><item>
        <title>ad1073d40e87e01426f7a3b1bf49fa2e56d38cf1 - Show full reply tree in orphan drawer</title>
        <link>http://127.0.0.1:8080/history/plugin/annotations/style.css#ad1073d40e87e01426f7a3b1bf49fa2e56d38cf1</link>
        <description>Show full reply tree in orphan drawerbuildThreadEntry alone was called per orphan, so only the rootmessage appeared in the drawer. Now each orphaned thread renderswith its complete reply tree (read-only: no Reply/Edit/Deletebuttons on replies). A .ann-orphan-thread wrapper groups eachthread visually, mirroring the inline panel styling.Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;

            List of files:
            /plugin/annotations/style.css</description>
        <pubDate>Tue, 16 Jun 2026 20:05:00 +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/style.css#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/style.css</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>3c905d5213131cc1cba455f5638619b3e7ab4691 - Use normal font style for quotes instead of italic</title>
        <link>http://127.0.0.1:8080/history/plugin/annotations/style.css#3c905d5213131cc1cba455f5638619b3e7ab4691</link>
        <description>Use normal font style for quotes instead of italic

            List of files:
            /plugin/annotations/style.css</description>
        <pubDate>Thu, 04 Jun 2026 08:40:01 +0000</pubDate>
        <dc:creator>tracker-user &lt;82045103+tracker-user@users.noreply.github.com&gt;</dc:creator>
    </item>
<item>
        <title>49d7ec0a0f9385eb9dab3ae4b2747fe04548a000 - Fix stored XSS in JSINFO embed and self-deadlocking write lock</title>
        <link>http://127.0.0.1:8080/history/plugin/annotations/style.css#49d7ec0a0f9385eb9dab3ae4b2747fe04548a000</link>
        <description>Fix stored XSS in JSINFO embed and self-deadlocking write lockTwo serious bugs found during review, plus three minor fixes:- Stored XSS: the inline-embedded annotation payload was encoded with  JSON_UNESCAPED_SLASHES and appended into the page&apos;s inline &lt;script&gt;. A  body containing &quot;&lt;/script&gt;&quot; closed the script element and injected  arbitrary HTML, executing in every viewer&apos;s browser. Anyone who can  annotate (AUTH_READ + login) could exploit it. Add JSON_HEX_TAG so &lt; and  &gt; are escaped, neutralising every tag-based breakout.- Write lock: mutate() held io_lock($file) and then called  io_saveFile($file), which takes io_lock($file) again internally. The  inner lock collided with the outer, busy-waiting ~3s for the stale-lock  timeout on every create/edit/delete/resolve/clear and defeating mutual  exclusion. Lock on a sentinel key ($file.lock) instead, leaving  io_saveFile&apos;s own lock uncontended (matches DokuWiki TaskRunner idiom).- style.css: the :root colour fallbacks were self-referential  (var(--x) of themselves), i.e. cyclic and invalid, not a fallback.  Replace with the literal config-default triplets.- action.php: drop hsc() from a JSON error string (wrong context).- script.js: refresh the open orphan drawer after a thread mutation so an  edited body shows there too.Co-Authored-By: Claude Opus 4.8 &lt;noreply@anthropic.com&gt;

            List of files:
            /plugin/annotations/style.css</description>
        <pubDate>Wed, 03 Jun 2026 17:37:45 +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/style.css#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/style.css</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>563f3b4cdab433de36fec30ddf346093d60b9ccd - Rework annotation UI: threaded replies, polish, and fixes</title>
        <link>http://127.0.0.1:8080/history/plugin/annotations/style.css#563f3b4cdab433de36fec30ddf346093d60b9ccd</link>
        <description>Rework annotation UI: threaded replies, polish, and fixesBuilds the threaded-reply UI on the new parentId backend and tidies upthe front-end overlay.Threaded replies:- Render replies as an indented tree (buildReplyTree / appendReplyTree)  with an inline &quot;reply to this reply&quot; form on each entry.Fixes:- Keep gutter markers aligned with their highlights. A marker lives in  document.body at absolute coordinates, so opening or closing a panel, or  resizing the window, used to leave it stranded away from its text;  repositionMarkers() now re-aligns them on those events.- Stop stealing focus when a panel is re-opened after an action (resolve,  edit, delete), which previously jumped the viewport down to the reply box.- Preserve panel position after replies and edits by merging the client  render state (_highlightEl, _markerEl, _range) onto server responses.Polish:- Show a busy spinner on buttons while an AJAX request is in flight.- Layout: position the counter bar and orphan drawer correctly around the  floated TOC; fix highlight hover colours and the marker column position.Cleanup / dedup:- Fold the four near-identical thread mutation handlers (reply, edit,  edit-reply, delete-reply) into one submitThreadAction() helper.- De-duplicate wrapHighlight()&apos;s two branches and make its title null-safe.- Remove the unused refreshAnnotation() left over from before the server  returned the full annotation.Co-Authored-By: Claude Opus 4.8 &lt;noreply@anthropic.com&gt;

            List of files:
            /plugin/annotations/style.css</description>
        <pubDate>Wed, 03 Jun 2026 05:12:58 +0000</pubDate>
        <dc:creator>tracker-user &lt;82045103+tracker-user@users.noreply.github.com&gt;</dc:creator>
    </item>
<item>
        <title>b8076f00444ff4b3b435c7112dca9c194858e3f7 - Fix JSINFO injection timing and gutter marker positioning</title>
        <link>http://127.0.0.1:8080/history/plugin/annotations/style.css#b8076f00444ff4b3b435c7112dca9c194858e3f7</link>
        <description>Fix JSINFO injection timing and gutter marker positioninghandleMetaHeader() wrote the annotation payload to $JSINFO, buttpl_metaheaders() has already serialised JSINFO into the inline &lt;script&gt;by the time TPL_METAHEADER_OUTPUT fires, so the data never reached thepage. Append a `JSINFO.annotations = {...}` statement to that inlineblock instead, and only inject it on show / export_xhtml views.Anchor the gutter markers to .page (the article column) rather than#dokuwiki__content: the latter&apos;s position:relative extended over thesidebar and swallowed its navigation clicks.Co-Authored-By: Claude Opus 4.8 &lt;noreply@anthropic.com&gt;

            List of files:
            /plugin/annotations/style.css</description>
        <pubDate>Sat, 23 May 2026 04:36:01 +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/style.css#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/style.css</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>
