RaxBoard Core — Core
A new release is now available on the RaxBoard Marketplace.
Version: 1.8.9 (build 20260914)
Compatibility: RaxBoard >=1.0.0
What's new
# RaxBoard 1.8.9
Maintenance release. Fixes a fresh-install crash and a set of editor/UX issues
reported by the community, and adds AI rewriting for imported RSS items.
> **Second cut.** This build supersedes the first 1.8.9 build. Boards already on
> 1.8.9 are offered it as a normal update (the update check compares build
> numbers, not version strings) and the four items below are what they gain.
## Changed in this build
- **Thread prefixes are plain coloured text.** A prefix used to be drawn as a
filled chip — background, padding, rounded corners, and on some of the
thirteen "design styles" a border, glow or blur as well. The box competed with
the thread title beside it, so the frame is gone everywhere (thread list,
thread page, quick edit, the admin preview) and the prefix keeps the thing that
identifies it: its colour. Nothing needs to be reconfigured — every existing
prefix keeps working, and the per-prefix colour is now the text colour.
*Note:* the Padding, Border radius and Design style fields on the prefix editor
no longer affect the badge.
- **The admin now sees when an update contains security fixes.** The update
service already received that flag from the licence server and dropped it, so
every release looked routine. The dashboard notice and Admin → Update now show
a "Includes security fixes" badge — and a board that skipped a security release
is told so even when the newest release is itself routine.
- **Two English admin labels were corrupted** by an old bulk rename that ate the
word "PHP": the marketplace requirement column read "Min Placeholderp" and the
pre-update check read "Placeholderp Ok". Both are restored ("Min. PHP Version",
"PHP version compatible"). Translated boards were never affected.
## Added
- **RSS feeds can rewrite imported items with AI.** Each feed under
Admin → RSS Feeds has a new *Rewrite with AI* option, plus optional per-feed
instructions (tone, audience, output language …). When it is on — and the new
board-level switch *AI → Settings → RSS feed rewriting* is on — every imported
item is rewritten by the active AI provider into an original post (new title,
new wording, same facts) before it is published; the feed's message template
still appends the source link. The rewrite fails open: if the provider is
unavailable, rate-limited or returns an unusable answer, the item is imported
verbatim and the reason is written to the error log, so a feed never stalls.
Calls are logged under the `feed_rewrite` feature and count against the usual
AI limits. Bulk import accepts the same settings. Off by default.
## Fixed
- **Fresh install returned HTTP 500 on the very first page.** On a brand-new
unzip (before `data/config.php` exists) the installer wizard at `/install`
crashed with "Value of type null is not callable" instead of rendering: the
`$p()` phrase helper was only registered once the database-backed
PhraseService was available, but the wizard's own templates call `$p()` before
any database exists. A safe `$p()` fallback is now registered unconditionally
(mirroring the existing formatter fallbacks), so the wizard — and any pre-config
error page — renders. The full Requirements → Database → Setup → Admin flow
completes and locks the install.
- **Post editor: clicking the already-active "Write" tab wiped the message.**
The rich-text ↔ BBCode tab handler had no "already in this mode" guard, so
clicking the highlighted pencil re-rendered the editor from a stale/empty
BBCode buffer and everything typed since was lost. Re-clicking the active tab
is now a no-op. (A related dead `mode === 'source'` check that sent
source-view attachment inserts into the hidden editor is also corrected.)
- **Inserting an image put it inline, tangled with the text.** Images added via
the attach panel, the image dialog, a paste, or the GIF picker now land on
their own line with an empty paragraph after them, so the picture no longer
renders jammed against the surrounding sentence.
- **The editor did not grow with its content.** The compose/reply/edit editor
was frozen at ~160px with an inner scrollbar because it inherited each theme's
fixed `.form-control` input height. It now grows with the text (all themes),
on desktop and mobile.
- **"Newest members" showed a just-registered member as hours old.** New-member
and "joined" times could read e.g. "3 hours ago" the instant someone signed
up, because timestamps written with the database clock (UTC on most hosts)
were read back in the board's timezone. The database session clock is now
pinned to the board timezone, so written and displayed times agree.
- **Header navigation overflowed on boards with many nav items.** With add-ons
adding entries (Blog, Resources, Gallery …) the desktop primary nav ran out of
room at mid widths and its last item was pushed under the header action icons.
The nav now collapses the items that do not fit into a trailing "More" menu
(an ellipsis button; sub-menus of a collapsed item are listed inside it) and
restores them when the window widens. Themes that ship their own header markup
are not affected.
## Improved
- **Denser layout on phones (≤640px).** The login/register dialog now uses a
12px screen gutter and a compact card (the input column grows from 252px to
325px on a 390px phone); page top/bottom padding, the welcome banner, forum
rows, post author blocks and widget headers all use tighter phone padding.
Desktop spacing is unchanged. Themes with their own dialog design keep it.
## Notes
- Five new database migrations, all idempotent:
- `1081` seeds the `nav_more` phrase for every installed language that has
the header phrases and adds the localized label hook to the master header
nav (only the master header row is touched).
- `1082` adds `feeds.ai_rewrite` / `feeds.ai_rewrite_prompt`, the
`ai_feed_rewrite_enabled` option (off), the EN/TR admin phrases, and the new
controls on the RSS feed form, the bulk-import form and the AI settings page.
- `1083` adds the "Includes security fixes" phrase and the badge to the two
admin update surfaces.
- `1084` repairs the two corrupted English phrases.
- `1085` routes the classic thread-header prefix through the shared badge macro
so it, too, renders as plain coloured text.
Get it
View on the Marketplace
— Posted automatically by the RaxBoard Marketplace.