<feed xmlns='http://www.w3.org/2005/Atom'>
<title>cccms/lib/html_word_diff.rb, branch master</title>
<subtitle>[no description]</subtitle>
<id>https://erdgeist.org/gitweb/cccms/atom?h=master</id>
<link rel='self' href='https://erdgeist.org/gitweb/cccms/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://erdgeist.org/gitweb/cccms/'/>
<updated>2026-07-10T01:59:34Z</updated>
<entry>
<title>Stop diff output from corrupting the document on structural tag changes</title>
<updated>2026-07-10T01:59:34Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-07-10T01:59:34Z</published>
<link rel='alternate' type='text/html' href='https://erdgeist.org/gitweb/cccms/commit/?id=fd98a2d3053279bd4a848faa52a3ac676db10cbb'/>
<id>urn:sha1:fd98a2d3053279bd4a848faa52a3ac676db10cbb</id>
<content type='text'>
sdiff aligned an inserted paragraph break correctly, but the renderer
wrapped the raw &lt;/p&gt;/&lt;p&gt; tokens in &lt;ins&gt; regardless -- invalid nesting
that browsers silently repair by dropping the unmatched closing tag,
leaving everything downstream rendered inside an &lt;ins&gt; with nothing
left to close it. Same failure mode as the retired cacycle_diff.js,
different cause.

Tag tokens now render as a plain-text pilcrow with a tooltip naming
the actual tag, never as literal markup inside &lt;ins&gt;/&lt;del&gt;. Applies to
both inline and side-by-side. Side-by-side's new panel flattening a
real paragraph break into a marker, rather than showing its own true
structure, is a known, accepted trade-off for now -- not the same
problem, and not fixed here.
</content>
</entry>
<entry>
<title>Retire vendored cacycle_diff.js for a diff-lcs-based diff view</title>
<updated>2026-07-09T22:35:24Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-07-09T22:35:24Z</published>
<link rel='alternate' type='text/html' href='https://erdgeist.org/gitweb/cccms/commit/?id=a25d90335ad3738b6831288190132c2f7498465c'/>
<id>urn:sha1:a25d90335ad3738b6831288190132c2f7498465c</id>
<content type='text'>
Revisions#diff now computes an inline or side-by-side word diff
server-side (Page#diff_against, lib/html_word_diff.rb) instead of
shipping raw/escaped content to the browser for a 2008-era vendored
JS differ to mangle. View mode is picked via a `view` param, settable
either on the diff page itself or directly from the revisions#index
sticky bar next to "Diff revisions".

Also fixes a pre-existing bug in RevisionsController#diff's single-
revision branch, which set params[:start]/params[:end] instead of
params[:start_revision]/params[:end_revision].
</content>
</entry>
</feed>
