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

.
refactor(language): migrate to controller architecture
.
refactor(comments): replace BBCode editor with CKEditor
Switch comments in downloads and library modules from BBCode/WysiBB to
CKEditor. Text is now stored as HTML and sanitized via HTMLPurifier on
save. Message length validation uses EditorContentNormalizer (same
approach as forum) to correctly handle embedded media.

Add converters for existing data:
- install/downloads_comments_converter.php (download__comments)
- install/library_comments_converter.php (cms_library_comments)
.
refactor(mail): implement outgoing conversations and clean up legacy files
.
refactor(mail): implement incoming conversations repository and mapping
.
refactor(mail): scaffold incoming conversations
.
refactor(mail): fix translations and remove legacy files
.
refactor(mail): delete operations
.
docs: add 9.9 changelog section, mark 9.8 as released
.
refactor(library): replace BBCode editor with CKeditor for article text
- Switch article create/edit forms to CKeditor 5 (image upload disabled)
- Add ArticleTextRenderer: DOMDocument block-based pagination + HTMLPurifier/smilies render
- Convert .txt file uploads to HTML paragraphs on create
- Export TXT/FB2 via htmlToPlainText() instead of legacy BBCode notags
- Strip HTML tags in search excerpts and tag previews
- Fix Links::linkSeparator() bug (tags rendered as individual characters)
- Add install/library_text_converter.php to migrate BBCode → HTML in DB
.
refactor(downloads): replace BBCode editor with CKeditor for file descriptions
- Use the shared system::app/ckeditor partial in upload, import and edit forms
- Drop the legacy Bbcode dependency from downloads controllers
- Add DownloadFile::about_html accessor (purify -> embedMedia -> smilies)
- Render descriptions as sanitized HTML instead of BBCode checkout
- Add install/downloads_description_converter.php to migrate old BBCode
descriptions to HTML