Skip to content

Releases: mixnz/mixlab

v0.0.20

Choose a tag to compare

@github-actions github-actions released this 27 Oct 18:54
Immutable release. Only release title and notes can be modified.

Installation notes

Nothing is code-signed or notarised, by design: expect SmartScreen on Windows and Gatekeeper's
"Open Anyway" on macOS. A machine with Smart App Control enforcing is not supported. On ARM64
Windows some runtimes have no build of their own and run under emulation, marked emulated in
mix runtime available.

v0.0.20

Added

  • A database or cache can move to another port: mix service set <service> --port <n>, or
    Change port… in MixLab. MixLab then offers to update the saved connections that used the old port.
  • On a Linux server, MixEngine can come back after a reboot with nobody logged in:
    mix autostart enable --at-boot, or Also start at boot in Settings → MixEngine.
  • Over SSH, mix elevation grant, mix doctor --repair and mix uninstall ask for your password
    through sudo in the same terminal, on Linux and macOS. MixLab shows the command a waiting grant needs.
    On a Mac over SSH, adding MixEngine's certificate authority still waits for the Mac's own screen,
    and mix says so before it asks.

Fixed

  • MixEngine starts with check_seconds = 0 under [updates] in config.toml. Before, it refused
    the file and would not start. enabled and check_seconds there no longer do anything, so
    MixEngine ignores any value and warns at start that the lines can be removed.
  • In MixLab, a command that crashes no longer makes every later command of its kind fail until
    you restart MixLab.
  • With two MixEngine homes on one machine, such as a release and a development build, each keeps
    its own names in the hosts file, and uninstalling one leaves the other's names, DNS routing,
    privileged helper and audit log in place.
  • On Linux, mix uninstall also takes away MixEngine's mixengine0 network link. Before, it
    stayed until the machine restarted.
  • mix doctor names the hosts entries that are missing or left over, and mix autostart status
    says when the daemon starts at boot.
  • On a headless install, mix uninstall names the one package to remove and no longer mentions
    MixLab.
  • On a Linux machine whose DNS goes past systemd-resolved, such as one running AdGuard Home or
    Pi-hole, MixEngine keeps your sites in the hosts file instead of saying wildcards work, and mix doctor says how to turn them on.
  • mix uninstall finishes in one run on a machine an earlier uninstall left with MixEngine's
    network link still in place. Before, it kept the home and had to be run a second time.
  • mix job status no longer shows a finished job stuck at 40% with its last step, mix doctor --repair names the hosts fix once, and MixLab's permission dialog lists each hosts name and only
    says what is true of that dialog.
  • On a Mac, a MixEngine started over SSH says it cannot show an administrator prompt and how to
    restart it, instead of reporting a wrong password.
  • On Ubuntu 24.04 and later, a machine without pkexec no longer says polkit is missing.
  • In MixLab, a SQL Server script with a GO line inside a string or a comment runs as the Query
    tab shows it. Before, it was cut in two at that line.
  • On macOS and Linux, Settings → Updates offers Finish as soon as you come back from the
    installer, instead of a few seconds later.
  • In MixLab, Ctrl+R (⌘R on a Mac) reloads the table, structure or result on screen again. After
    tabs had been opened or closed, it could stop doing anything.
  • Packages opens faster the first time: what is installed shows at once, and the list of
    versions to install no longer waits for each language to be downloaded one after another.
  • The MixEngine Dashboard shows its services right away after MixEngine starts. Before, the list
    waited until the disk usage had been measured, which on Windows could take twenty seconds.
  • In MixLab's terminal, saving a target that was deleted in another tab takes down the notice
    that said so. Before, it stayed beside the Update button.
  • In MixLab's Projects screen, opening one project and then another before the first had loaded
    shows the second one's runtime pins. Before, it could stay on Loading.

What's Changed

  • fix(updater): read the installed version as soon as the window is back by @haiquang9994 in #269
  • refactor(cli): split mix by command, behind a file size ratchet by @haiquang9994 in #270
  • refactor(cli): split render.rs by command by @haiquang9994 in #271
  • refactor(daemon): split rpc.rs by capability by @haiquang9994 in #272
  • refactor(daemon): split services/mod.rs by capability by @haiquang9994 in #273
  • refactor: move test modules to their own tests.rs (T207e) by @haiquang9994 in #274
  • refactor: split tests past the limit by topic (T207f) by @haiquang9994 in #275
  • refactor(desktop): split the database drivers past the limit (T207g) by @haiquang9994 in #276
  • refactor: give four definition files' capabilities a file each (T207h) by @haiquang9994 in #277
  • refactor(daemon): split the service runner and the doctor by what their methods do (T207i) by @haiquang9994 in #278
  • refactor(daemon): make serve a sequence of its startup steps (T207l) by @haiquang9994 in #279
  • refactor(desktop): split the data grid into hooks and parts (T207k) by @haiquang9994 in #280
  • refactor(core): split Error into one enum per subject (T207j) by @haiquang9994 in #281
  • perf(index): fetch index kinds in parallel and show installed packages at once by @haiquang9994 in #282
  • fix(dashboard): stop the disk usage walk from holding the service table by @haiquang9994 in #283
  • fix(config): accept any value for the retired [updates] keys by @haiquang9994 in #284
  • refactor(db): room under the size limit for seven backend files (T208e) by @haiquang9994 in #285
  • refactor(db): one command set for the SQL engines (T208f) by @haiquang9994 in #286
  • fix(desktop): no unwrap() in the window's shipped code (T208g) by @haiquang9994 in #287
  • refactor: move inline test modules to their own files (T207m) by @haiquang9994 in #288
  • refactor: split test files past 1,000 lines by topic (T207o) by @haiquang9994 in #289
  • refactor: split code past 1,000 lines by capability by @haiquang9994 in #290
  • refactor: split the files past 1,000 lines outside the root workspace by @haiquang9994 in #291
  • refactor(daemon): write the daemon's walks as named steps by @haiquang9994 in #292
  • refactor(desktop): make the window's effects depend on what they read by @haiquang9994 in #293
  • refactor(db): one statement splitter for the SQL engines by @haiquang9994 in #294
  • refactor(db): one build_where for the SQL engines by @haiquang9994 in #295
  • refactor(db): one frame for editing rows in the sqlx engines by @haiquang9994 in #296
  • feat(autostart): start the daemon at boot through the account's linger by @haiquang9994 in #297
  • test(testkit): one daemon harness for every integration suite by @haiquang9994 in #298
  • feat(elevation): raise the elevation prompt from a terminal by @haiquang9994 in #299
  • fix: one home undoes only its own, and what M34 found by @haiquang9994 in #300
  • refactor(core): keep every fetch out of the shim by @haiquang9994 in #301
  • refactor(desktop): hold form state as one value (T209f) by @haiquang9994 in #302
  • build(packaging): build the privileged helper in a cargo invocation of its own by @haiquang9994 in #303
  • refactor: remove roadmap task numbers from code by @haiquang9994 in #304
  • fix(daemon): no task outlives shutdown by @haiquang9994 in #305
  • feat(service): move a service to another port by @haiquang9994 in #306

Full Changelog: v0.0.19...v0.0.20

v0.0.19

Choose a tag to compare

@github-actions github-actions released this 10 Oct 16:56

Installation notes

Nothing is code-signed or notarised, by design: expect SmartScreen on Windows and Gatekeeper's
"Open Anyway" on macOS. A machine with Smart App Control enforcing is not supported. On ARM64
Windows some runtimes have no build of their own and run under emulation, marked emulated in
mix runtime available.

v0.0.19

Fixed

  • Composer blueprints such as Laravel and Symfony can be applied on a machine without PHP or
    Composer yet. The plan used to say they were blocked. When a command cannot run, the plan now
    names the runtime it is missing.
  • The colour theme swatches in MixLab's Settings fill their column on macOS.
  • The private key field of an SSH connection shows a proper Windows path as its example,
    C:\Users\you\.ssh\id_rsa.

What's Changed

  • fix: blueprint scaffold runtimes, macOS colour swatches, Windows key placeholder by @haiquang9994 in #266
  • fix(platform): warn once per process when a dev home is passed over by @haiquang9994 in #267
  • test(platform): prove the spared scan's child is standing before asserting it is left out by @haiquang9994 in #268

Full Changelog: v0.0.18...v0.0.19

v0.0.18

Choose a tag to compare

@github-actions github-actions released this 10 Oct 08:41

Installation notes

Nothing is code-signed or notarised, by design: expect SmartScreen on Windows and Gatekeeper's
"Open Anyway" on macOS. A machine with Smart App Control enforcing is not supported. On ARM64
Windows some runtimes have no build of their own and run under emulation, marked emulated in
mix runtime available.

v0.0.18

Fixed

  • After an update, MixLab closes the administrator dialog once the helper has been replaced,
    instead of answering Allow with "nothing is waiting for permission".

What's Changed

  • fix(elevation): close the admin dialog once the queue has been granted by @haiquang9994 in #264
  • fix(credentials): say what the store holds when a start misses one by @haiquang9994 in #265

Full Changelog: v0.0.17...v0.0.18

v0.0.17

Choose a tag to compare

@github-actions github-actions released this 09 Oct 17:37

Installation notes

Nothing is code-signed or notarised, by design: expect SmartScreen on Windows and Gatekeeper's
"Open Anyway" on macOS. A machine with Smart App Control enforcing is not supported. On ARM64
Windows some runtimes have no build of their own and run under emulation, marked emulated in
mix runtime available.

v0.0.17

Added

  • A blueprint can hold several sites. Capturing a project with more than one site writes all of
    them, and applying it makes each with its own addresses and services.
  • mix site create --from <domain> adopts one site from a mixengine.toml that lists several.
    mix project show lists the sites in the file and which ones this machine does not have yet.
  • In MixLab, a project's panel on the Projects screen lists the sites in its mixengine.toml. Add
    creates a missing one from what the file says.
  • Ruby on Windows can build gems with C extensions, such as the ones Rails needs. Install the
    devkit with mix package install msys2 <version>, or from the Ruby row in MixLab's Languages
    tab. mix runtime install ruby names the version to use.
  • mix runtime available and MixLab's Languages tab say what a release cannot do on this machine,
    such as a Windows Ruby that has no compiler.
  • On Windows on ARM, MixLab's Languages and Packages tabs mark a release that runs under
    emulation, and say so when you install it.
  • Applying a blueprint ends with what is left to run, such as npm run dev for Next.js. In MixLab,
    Run opens each one in a Terminal tab with the project's runtimes on PATH, and Save keeps a dev
    server in the Terminal's list.
  • The WordPress blueprint downloads and unpacks WordPress into the project, after you agree to it.
  • The PHP with MySQL and Static site blueprints start with a page of their own in an empty folder, and leave a cloned project's files alone.
  • Applying the Rails or Django blueprint can write the database address to the project's .env, so the site reaches the database MixEngine made.
  • Blueprints for CakePHP, CodeIgniter, Craft CMS, Statamic and Yii.
  • A Terminal target on this machine can set environment variables and folders ahead of PATH, and
    can choose what a tab does with its commands when it comes back: run them, type them, or just
    open.

Changed

  • Applying a blueprint in MixLab sets up a web server when the home has none, and opens the site
    in your browser when nothing is left to run.
  • A dialog in MixLab covers only the tab it was opened in. You can switch to another tab and come
    back to it as you left it.

Fixed

  • A runtime or package whose folder was deleted by hand now shows as missing in mix, mix doctor
    and MixLab, and installing the same version again puts it back.
  • Uninstalling a package's last version no longer leaves its empty folder behind.
  • Applying a blueprint links its site to a service that was already running on the machine, so
    starting the project starts that service too.
  • Ctrl+C stops a command in a PowerShell tab however MixLab was started.
  • Exporting a project with more than one site now writes every site into mixengine.toml, each with
    the services it uses. It used to leave all of them and their services out. Entries for sites this
    machine does not have are kept, and the export names them.

What's Changed

  • fix: two Windows races from CI run 37679651605 by @haiquang9994 in #257
  • feat(manifest): a manifest holds every site (T204) by @haiquang9994 in #258
  • fix(blueprints): every gallery blueprint ends at a working site (T205) by @haiquang9994 in #259
  • feat(blueprints): rails and django reach their database; ctrl+c in local shells (T205a-T205c) by @haiquang9994 in #260
  • feat(blueprints): a blueprint holds many sites (T204a) by @haiquang9994 in #261
  • fix(install): read the architecture from the environment when .NET answers nothing by @haiquang9994 in #263
  • feat(packages): installs whose folder is gone (T206b-T206d) by @haiquang9994 in #262

Full Changelog: v0.0.16...v0.0.17

v0.0.16

Choose a tag to compare

@github-actions github-actions released this 08 Oct 02:57

Installation notes

Nothing is code-signed or notarised, by design: expect SmartScreen on Windows and Gatekeeper's
"Open Anyway" on macOS. A machine with Smart App Control enforcing is not supported. On ARM64
Windows some runtimes have no build of their own and run under emulation, marked emulated in
mix runtime available.

v0.0.16

Added

  • MixLab's Tunnel tab shares an address on this machine on the internet, such as a dev server, through a Cloudflare quick tunnel. MixEngine is not needed.
  • On a Mac, MixLab ▸ Remove MixLab from this Mac… removes everything in one go, after showing you
    what it will undo. From a terminal, mix uninstall --package does the same.
  • On Linux, mix uninstall now tells you the command that removes the package itself.
  • SeaweedFS in Add-ons: a local S3 for the files your project stores in the cloud. Its S3 port shows on its row in Add-ons and in mix extension list.

Changed

  • A module added to a preset now appears for everyone who chose that preset. On the Database tools preset, the tray icon now opens a panel, which lists running tunnels.
  • The Add-ons screen shows the ports each add-on holds, such as Mailpit's SMTP port.
  • Starting, stopping or turning on an add-on shows that it is under way on its row, as the Dashboard does, until it has finished.
  • MixLab has a new Dashboard, a black Dark theme and ten colour themes in place of the accent colour, and shows CPU per core or for the whole machine.
  • The Add-ons screen shows an install's progress, lists each add-on once with what it is for, and opens or turns a web add-on on and off from its own row. mix extension list shows what each one is for too.
  • A site that cannot start says why, on the Sites and Add-ons screens and in mix site show, and MixEngine's starting page says where to look.
  • Mailpit's web page opens from the Add-ons screen. A Mailpit installed before this needs installing again to get the Open button.

Fixed

  • mix database credentials … | tail -1 gives the password alone again. It carried two leading
    spaces, so a script that passed it to a database client was refused.
  • A blueprint whose database account name is already taken on the server picks the next free one
    (shop-2, shop-3, …) and says so under the step, instead of stopping there.
  • A service that cannot start says why in the first sentence — the missing password, the entry
    that would not resolve — instead of "the process could not be started at all"; a database
    missing its own password names mix service reset-credential, which writes a new one.
  • A version you keep when updating no longer offers the same update again, in mix and MixLab.
  • An add-on's site, such as Adminer, opens right after it is installed or reinstalled, without restarting MixEngine.
  • phpMyAdmin starts and signs in to your database again. It was looking for the database password under an old name.
  • Uninstalling an add-on that is running, such as Mailpit, stops it first, so it can be installed again. An install also clears what an earlier failed uninstall left behind.
  • Answering mix self-update, mix elevation grant or a server switch after half a minute no
    longer fails with "the connection to the daemon failed: Broken pipe". mix reconnects on its own.
  • After an update, MixEngine starts again only the services that were running. Before, it also
    started the ones you had stopped.
  • Removing MixLab with its data now forgets every password MixEngine kept in the macOS Keychain,
    including the ones an older MixEngine or MixLab wrote. Before, those rows failed and the
    removal stopped there.

What's Changed

  • feat(extensions): an add-on works the moment it is installed (T200) by @haiquang9994 in #251
  • feat(extensions): an add-on's page, and why a site is down (T200a, T200b) by @haiquang9994 in #252
  • feat(uninstall): an uninstall path for macOS, and the .pkg update checked by hand (T88f, T182a) by @haiquang9994 in #253
  • feat(extensions): SeaweedFS as a local S3, and add-on rows that show what they are doing by @haiquang9994 in #254
  • feat(blueprints): what the removal walk found — a free account name, a start that says why, honest tests (T202) by @haiquang9994 in #255
  • feat(tunnel): share a local address on the internet from MixLab by @haiquang9994 in #256

Full Changelog: v0.0.15...v0.0.16

v0.0.15

Choose a tag to compare

@github-actions github-actions released this 06 Oct 07:52

Installation notes

Nothing is code-signed or notarised, by design: expect SmartScreen on Windows and Gatekeeper's
"Open Anyway" on macOS. A machine with Smart App Control enforcing is not supported. On ARM64
Windows some runtimes have no build of their own and run under emulation, marked emulated in
mix runtime available.

v0.0.15

Added

  • MixLab installs with one command: curl -fsSL https://mixnz.github.io/mixlab/install.sh | sh
    on macOS and Linux, irm https://mixnz.github.io/mixlab/install.ps1 | iex on Windows. It picks
    the installer for your machine and checks its signature first.
  • In MixLab, a site's ⋮ menu on the Sites screen starts it, stops it or deletes it.
  • A runtime install or a blueprint being applied can be cancelled from MixLab.
  • Domains shows the certificate each site is actually served with, and what is wrong with it.
  • Projects writes a project's mixengine.toml with one click.

Changed

  • On Windows and macOS, the Domains screen says browsers follow the system store, instead of
    "Not searched" with a Fix button that had nothing to fix.

Fixed

  • Deleting a shared site also closes the firewall rule and the local network name it was shared
    under. Before, they stayed until MixEngine next started.
  • Icon sizes in the tables of Sites, Domains, Packages and Add-ons now match Dashboard and Projects.

What's Changed

Full Changelog: v0.0.14...v0.0.15

v0.0.14

Choose a tag to compare

@github-actions github-actions released this 05 Oct 12:35

Installation notes

Nothing is code-signed or notarised, by design: expect SmartScreen on Windows and Gatekeeper's
"Open Anyway" on macOS. A machine with Smart App Control enforcing is not supported. On ARM64
Windows some runtimes have no build of their own and run under emulation, marked emulated in
mix runtime available.

An update reaches MixLab only where it is installed beside the command-line programs. A macOS
.pkg install keeps MixLab in /Applications, where no update reaches it: run the new .pkg to
update the window there.

v0.0.14

Added

  • MixEngine runs databases on a Linux server with no desktop: mix daemon credential-store home
    keeps that home's passwords in a file only your account can read.
  • Available versions are listed one row per version series, with older patches one click away.
  • An installed runtime or server updates to the newest patch of its series, and its sites,
    settings and pins move with it (mix runtime upgrade, mix package upgrade, and Update in
    MixLab).

Changed

  • MixEngine checks for new versions with one small request, and downloads the version list only
    for the runtimes and servers it is asked about, and only when they change.
  • When part of the version list cannot be read, the rest is still listed, and mix and MixLab
    say which runtime or server is missing.
  • MixLab no longer calls itself MixDB anywhere: not in its messages in a terminal, and not in the
    names of the temporary tables it creates while it changes a table. Your theme, language, modules
    and open tabs carry over.
  • Switching between light and dark in Settings fades from one to the other instead of flashing.
  • Languages and Packages list the newest version of each first, both what is installed and what
    you can download.
  • MixLab is about half its old size on Linux and macOS, and a third smaller on Windows.
  • On Linux and macOS, mix and the helper programs beside it are about a fifth smaller.
  • On Linux and macOS, the MixEngine daemon is about a sixth smaller.

Fixed

  • MixEngine's screens show that they are loading while they wait for MixEngine's answer, instead
    of saying there is nothing there or showing a blank page.
  • On macOS, the first launch of a new version asks for your Keychain password once instead of
    twice. A connection MixEngine handed over reads its password when you press Connect, and a tab
    left connected to one opens on its form.
  • Starting a database whose password is in the Keychain no longer fails while macOS is still asking
    you to allow it. The service waits for your answer, then starts.

What's Changed

  • feat: show one row per version line and update within a line (T193) by @haiquang9994 in #239
  • feat: keep a headless home's credentials in a file (T194) by @haiquang9994 in #240
  • feat(index): read the package index as schema 2 (T196) by @haiquang9994 in #241
  • perf(desktop): build the window's release profile for size by @haiquang9994 in #242
  • perf(desktop): strip the window's symbols and macOS exports by @haiquang9994 in #243
  • perf(build): strip the symbols of mix, the shim and the helper by @haiquang9994 in #244
  • feat(crash): record frames as offsets and keep the daemon's symbols beside the release (T91a) by @haiquang9994 in #245
  • build(macos): sign MixLab.app ad-hoc as a bundle by @haiquang9994 in #246
  • fix(secrets): a launch touches one Keychain item by @haiquang9994 in #247

Full Changelog: v0.0.13...v0.0.14

v0.0.13

Choose a tag to compare

@github-actions github-actions released this 29 Sep 12:51

Installation notes

Nothing is code-signed or notarised, by design: expect SmartScreen on Windows and Gatekeeper's
"Open Anyway" on macOS. A machine with Smart App Control enforcing is not supported. On ARM64
Windows some runtimes have no build of their own and run under emulation, marked emulated in
mix runtime available.

v0.0.13

Changed

  • MixLab keeps running in the tray when you close its window, whichever modules you use, so open
    terminal sessions and connections survive. Quit from the tray icon's menu. The switch that opens
    MixLab at login is now in Settings → General.
  • Messages in MixLab, in mix and in the handbook read more plainly, in English and Vietnamese.

Fixed

  • The tray panel no longer leaves a dim rectangle over the desktop around its edges.
  • With no project yet, the new-site form sends you to the Projects screen instead of to
    mix project add, a command that does not exist.
  • The handbook's troubleshooting page gives the right form of mix runtime uninstall and
    mix package uninstall.

What's Changed

  • feat(tray): make the tray MixLab's, with modules lending the panel a section by @haiquang9994 in #238

Full Changelog: v0.0.12...v0.0.13

v0.0.12

Choose a tag to compare

@github-actions github-actions released this 29 Sep 05:29

Installation notes

Nothing is code-signed or notarised, by design: expect SmartScreen on Windows and Gatekeeper's
"Open Anyway" on macOS. A machine with Smart App Control enforcing is not supported. On ARM64
Windows some runtimes have no build of their own and run under emulation, marked emulated in
mix runtime available.

v0.0.12

Fixed

  • After installing an update on Windows, MixLab restarts on the new version even when MixEngine
    does not come back. It no longer stays open on the old version and fails the next try with
    Access is denied.
  • An update starts again only the services that were running before it, not every service
    MixEngine knows.

Full Changelog: v0.0.11...v0.0.12

v0.0.11

Choose a tag to compare

@github-actions github-actions released this 29 Sep 03:17

Installation notes

Nothing is code-signed or notarised, by design: expect SmartScreen on Windows and Gatekeeper's
"Open Anyway" on macOS. A machine with Smart App Control enforcing is not supported. On ARM64
Windows some runtimes have no build of their own and run under emulation, marked emulated in
mix runtime available.

v0.0.11

Changed

  • MixEngine uses less CPU while nothing is happening: it no longer rewrites every service's
    configuration every thirty seconds to check what is idle, and it checks that MySQL, MariaDB and
    Redis are healthy without starting a program every ten seconds.
  • CPU in the tray, the Dashboard, the Metrics screen and mix metrics is now a share of the whole
    machine, as in Task Manager, and no longer jumps from one second to the next.
  • When a new version is offered, Read the release notes opens the release page in your browser,
    instead of listing the commits that went into it.

Fixed

  • On Windows, MixLab and mix write every path with backslashes. Paths such as
    C:\Users\you\blog/public no longer mix the two separators.
  • MixLab and mix service adopt no longer list a MySQL or MariaDB temporary folder as an
    unfinished database every time MixEngine starts.

What's Changed

  • perf(platform): a metrics reading on Windows does not list the machine by @haiquang9994 in #233
  • fix(updates): link to the release page instead of listing commits by @haiquang9994 in #234
  • fix: spell every path the way this system spells one (T191) by @haiquang9994 in #235
  • perf(services): the idle sweep does not render to look by @haiquang9994 in #236
  • feat(metrics): CPU is shown the way Task Manager shows it by @haiquang9994 in #237

Full Changelog: v0.0.10...v0.0.11