<feed xmlns='http://www.w3.org/2005/Atom'>
<title>cccms/app/views/otp_challenges/new.html.erb, 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-16T11:42:01Z</updated>
<entry>
<title>Give the pre-authentication pages one card</title>
<updated>2026-08-16T11:42:01Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-08-16T11:42:01Z</published>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/commit/?id=1f02e642981e8aced92391c5e47de0b3dcfac09e'/>
<id>urn:sha1:1f02e642981e8aced92391c5e47de0b3dcfac09e</id>
<content type='text'>
.auth_card nowcarries the login form and the second-factor challenge.
</content>
</entry>
<entry>
<title>Style totp input fields so that they work better on mobile</title>
<updated>2026-08-15T14:28:21Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-08-15T14:28:21Z</published>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/commit/?id=445362ed2f8591d54a3c34cb3c5a69049aefa8c6'/>
<id>urn:sha1:445362ed2f8591d54a3c34cb3c5a69049aefa8c6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Scope admin form conventions with a class</title>
<updated>2026-08-13T23:22:11Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-08-13T23:22:11Z</published>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/commit/?id=19b865108c26cf18c26697fee080844de94fb522'/>
<id>urn:sha1:19b865108c26cf18c26697fee080844de94fb522</id>
<content type='text'>
.admin_layout replaces the #admin_layout. All css rules and
javascript queries were changed along and rules simplified
where the opportunity arose.
</content>
</entry>
<entry>
<title>Give every admin page one horizontal gutter</title>
<updated>2026-08-12T23:11:29Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-08-12T23:11:29Z</published>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/commit/?id=862edbf4d5fdb9a88f84bfa1d51ab8cc83896094'/>
<id>urn:sha1:862edbf4d5fdb9a88f84bfa1d51ab8cc83896094</id>
<content type='text'>
by many views inside. The inner ones are gone

nodes#edit's becomes #body_field, which is what #edit_grid places in its
full-width row.

Rows now reach into the label band themselves rather than depending on a
page wrapper to do it. The label column plus its gap equals the escape, so
a row's content starts at the gutter on every page; #edit_grid's rows are
exempt because the grid already steps back.

share one left edge. #new_node's -118px was compensating for that 10px and
left the page 7px out once it went. standalone_action_bar was overridden
everywhere it appeared.

page_translations#edit no longer uses #edit_grid: it has no metadata column,
so the two-column template pushed its abstract into the empty half.

nodes#edit's lower action bar was inside #edit_grid, so it was a grid item
inheriting the escape and sat 125px left of the form above it.
</content>
</entry>
<entry>
<title>Extract admin strings to i18n: sessions, otp, users/edit</title>
<updated>2026-07-24T20:08:05Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-07-24T20:08:05Z</published>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/commit/?id=90207029de7474082310d0725801d60f7145fa98'/>
<id>urn:sha1:90207029de7474082310d0725801d60f7145fa98</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Rename layout classes to what they actually do</title>
<updated>2026-07-24T16:04:56Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-07-24T16:04:56Z</published>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/commit/?id=50ca5e40f461290a2db7452b95f80dd3188dba1d'/>
<id>urn:sha1:50ca5e40f461290a2db7452b95f80dd3188dba1d</id>
<content type='text'>
</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>Complete the login only after the second factor</title>
<updated>2026-07-24T11:53:13Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-07-24T11:53:13Z</published>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/commit/?id=dcb576618b868b888a5b1b31e35491f300ce4050'/>
<id>urn:sha1:dcb576618b868b888a5b1b31e35491f300ce4050</id>
<content type='text'>
Enrolled users get a pending marker instead of a session after the
password step; a valid code through the challenge writes the real
session via reset_session. otp_required without enrollment funnels
into setup everywhere except the enrollment, user, and login
machinery.
</content>
</entry>
</feed>
