FileHub работает как SkyBox на уровне сервера: файлы любого человека можно выделять, скачивать архивом, открывать и закрывать по ссылке и удалять прямо из общего списка; люди видны сразу, у каждого файла ссылка на его папку
Человек в FileHub открывается на своих файлах со всеми действиями SkyBox: новая папка, перенос перетаскиванием, деревом и «Вырезать / Вставить», удаление папок (содержимое поднимается выше), доступ по ссылке для папки
Файл из SkyBox или FileHub можно перетащить в боковой чат — на переписку, аватар или строку чата — и отправить; страница больше не уходит по ссылке файла
Техническое:
W1: filehub POST: filehub_create_folder, filehub_delete (файлы + папки человека), filehub_public (файлы или папка), filehub_download (ZIP, raw); FilesModule::files_admin_in_scope (порталы админа, гостевые — только админу всех порталов); аудит *_admin; FileHubPage: выделение во всех списках, люди на главной, place у файла, человек на корне, current, new_folder, move_tree «Файлы @person»; bulk_files delete принимает folder_ids[]
W2: cloud.js владеет всеми drop во время перетаскивания плитки (без перехода по ссылке), в данных перетаскивания имена файлов; dock.js принимает Files и application/x-tajelo-cloud-items на переписку, рельс и список — облачный файл уходит по file_id; smoke-cloud-pages 124; filehub route: ответ raw (архив)
v5.32.0
2026-10-09
Что нового:
В SkyBox и FileHub переносится всё: файлы и папки можно перетащить на папку, на папку в списке слева или на шаг пути сверху; папки тоже выделяются галочкой, Ctrl/Shift и рамкой
«Переместить…» открывает дерево папок: выберите место (двойной щелчок — сразу), текущее место отмечено «здесь», папку нельзя положить в неё саму или во вложенную
«Вырезать» и «Вставить сюда»: вырежьте файлы или папки, откройте другую папку и вставьте (или Ctrl+X / Ctrl+V)
Техническое:
V4: FilesModule::folders_move (владелец, корень = null, отказ в перенос в себя/во вложенную); bulk_files move принимает folder_ids[] (аудит file_move_bulk + folder_move), filehub_move_files — folder_ids[] + owner_user_id (аудит folder_move_admin, проверка портала как при переименовании)
CloudFolderTree::rows (id, name, depth, parent) для окна «Переместить»; шаги пути с drop, config.pasteTarget; cloud.js: выделение и перетаскивание папок, запрет сброса в перетаскиваемые и вложенные, дерево вместо select, вырезать/вставить в sessionStorage; smoke-cloud-pages 110; deploy: coturn enable только если не включён (с повтором)
v5.31.0
2026-10-09
Что нового:
Новое окно просмотра: файлы открываются на тёмном полноэкранном фоне — название, размер, «3 из 12», миниатюры внизу, стрелки и свайпы, свайп вниз или «Назад» закрывают
Фото увеличиваются двойным щелчком или касанием, колесом и щипком; PDF и текстовые файлы открываются прямо в окне, остальное — карточкой с кнопками «Скачать» и «Открыть»
Новый плеер видео и аудио: перемотка по дорожке, скорость, звук, «картинка в картинке», полный экран, клавиши; одновременно играет только одно — в просмотре, в постах и в аудио профиля
Техническое:
V3: viewer.js переписан — свой DOM вместо Bootstrap-модалки (группы data-group, зум/пан/щипок, свайпы, history-запись для «Назад», фокус внутри), API TajeloAttachmentViewer v5 (openByElement/openByFileId/close); file_meta: виды pdf и text (html/svg/js остаются file)
media-player.js (TajeloPlayer.create/enhance, хосты data-media-inline=video|audio, совместимый TajeloInlineMedia) вместо media-inline.js (1 723 строки); удалены views/components/viewer.php и media_inline.php с inline-стилями; стили ui-media.css (.mv-*, .mp-*) в бандле; smoke-media-viewer (66)
v5.30.0
2026-10-09
Что нового:
Новости приведены в порядок: каждый релиз — одна запись (дубли убраны), объявления и релизы по дате, фильтры «Все / Объявления / Релизы», по 15 записей и «Показать ещё» без перезагрузки
Админ может очистить все релизы из новостей, с главной и из уведомлений одной кнопкой и вернуть их; история версий их хранит
Пустые места без лишних слов: «Пусто», а блоки «Открыто сейчас» и «Что нового» на главной скрыты, пока в них ничего нет
Техническое:
V2: один релиз = одна строка news(type=changelog); миграция 20261009_0007_release_news_once удаляет type=system; release-builder без --news-title/--news-body и system_entries.json; NewsModule без system seed/sync
News\NewsPage (view-model: SQL-страницы по 15, фильтры, can_manage) + News\NewsItem; views/news.php + views/news/item.php + views/admin_news.php только рисуют; public/assets/js/news.js, public/css/ui-news.css (.nw-*); удалены NewsCenterViewModelBuilder, ReadNewsUseCase, MutateNewsUseCase, news-center.js и старые .news-*/.admin-news-* стили (DI 263→261)
Маршруты news_delete_system/news_restore_system/news_delete_changelog/news_restore_changelog → news_clear_releases/news_restore_releases (ядро 135→133); admin_news под пунктом «Новости»; лента уведомлений — только последний релиз; главная читает 6 строк со ссылками на запись; smoke-news-page (75)
v5.29.0
2026-10-09
Что нового:
Чат доработан: имена и превью диалогов больше не меняются через секунду после загрузки; в превью своего сообщения — «Вы:», в ответе видно сам ответ, а не цитату; при открытии диалога с непрочитанными — линия «Новые сообщения», переписка открывается с неё; дата при прокрутке всплывает сверху и не закрывает текст.
Техническое:
U4: views/chat.php → каркас + views/chat/{list,thread,menus,call}.php, только рисуют view-model MainChatPage (строки диалогов = chat_dialogs_poll, собеседник, контакты, приглашения, конфиг в #msgr-config без CSRF); убраны 8 функций во view, вызовы BootstrapRuntime/UserModule/Format/I18n и ненужная загрузка сообщений и реакций; DirectChat: превью без цитаты, last_mine; messenger.js: «Вы:», линия «Новые сообщения», плавающая дата; smoke-chat-page (46).