10.0.0-alpha-5
Pre-release
Pre-release
·
2 commits
to main
since this release
Phorum has been fully rewritten from the ground up — and yet, if you're running Phorum 6 today, you can upgrade in place. The database schema is unchanged and fully compatible. Same tables, same columns, same data. What's changed is everything around it.
(If you're still on Phorum 5.x, you'll need to upgrade to Phorum 6 first before moving to Phorum 10.)
In this version:
Added
- Content & posting
- Preview option when posting or editing a message, and when composing a private message — renders the submitted content as a real message card without persisting anything.
- Autolinking of bare URLs and email addresses in message bodies (Markdown, BBCode, and the plain-text fallback).
- Pagination for flat (non-threaded) thread reading, matching the existing forum thread-list pagination.
- Attachments & media
- Per-forum attachment settings (max count, max size per file, max total size, allowed extensions) and a site-wide upload on/off toggle.
- Image previews with a click-to-enlarge lightbox for image attachments.
- Video attachment thumbnails with inline lightbox playback (HTTP Range/seek support).
- Per-forum "View attachments" permission bit, independent of read access.
- S3-backed file storage module (
mods/s3storage) for attachments and avatars. - CDN module (
mods/cdn) for serving attachment/avatar links from a configurable CDN domain.
- Moderation & trust and safety
- Shadow banning: a shadow-banned user's posts stay visible only to themselves.
- Configurable minimum account age for new-post auto-moderation.
- Karma-threshold auto-moderation, based on a user's moderator-deleted-post ratio.
- Sticky/unsticky thread moderation action.
- Reporter identity now shown in the moderation reports queue.
- Poster IP address shown to moderators, gated by a per-forum toggle.
- Admin UI for granting per-user, per-forum permission overrides (the resolution logic already existed; there was no way to create one).
- Accounts & permissions
- Site-wide pending-registration approval queue and moderator tools (
ALLOW_MODERATE_USERS), including a proper 5-state account-status selector in the admin user editor. - Self-service group join/leave, and a group-moderator review panel for approving/rejecting/suspending members (group moderators still can't grant Moderator status themselves).
- Per-user language and theme override, alongside the existing site-wide defaults and per-forum theme override.
- Per-user timezone-aware date/time display (
tz_offset+is_dst). - "Continue Browsing: {forum}" shortcut on your own profile, linking back to whichever forum you most recently viewed.
- Site-wide pending-registration approval queue and moderator tools (
- Subscriptions & notifications
- Default follow-on-post preference (
email_notify) — auto-subscribes you to a thread the moment you start or reply to it. - Forum-wide ("follow this whole forum") subscriptions, alongside existing per-thread following.
- Default follow-on-post preference (
- Extensibility
- Outgoing webhooks module (
mods/webhooks): signed JSON or custom Twig-templated payloads on post/registration/ban/shadow-ban events. - OAuth login via Google and GitHub (
mods/oauth). - Generic module support for contributing routes (
mods/{name}/routes.php) and database schema (mods/{name}/mysql.sql), not just the bundled modules.
- Outgoing webhooks module (
- Six per-forum presentation/behavior toggles wired up (previously stored but inert, and with no admin control):
edit_post,allow_email_notify,count_views,count_views_per_thread,float_to_top,check_duplicate. - Documentation:
FEATURES.md, a categorized inventory of implemented capabilities with a tracked "Known Gaps" list.
Changed
- Outbound mail (SMTP host/port/credentials) configuration now lives only in
etc/phorum.php; removed from the admin panel, where
it never actually took effect. - Site Name is now genuinely database-backed (previously saved but never read back). Base URL was removed from the admin panel —
it stays config-file-only, alongsidebase_path. - "Powered by Phorum" footer text links to phorum.org.
- RSS button reordered to appear before the Moderat pages.
- Images in message bodies are constrained to their container width (Markdown/BBCode rendering and feed output).
- Moderate dropdown repositions itself to stay on-sedges.
Fixed
users.threaded_read— the account settings chec but nothing ever read it back; it's now honored when the forum's own default is flat.- Sticky threads sorted to the end of the forum lisrted
sortordering). ->activetruthiness checks across the codebase (permissions, login, session restore, password reset, impersonation, buddy/PM
actions) incorrectly treated pending (negative) accplaced with strict comparisons.- Non-functional "threaded thread list" checkboxes removed from forum/user settings (saved but never consumed by anything).
- Empty message-footer bar no longer renders when nte links apply.
- Attachments (including S3-backed ones) are now actually deleted when their message or thread is deleted — previously orphaned
permanently. - Unstyled helper text under admin settings checkboxes.
- Reports queue no longer silently renders broken/ed message that's since been deleted (a Twig
isdefined-vs-is not nullbug). - Forum-wide subscribers' one-click unsubscribe/boon emails previously pointed at the wrong(thread-specific) endpoint and would have silently failed; they now target whichever subscription actually matched.
symfony/filesystempinned to^7.4so Composern requiring PHP 8.4+.
Internationalization
- Synced all 13 fully-translated locale files with out of sync with
en.php, and added a standingproject requirement to keep every locale in sync whenever English strings change.