История коммитов

simba77
feat(theme): show the technical data of a post in a quiet popover
@theme/components/moderator-meta.twig puts the address, the address behind a proxy and the browser of a post, with links to the IP search and whois, behind a small button at the end of the row of actions. data-hover-popover (src/js/hover-popover.js) opens a popover on hover with a mouse; a click keeps it open. News comments use it instead of the address badge.
simba77
fix(news): tidy the search results and lead back from their end
The pagination sits with the list instead of adding the gap of the page to its own, the way back to all news is a button and is repeated under a list of results, and the heading counts what was found.
simba77
feat(pagination): say which records a page shows beside the links
Pagination::render(withRange: true) puts "Showing 21–40 of 151" on the start of the links. Off by default; the news lists and the news search turn it on.
simba77
feat(collections): give sections a short description apart from the long one
New nullable column collection_sections.summary (migration add_summary_to_sections): plain text of up to 500 characters. News show it under the heading of a section and on its card, and keep the long description, now edited with CKEditor without uploads, as the text under the list, styled as rich content. The cache key of the collection structure carries the shape of its DTOs, so entries written before the upgrade are not read back.
simba77
feat(theme): add a shared Share button
@theme/components/share.twig is a popover with Copy link and plain share links of Telegram, VK, WhatsApp, Odnoklassniki and X; on a touch screen with the Web Share API it opens the share sheet of the system. The news article uses it instead of its own buttons, and the strings move from the news domain to system.
simba77
style(news): give the comment form a single frame
The toolbar, the shaded text area and the send button share one border; the heading moves into the placeholder of the field (new placeholder parameter of the editor component), only the field shows the focus, and the form stands further from the list.
simba77
fix(news): show the author under the article on narrow screens
simba77
perf(news): read the article page without repeated queries
Resolve section paths from the cached sections, count a view of the article already read, read its comments without guarding and counting them again, and map related and popular articles once.
simba77
perf(collections): hand the known structure to public selections of items
ContentCollectionItemQuery carries an optional ItemQueryStructure (field definitions and the section tree). CollectionsPublicApi builds it from the cached schema and sections, so lists, counts, section stats and single item reads no longer read the fields and the sections again. The query compiler and validator work with CollectionFieldDefinition instead of Eloquent models.
simba77
perf(collections): share the structure of collections through the cache
CollectionStructureMemo keeps the collection, its fields and its section tree in the application cache, per locale, under the tag of the collection. A change of a collection or a synchronization of declarations forgets the whole structure.