<feed xmlns='http://www.w3.org/2005/Atom'>
<title>cccms/config/initializers, 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-09T21:31:35Z</updated>
<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>Remove the Rails 3.2 duration patch</title>
<updated>2026-08-09T20:50:08Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-08-09T20:50:08Z</published>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/commit/?id=6047bd39f7d08a17f679e6c6fc2487c5c2c6b611'/>
<id>urn:sha1:6047bd39f7d08a17f679e6c6fc2487c5c2c6b611</id>
<content type='text'>
It reopened Integer and Float to work around duration arithmetic under Ruby
2.4 and Rails 3.2, and has been shadowing ActiveSupport's own helpers ever
since. Its months were exactly 30 days and its years 365.25, both differing
from ActiveSupport's constants, and it built Duration parts as an array of
pairs rather than a hash, recording weeks as days and hours and minutes as
seconds
</content>
</entry>
<entry>
<title>Remove the Rails 3.2 create_database patch</title>
<updated>2026-08-09T20:39:28Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-08-09T20:39:28Z</published>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/commit/?id=b1d3369d418383bd4e14946b723e4a39c0534a8a'/>
<id>urn:sha1:b1d3369d418383bd4e14946b723e4a39c0534a8a</id>
<content type='text'>
It rewrote the method to work around Enumerable#sum refusing a String seed
under Ruby 2.4, and has been obsolete since Rails 3.2 was left behind. It
kept shadowing the adapter, dropping the collation, ctype, locale and
locale_provider options Rails 8 supports
</content>
</entry>
<entry>
<title>Tidy up headings on house keeping views</title>
<updated>2026-08-04T15:13:18Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-08-04T15:13:18Z</published>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/commit/?id=ac01156d00b24d14225c8e75979fb59bba69640d'/>
<id>urn:sha1:ac01156d00b24d14225c8e75979fb59bba69640d</id>
<content type='text'>
- Collapse page headers into one action row with an optional hint
- limit will_paginate to one row
</content>
</entry>
<entry>
<title>Give the session cookie a lifetime so it survives app switches</title>
<updated>2026-08-02T16:59:03Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-08-02T16:59:03Z</published>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/commit/?id=833c59abf109943e857f64e526f6434e095242d6'/>
<id>urn:sha1:833c59abf109943e857f64e526f6434e095242d6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add a pseudo-locale tripwire for the i18n extraction</title>
<updated>2026-07-24T20:05:58Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-07-24T20:05:58Z</published>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/commit/?id=8e1cbe1362059ee02bcc6380be3fb979455da022'/>
<id>urn:sha1:8e1cbe1362059ee02bcc6380be3fb979455da022</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Give all sessions a uniform absolute lifetime of one week</title>
<updated>2026-07-24T15:20:41Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-07-24T15:20:41Z</published>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/commit/?id=d5883869e97244335370d54e21ef46b3f1885899'/>
<id>urn:sha1:d5883869e97244335370d54e21ef46b3f1885899</id>
<content type='text'>
Enforced at restore via a login-time stamp, written only at genuine
logins so the limit stays absolute rather than sliding. The cookie
name rotation logs everyone out once at deploy. Second-factor users
are deliberately not treated worse than password-only ones.
</content>
</entry>
<entry>
<title>Polish the OTP flows: autocomplete tokens, button dialect, QR sizing, my-account link</title>
<updated>2026-07-24T15:20:22Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-07-24T15:20:22Z</published>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/commit/?id=5f26394947d1150e2656bb22c5858ae5edcdcac7'/>
<id>urn:sha1:5f26394947d1150e2656bb22c5858ae5edcdcac7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add TOTP enrollment and verification to User, witnessed in the action log</title>
<updated>2026-07-24T11:11:51Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-07-24T11:11:51Z</published>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/commit/?id=02e1aefa24cdd0339995d14431713822f4bf4718'/>
<id>urn:sha1:02e1aefa24cdd0339995d14431713822f4bf4718</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Force tags to be lowercase. A script unifies existing tags in both cases</title>
<updated>2026-07-23T17:58:31Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-07-23T17:58:31Z</published>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/commit/?id=f0745de7f661a27b4d20d2ba317d1b31bf9a6c4b'/>
<id>urn:sha1:f0745de7f661a27b4d20d2ba317d1b31bf9a6c4b</id>
<content type='text'>
</content>
</entry>
</feed>
