🚀 Flatboard 5.8.0 "POLARIS" — Release announcement
Released: July 15, 2026 · Covers everything shipped since 5.7.2 (releases 5.7.3 → 5.8.0, codenames BEACON → POLARIS)
Flatboard 5.8.0 is the biggest update of the 5.7.x cycle: per-category permissions, unread-discussion tracking, a complete overhaul of the presence system, a smarter ban system, full 6-language parity and a long list of performance, privacy and mobile improvements.
✨ Headline features
🔐 Per-category permissions (requested in #184)
Every category now has three independent, group-based permission levels, editable in Admin → Categories:
| Level | What it controls | Default |
|---|---|---|
| Visibility | Who can see the category | Public |
| Posting | Who can reply and post in it | Everyone |
| Discussion creation | Who can start new discussions | Anyone who can post |
The levels are hierarchical, Discourse-style (create ⇒ reply ⇒ see), admins always bypass, and existing categories are unaffected. This unlocks:
- Marketplace categories — everyone browses, only verified sellers post;
- Announcement categories — staff opens threads, everyone replies;
- Private rooms — invisible outside the allowed groups (as before).
Members outside the allowed groups get a graceful read-only UI, and the server enforces the rules on every write path — including the REST API.
🔵 Unread discussions — "since your last visit"
- Threads with new activity show an unread indicator in every discussion list.
- A navbar badge counts your unread discussions in every theme.
- A per-user baseline is captured at login, so your pre-registration history is never flagged as unread.
- Read tracking now actually persists (a type bug meant opening a discussion never marked it read).
👥 Presence system, rebuilt
- 2025–2026 crawler generation detected: OAI-SearchBot, Claude-User/SearchBot, Perplexity-User, MistralAI-User, DuckAssistBot, GoogleOther, Google-Extended, Diffbot and friends no longer pollute your visitors list — and bots now display their real names instead of "Mozilla".
- Cloud/datacenter IPs (AWS, GCP, Azure, Alibaba, OVH, Hetzner…) are moved out of "anonymous visitors" and grouped under Bots; remaining visitors are grouped by subnet with a ×N badge.
- The visited page is now a clickable link in the presence lists (with strict safety rules).
- Privacy fixes: discussion titles from restricted categories no longer leak to unauthorized viewers via presence lists or RSS descriptions.
- Bots no longer inflate Analytics visits/unique-visitor counts, and referrer spam is filtered out of traffic sources.
🔨 Smarter ban system
Banning a member by account silently creates an IP ban to block re-registration — these two records are now linked: revoking or deleting the user ban cascades to its auto-created IP ban, the relationship is visible in the bans table, and deleting the account cleanly detaches the IP ban (the IP stays blocked). Covered on every deletion path, including inactive-account purges.
🌍 Internationalization
- Polish (pl) is now a fully supported language everywhere: core + all 35 plugins ship a complete
pl.json. The Polish language pack was contributed by @nononsense in thread #177. - Full key parity across the 6 locales on every core domain (main, admin, errors, emails, auth) — dozens of pre-existing gaps filled (45 keys in Portuguese admin alone).
- Previously hardcoded French strings are now translated: upload error messages (which also no longer leak server paths), admin webhooks pages, profile reaction lists, RSS feed descriptions, default reaction names, plugin descriptions in the admin list.
- Markdown tables now render even when pasted with leading indentation.
📱 Mobile & UI
- Zero horizontal scroll at 360/768/1024 px in every theme — long URLs, wide tables and oversized images are contained; guest reply banner and IPB navbar wrap properly.
- Premium theme: redesigned, more compact discussion rows (tags under the title, last-reply preview, stat mini-boxes, condensed mobile layout) and category headings with count + feed pills.
- Header refresh in all themes: avatar-only user menu with an identity block in the dropdown, direct "back to forum" icon in the admin header, consistent notification bell matching the backend.
- Discussion-view tags now render with their custom colors and icons, matching the lists.
- Post scrubber and
j/kkeyboard navigation now land at the top of the target post.
⚡ Performance
- Plugin metadata is read once per plugin at boot (~105 redundant file reads removed per request on all plugins install).
- Anonymous visitor tracking no longer scans every active visitor on each page view (single indexed query).
- Presence lists: N+1 removed, 5-second shared cache finally implemented (measured 18 ms → 3 ms).
- A dead presence-list JS layer (~10 KB shipped on every page) was removed entirely.
- Bundled plugins dropped eager
require_onceloading in favor of the PSR-4 autoloader.
🛠 Fixes worth noting
- SQLite:
no such column: auto_user_idcrash when deleting a user (missed schema bump). - Inline CSS minifier: an apostrophe inside a CSS comment could silently delete the following rules.
discussion.deletedevents now fire on every deletion path with the reply authors in the payload — so plugins like Reputation can take points back, and audit logs/webhooks see admin deletions too.- Plugin settings: re-saving a form no longer wipes stored values whose default is empty (credential fields).
- Post author stats stay accurate after moderator deletions; the online-members panel no longer shows 0 posts on SQLite.
- Orphaned
.tmp_*folders instockage/updates/are now swept automatically. - CLI:
cache:clear,user:create,categories:rebuildandwebhook:*commands actually run. - Reaction notifications now name the discussion; the notification bell hides when empty.
📦 Plugin highlights (packaged)
- FlatHome 1.0.21 (Pro) — CMS Pages admin UX overhaul: guided navigation builder with live preview, clearer content-type labels; contact form is now extensible by plugins (CAPTCHA support).
- FlatModerationExtend 1.0.11 (Pro) — bulk deletions reach the audit log; every moderation action is audited and attributed to the moderator.
- PrivateMessaging 1.1.8 (Pro) — dashboard widget finally respects the forum language.
- EasyMDE 2.3.15 (Community) — client-side image size limit aligned with the server (no more false 2 MB rejections).
- All packaged plugins now require Flatboard ≥ 5.7.0 and ship the 6 locales.
⬆️ Upgrading
Update from Admin → Tools → Updates as usual. SQLite installs are migrated automatically on the first request (schema v22). JSON installs need no migration. All changes are backward compatible — categories, permissions and plugins behave exactly as before until you configure the new options.
Full details in the CHANGELOG · Docs: Categories and Discussions page for the new permission levels.
Thanks to everyone who reported issues and requested features on the forum, several items in this release (#182, #183, #184) came straight from your feedback. 🙏
