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

.
feat(album): add demo data with albums, photos, comments and votes
Ship demo images with the module and seed them on install into per-user
album directories with generated thumbnails. Create demo albums covering
every access level (public, private, password-protected) for the admin
and demo users, plus comments and votes.

Demo strings are wrapped in d__('album', ...) and translated into Russian
so they follow the language selected in the installer.
.
feat(downloads): add demo data with categories and media files
Ship trimmed, ID3-tagged audio, video, image and document samples under
modules/downloads/demo, and seed them via installDemoData(): create
categories under upload/downloads/files, copy files and insert
download__category/download__files rows with English titles, descriptions,
slugs, ratings and download counts.
.
fix(install): seed user IPs, clear cache and rebuild smilies after install
- Pass string IPs to User creation so the Ip cast stores them (was ip2long twice -> 0)
- Give demo users distinct RFC 5737 example IPs
- Clear cache after install so counters are recalculated
- Rebuild smilies cache so text formatters have a valid list from the first request
- Guard Tools::smilies against an empty or corrupt cache file to avoid a fatal array_merge(null, null)
.
feat(library): add demo data with users, articles, comments and ratings
.
chore: update packages
.
feat(install): move demo data into per-module installers via installDemoData()
.
fix(install): replace removed Languages class with LanguageFilesManager
.
refactor(console): migrate one-time data converters to console commands
Replace install/*_converter.php scripts with module console commands guarded against
re-runs via OneTimeTaskTracker (config/autoload/one_time_tasks.local.php, --force to rerun).

New shared services: Johncms\Console\OneTimeTaskTracker, Johncms\Bbcode\BbcodeToHtmlConverter.
New commands: library:convert-bbcode, library:convert-comments, library:generate-slugs,
downloads:convert-bbcode, downloads:convert-comments, downloads:generate-slugs.

Update CHANGELOG and docs submodule pointer.
.
fix(library): canonicalize page parameter on the article reader
The library article detail page (one text page per pagination page) did not redirect for non-canonical ?page values (e.g. ?page=0 silently showed page 1). Build the Pagination from the raw request page and apply PaginationGuard so page=1/junk are stripped and out-of-range pages redirect to the last page, matching the other paginated lists.
.
fix(admin): drop leftover Tools constructor params after pagination migration
Four admin controllers (IpBan, HiddenPosts, HiddenTopics, RegistrationModeration) kept a promoted `private Tools $tools` argument after the Legacy\Tools import was removed during the pagination migration, so the type resolved to a non-existent same-namespace `Tools` class and broke DI container compilation. Remove the unused parameters.