| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 2026-07-26 | More visual cleanups for input fields | erdgeist | |
| 2026-07-25 | Give our layouts proper language meta and viewports | erdgeist | |
| 2026-07-25 | Extract public-site strings to i18n | erdgeist | |
| The public views were never part of the admin extraction and were broken in both directions: German visitors got "Featured", "Calendar" and "Tags", English visitors got "Suchergebnisse für Suchbegriff:". Also picks up the unlock-confirm message in link_helper, a straggler from the revisions/menu_items batch, and drops two raw() calls in the application layout in favour of link_to blocks. | |||
| 2026-07-25 | Extract admin strings to i18n: revisions, page_translations, and menu items, | erdgeist | |
| 2026-07-25 | Retire the unroutable occurrences scaffolding | erdgeist | |
| 2026-07-25 | Extract admin strings to i18n: dashboard, layout chrome, and the JS bridge | erdgeist | |
| 2026-07-25 | Extract admin strings to i18n Fix straggler from batch 1 | erdgeist | |
| 2026-07-25 | Extract admin strings to i18n: assets and events clusters | erdgeist | |
| 2026-07-25 | Extract flashes to i18n and stop dispatching on submit labels | erdgeist | |
| 2026-07-25 | Extract admin strings to i18n: users and tags clusters | erdgeist | |
| 2026-07-25 | Extract admin strings to i18n: the nodes cluster | erdgeist | |
| 2026-07-24 | Extract admin strings to i18n: sessions, otp, users/edit | erdgeist | |
| 2026-07-24 | Rename layout classes to what they actually do | erdgeist | |
| 2026-07-24 | Give all sessions a uniform absolute lifetime of one week | erdgeist | |
| 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. | |||
| 2026-07-24 | Render the otp verbs properly in the action log | erdgeist | |
| 2026-07-24 | Polish the OTP flows: autocomplete tokens, button dialect, QR sizing, my-account link | erdgeist | |
| 2026-07-24 | Complete the login only after the second factor | erdgeist | |
| 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. | |||
| 2026-07-24 | Add self-service TOTP enrollment UI and witnessed admin reset | erdgeist | |
| 2026-07-24 | Add TOTP enrollment and verification to User, witnessed in the action log | erdgeist | |
| 2026-07-24 | Prevent the more … link from line breaking | erdgeist | |
| 2026-07-24 | Reduce visual clutter: remove time from article partials | erdgeist | |
| 2026-07-23 | More tiny visual cleanups | erdgeist | |
| 2026-07-23 | articles partials now render the thumb of their headline media in the list | erdgeist | |
| 2026-07-23 | Restyle pdf headline cards | erdgeist | |
| 2026-07-23 | Force tags to be lowercase. A script unifies existing tags in both cases | erdgeist | |
| 2026-07-23 | Turn the asset upload forms into file drop targets | erdgeist | |
| Dropped files land in the existing file input and submit through the unchanged form. An empty name field is prefilled from the basename. | |||
| 2026-07-23 | Zoom the action log on assets | erdgeist | |
| Asset names in summaries and publish deltas link to assets#show with an inline Chronik beside each, suppressed inside that asset's own zoom, per the node convention. assets#show gains a history button. Also renames the details summary (no longer only translations) and moves View Diff onto its own line. | |||
| 2026-07-23 | Keep in-editor asset curation off the head, layering it like every edit | erdgeist | |
| ensure_autosave! gives body keystrokes and asset curation one shared layer, so head is never mutated in place and every curation change surfaces in the publish delta. Stale rendered join ids are mapped across the clone via asset_id. Curation now requires holding the lock; a missing lock answers 423, matching the autosave endpoint. | |||
| 2026-07-23 | Record asset deltas at publish, with changed assets as participants | erdgeist | |
| 2026-07-23 | Witness asset uploads and out-of-band attaches in the action log | erdgeist | |
| 2026-07-23 | Witness asset destruction, naming every node it strips | erdgeist | |
| 2026-07-23 | Convert the log's node zoom to participants, completing subtree histories | erdgeist | |
| 2026-07-23 | Add action_participants model | erdgeist | |
| 2026-07-23 | Add action_participants, recording every node a trash/destroy touches | erdgeist | |
| 2026-07-22 | Add attached nodes subsection in assets#show and thumbnail in nodes#create | erdgeist | |
| 2026-07-22 | Make important flash notices survive the boilerplate Node-locked info in nodes controller | erdgeist | |
| 2026-07-22 | Make nodes#show's add event/child buttons look consistent | erdgeist | |
| 2026-07-22 | Implement controller and view side of the attach logic | erdgeist | |
| 2026-07-22 | factor out flash rendering from layouts/admin | erdgeist | |
| 2026-07-22 | Add Node#attach_asset! attaching across all lifecycle rows | erdgeist | |
| 2026-07-22 | Split nodes#edit into a four-quadrant layout on desktop | erdgeist | |
| 2026-07-22 | Retire nodes#recent, superseded by the action log | erdgeist | |
| 2026-07-22 | Fix Node#title ignoring autosave | erdgeist | |
| head ? head.title : draft.title never accounted for a node with only an autosave, reuses editable_page | |||
| 2026-07-21 | Render PDF headlines as document cards, not lightbox images | erdgeist | |
| A starred PDF previously ran through the same crop-and-lightbox path a photo does -- exactly the awkward treatment explicit headline designation was meant to avoid. _headline_image.html.erb now branches on @headline_asset.pdf?: a PDF renders as a linked card (a :medium thumbnail, a file icon, its name), no gallery participation at all. The existing image-headline and gallery-fallback logic is otherwise unchanged, now scoped to an image-specific headline only. Other attached PDFs -- headlined or not -- list below as plain links, same reasoning as why non-headline photos still get a gallery trigger: an attached document shouldn't go invisible just because nothing's been starred yet. headline_image's own render guard needed widening to cover a page with PDFs attached but no images and no headline at all -- the one case none of the existing conditions accounted for. | |||
| 2026-07-21 | PDFs currently should have no credits attached to them in display | erdgeist | |
| 2026-07-21 | More PDF headline eligibility | erdgeist | |
| 2026-07-21 | Widen nodes#show to all attachments | erdgeist | |
| 2026-07-21 | Make PDFs eligible for headline and allow searching assets by filename | erdgeist | |
| 2026-07-21 | Extract Page#headline_asset | erdgeist | |
| The same related_assets.find_by(headline: true) query was written by hand in three places -- content_helper, nodes#show, and the chapter teaser partial (which was still using assets.first, the old position-based rule, until now). Collapsed to one method, one query. | |||
| 2026-07-21 | Implement model side of PDF raster preview generation | erdgeist | |
