<feed xmlns='http://www.w3.org/2005/Atom'>
<title>cccms/test, branch master</title>
<subtitle>[no description]</subtitle>
<id>http://erdgeist.org/gitweb/cccms/atom?h=master</id>
<link rel='self' href='http://erdgeist.org/gitweb/cccms/atom?h=master'/>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/'/>
<updated>2026-08-20T15:52:44Z</updated>
<entry>
<title>Add tests for the redirect mechanics</title>
<updated>2026-08-20T15:52:44Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-08-20T15:52:44Z</published>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/commit/?id=c635b44d8139d0738d2caa6461c9946659d56c45'/>
<id>urn:sha1:c635b44d8139d0738d2caa6461c9946659d56c45</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add test for trashed rows offering restore and refusing restore without live parents</title>
<updated>2026-08-14T22:40:49Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-08-14T22:40:49Z</published>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/commit/?id=96cf1945a256c8ef825f9b1af81ca8bee751a0b5'/>
<id>urn:sha1:96cf1945a256c8ef825f9b1af81ca8bee751a0b5</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fold revision metadata into a two-line row</title>
<updated>2026-08-14T15:02:30Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-08-14T15:02:30Z</published>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/commit/?id=f93969e772a36b54998496092b54972825a07dd8'/>
<id>urn:sha1:f93969e772a36b54998496092b54972825a07dd8</id>
<content type='text'>
Title on the first line, date, revision and editor on the second, with the
two actions as an icon grid. Four columns become two, so the table needs no
mobile card treatment.
</content>
</entry>
<entry>
<title>Check rendered markup for balance in controller tests</title>
<updated>2026-08-13T23:55:10Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-08-13T23:55:10Z</published>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/commit/?id=3d1f82c459e184379f7cc617ffe38b6b63594620'/>
<id>urn:sha1:3d1f82c459e184379f7cc617ffe38b6b63594620</id>
<content type='text'>
Every successful HTML response is parsed, as a document or a fragment
depending on whether it carries a doctype, and parse errors fail the test.

New actions inherit the check.
</content>
</entry>
<entry>
<title>Escape feed content with Builder rather than by hand</title>
<updated>2026-08-09T21:31:35Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-08-09T21:31:35Z</published>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/commit/?id=5690cf4d4e05eafdfd2e270bbdf1a925114d0f76'/>
<id>urn:sha1:5690cf4d4e05eafdfd2e270bbdf1a925114d0f76</id>
<content type='text'>
Builder escapes by default; the three feed templates no longer call
CGI.escapeHTML. This fixes two sites that never escaped at all: the tag
feed's externally supplied :tag segment, interpolated into its title, self
link and id, and dc:creator in the RDF template.

Subscribers see one difference: quotes and apostrophes arrive raw, which is
valid in element text.

config/initializers/xmlparser.rb, which redefined Builder::XmlBase#_escape
as the identity function, is gone. XML::Node#replace_with went with it, no
callers.
</content>
</entry>
<entry>
<title>Let the RSS templates raise in tests</title>
<updated>2026-08-09T21:07:58Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-08-09T21:07:58Z</published>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/commit/?id=4d8c7290adf8dd41677ccc44a5c5ffe5d1bed2f6'/>
<id>urn:sha1:4d8c7290adf8dd41677ccc44a5c5ffe5d1bed2f6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Load the test schema through Rails, and keep the search trigger installed</title>
<updated>2026-08-09T20:14:29Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-08-09T20:14:29Z</published>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/commit/?id=8135e08107f81c38389ec3938df85a9b9f0e1f4f'/>
<id>urn:sha1:8135e08107f81c38389ec3938df85a9b9f0e1f4f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Drop nodes.external_url</title>
<updated>2026-08-09T14:03:40Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-08-09T14:03:40Z</published>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/commit/?id=0f4288d91de7b48f7bbed832ca80246b0055cc64'/>
<id>urn:sha1:0f4288d91de7b48f7bbed832ca80246b0055cc64</id>
<content type='text'>
The column moved to page.rb and was now written only by publish_draft!
and by the chapter seed, and read by nothing.

lib/tasks/pages.rake goes with it. backfill_external_url reads the dropped
column. backfill_address is spent and no longer safe to re-run.
</content>
</entry>
<entry>
<title>Report every editorial attribute in the revision diff</title>
<updated>2026-08-09T13:45:56Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-08-09T13:45:56Z</published>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/commit/?id=9d32458491d79f8e06a706375030c78282f4427b'/>
<id>urn:sha1:9d32458491d79f8e06a706375030c78282f4427b</id>
<content type='text'>
diff_against gained external_url, published_at and user. The view renders
each metadata section only when that attribute changed, and says so once
when none did.

Metadata now precedes the locale pointer, which speaks only of translations:
above the metadata it read as "nothing changed" on a revision that had moved
the page.
</content>
</entry>
<entry>
<title>Attach an asset to a page from the asset's own page</title>
<updated>2026-08-09T11:26:23Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-08-09T11:26:23Z</published>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/commit/?id=616a0d2d2ba15a7e176938ee829d60366fb6a9c2'/>
<id>urn:sha1:616a0d2d2ba15a7e176938ee829d60366fb6a9c2</id>
<content type='text'>
The picker moves from assets/edit to assets/show, where the list of attached
pages already is.

A member route, POST assets/:id/attach_to_node, replaces the ride on #update.

Supersedes the picker wiring in the previous commit; what remains of it is
@attach_node in #create, the flash composition and the corrected hint.
</content>
</entry>
</feed>
