Repository navigation
Mullion 2.2.0 — SQL Server, Redis, Mail, Watch
Mullion 2.2.0
SQL Server, Redis, a local mail inbox, a live Laravel watcher, OPcache controls, and upgrades from the panel.
Upgrade: brew upgrade mullion (macOS) · scoop update mullion (Windows) — or, from now on, Settings → About & updates → Upgrade.
Added
-
Redis. A new Redis tab on the Database page (and
mullion redis).
On macOS it builds the latest stable Redis from the official,
checksum-verified source with the Xcode Command Line Tools; on Windows
it downloads the portable redis-windows build. It runs on
127.0.0.1:6379(changeable on the Ports page) with RDB snapshots,
a 512 MB cap and dev-friendly defaults, starts with the stack, and the
tab shows memory, keys per database, ops/sec and hit rate, with flush,
backup/restore ofdump.rdb, and the Laravel.envblock.mullion status,doctoranduninstallknow about it. -
phpRedisAdmin at
https://redis.test, opened from the Redis tab
(ormullion redis open), on any database. -
A Cache tab on the project page: the project's own Redis keys
(from its.envprefixes), value previews, delete, flush the project's
cache by prefix, a live command monitor, and "Use Redis in this
project", which edits.envafter showing the diff (the old file is
kept as.env.mullion-backup). -
OPcache controls. The PHP page has an OPcache card per version:
on/off for sites and the CLI, JIT mode and buffer, memory, max files
and timestamp validation, a Reset button, and the live hit rate,
memory and cached scripts from that version's php-fpm/php-cgi.
mullion php opcachedoes the same from the command line. New PHP
installs getrevalidate_freq=0so edits show immediately. -
Microsoft SQL Server. A new SQL Server tab on the Database page
(andmullion mssql) installs SQL Server 2025 Developer edition. On
macOS it runs as Microsoft's official container under OrbStack. If
OrbStack is missing, the tab offers to install it. On Windows it is a
nativeMULLIONinstance. It listens on127.0.0.1:1433(changeable
on the Ports page) with thesalogin and a generated password. The
tab can start and stop the server, create and drop databases, and back
up and restore.bakfiles. It also shows a Laravel.envblock, and
can enable PHP's SQL Server extension when it's missing.mullion doctorchecks OrbStack or the Windows service. -
Adminer, SQL Server's admin tool, served at
https://adminer.test
and opened on the SQL Server login (mullion adminer). -
Upgrade Mullion from the panel or
mullion upgrade. Settings has a
new About & updates section: your version, how Mullion was installed
(Homebrew, Scoop or direct download), the latest release with a
"What's new" link, and an Upgrade button that shows the upgrade's
output live. The panel checks for a new release at most every 6 hours
and marks Settings with a dot when there is one. Homebrew installs run
brew upgrade anabiiil/tap/mullion, Scoop installsscoop update mullion, and downloaded binaries fetch the release, verify its SHA-256
and swap the executable. The agent, the Windows tray and the panel
(Mullion.app included) then restart on the new version.
mullion upgrade --checkexits with 10 when an update is available. -
Pick the charset and collation when creating a database. The
Database page's create forms now offer MySQL/MariaDB character set and
collation, PostgreSQL encoding and locale, and SQL Server collation,
listed from the server itself (common ones first). "Set as default"
remembers your choice per engine, and "Reset" goes back to the
default. The database lists show each database's charset and
collation. On the command line:mullion db create --charset --collation,mullion postgres db create --encoding --localeand
mullion mssql db create --collation. MongoDB has nothing to pick, it
always stores UTF-8. -
Show a database in its admin tool. Every database row has a Show
button, and clicking a database's name does the same. MySQL opens
phpMyAdmin on that database, MongoDB opens mongo-express on it, and SQL
Server opens Adminer on it. If the tool isn't installed yet, it's set
up first. PostgreSQL offers pgAdmin, which has no way to open a given
database, or Adminer on that database when your PHP has thepgsql
extension. -
Mail: a local mail server for testing. A new Mail page (and
mullion mail) installs Mailpit, which
catches every email your apps send on127.0.0.1:1025and shows it in
an inbox — on the page (newest 50 messages, auto-refreshing, with an
unread count on the sidebar) and athttps://mail.test. The page has
copy-ready Laravel.env, nodemailer and SMTP settings; a "Send test
email" form with HTML, text and attachments (mullion mail send);
message previews with headers, source, and Mailpit's HTML and link
checks; "Delete all"; and an Upgrade button when Mailpit has a new
release. "Catch PHP mail()" points every PHP version's php.ini at
Mailpit (sendmail_path, orSMTP/smtp_porton Windows) and
restores the old values when turned off. An optional relay lets you
release a chosen message to a real inbox; nothing goes out otherwise.
Its ports (1025/8025) are on the Ports page, and Mail starts with the
stack and shows inmullion statusandmullion doctor. -
Choose when idle dev servers sleep. Settings → Frontend dev
servers sets how long a dev server may sit idle with no tab open
(default 2 minutes) and with a tab open (default 10 minutes), or
turns sleeping off. A site can override it on its Settings tab. On the
command line:mullion dev idle --no-tab 5m --with-tab 30m,--never,
--site <name>. Changes apply without restarting anything. -
A Watch tab on the project page (and
mullion watch <site>): what
a PHP site does while you use it, live, with nothing added to the
project. Off by default; data stays on this computer.- Requests & logs: every request from Caddy's access log (status,
time, size; slow ones highlighted; filters; headers and query on
click),storage/logs/*.logas it's written (multi-line entries,
colored by level), and exceptions grouped with their stack trace —
anypath:lineopens in VS Code, Cursor, PhpStorm, Zed or Sublime. - Dumps:
dump()anddd()show in Mullion instead of (or as well
as) the page. - Deep (Laravel 10–12): queries with N+1, duplicate and slow flags
and the line that ran them, jobs (including those run by Mullion's
queue workers), cache hits and misses, app events, views, HTTP client
calls, and a timeline per request.
Dumps and Deep load a small PHP file before the site's code through a
per-sitePHP_VALUEfrom Caddy — no Composer package, no php.ini
change. Secrets in headers, query strings and SQL bindings are
redacted. A dot on the project's tab flags new exceptions.
- Requests & logs: every request from Caddy's access log (status,
-
Clear the Watch tab. A Clear menu (with the data size beside it)
clears one view, everything (old lines don't come back after a reload),
or everything plus the project'sstorage/logsfiles.
mullion watch <site> clear [--logs]. -
Choose where setup exports an existing MySQL server's databases.
Whenmullion setupimports from another MySQL (Laragon, XAMPP…), it
asks where to save the export (or takes--backup-dir), checks the
folder is writable and has room, and also checks there's room for the
imported data. Large imports (10 GB+) now export each database once
instead of twice, restore database by database (a failed one doesn't
stop the rest, and the retry command is printed), and run faster.
The panel's backup-location setting uses the same checks.
Changed
- The top bar's admin-tool button follows the Database page's engine
tab: phpMyAdmin (and HeidiSQL) for MySQL, pgAdmin for PostgreSQL,
mongo-express for MongoDB and Adminer for SQL Server. It shows only on
the Database page.
Fixed
- Adding a project no longer hangs on "Linking…". The site is saved
and the panel answers at once; the slow setup (dev servers, the hosts
file's admin prompt, Caddy reload) continues in the background with
live status, and the page always leaves the busy state. - Caddy reloads are bounded: a reload gives up after 30 seconds, and
open connections get a 10-second grace period instead of holding it. - The Watch tab no longer jumps to the top of the page when you click
in it or a new exception arrives.