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

.
refactor(forum,library): build post/comment previews from stripped HTML
Post and comment bodies are stored as HTML; strip tags and truncate for previews instead of running the legacy notags() BBCode stripper.
.
fix(downloads): render review comments as HTML instead of re-parsing BBCode
Comments are already stored as HTML, so checkout(..., 1, 1) double-escaped them. Purify the stored HTML to match the generic comments component.
.
refactor(users): render about/website with HTMLPurifier instead of legacy BBCode
The undocumented BBCode formatting of the profile about/website fields is dropped in favor of HTMLPurifier, removing the runtime dependency on the legacy Bbcode engine.
.
refactor(forum): drop unused legacy BBCode toolbar from topic page
The topic reply form already uses CKEditor; the buttons() output was passed to the template but never rendered. Remove the Bbcode injection and the now-unused system::app/bbcode templates.
.
docs: update install steps for the Vite build
Replace the removed "npm run prod"/"npm run watch" commands with "npm run build" and the "npm run dev" server, and add a frontend build step to the Docker install since the bundle is no longer committed.
.
build: stop tracking the Vite build output
The compiled bundle in public/build is now generated by "npm run build" after installation instead of being committed.
.
build: migrate frontend to Vite and Vue 3
Replace the Laravel Mix / Webpack build with Vite and upgrade Vue 2.7 to Vue 3.5, keeping the server-rendered island setup where every .vue_app element is mounted as its own app.

Add a Vite view extension that renders entry point tags from the manifest in production and from the dev server (with HMR) when the hot file is present. RTL keeps a separate app.rtl.css, emitted next to every stylesheet via rtlcss.

Publish jQuery/axios/lodash globals from a dedicated module so libraries that read window.jQuery load after them, switch Bootstrap and flatpickr calls to native APIs, and load Prism in manual mode (currentScript is null in a module). Drop the frontend part of the wysibb editor; the backend stays untouched.
.
docs: switch the documentation submodule to the 10.0 branch
The 10.0 branch of the documentation repository was a dead line from 2024: it
shares no history with 9.9 and predates most of the current docs. It has been
recreated from 9.9 and now carries the public document root guides; the old
branch is kept as 10.0-legacy-2024.

.gitmodules records the branch, so submodule update --remote follows 10.0
instead of the repository default.
.
refactor(core): deprecate the base path argument of Assets::urlFromPath
The base path is PUBLIC_PATH in every call site, so the argument became
optional and defaults to it. Passing it explicitly still works, which keeps
third party themes and modules building.
.
refactor(core)!: move the document root to the public directory
Everything reachable over HTTP now lives in public/, the code stays in the
repository root and is no longer served. The layout below public/ mirrors the
old one, so not a single URL changes.

The preparation landed earlier: PUBLIC_PATH switching to ROOT_PATH . 'public'
is what actually moves the application.

- nginx: root points at /app/public in both templates.
- webpack: setPublicPath('public') keeps the mix-manifest keys as /themes/...,
the build output moves under public/.
- a root .htaccess forwards requests into public/ and denies access to the code,
for Apache hosting where the document root cannot be changed.

BREAKING CHANGE: the document root must be pointed at public/. Restart php-fpm
after updating, the realpath cache holds the old paths.