<feed xmlns='http://www.w3.org/2005/Atom'>
<title>cccms/app/views/elevations, 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-15T14:28:21Z</updated>
<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>Require a fresh second factor for user management</title>
<updated>2026-07-31T23:10:35Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-07-31T23:10:35Z</published>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/commit/?id=f6c1f0f08f031778a491465d35ac694bfcdc12b0'/>
<id>urn:sha1:f6c1f0f08f031778a491465d35ac694bfcdc12b0</id>
<content type='text'>
Administrative actions are gated behind a 30-minute elevation window:
creating and retiring accounts, editing roles, clearing a second factor.
Reading the list is not gated, and content work is untouched.

elevated? is tied to is_admin?, so losing the role closes the window at
once. The window opens when the second factor verifies at login, so an
admin heading straight for user management is already elevated, and closes
on logout with the other session state. Five wrong codes end the session,
mirroring the login challenge.

users#update carries no elevation filter, since self-service reaches it;
the role field is gated in user_params instead and fails closed.
</content>
</entry>
</feed>
