# myflames 3.1.0 (2026-10-20)

myflames 3.1.0 is available as a desktop app for macOS on Apple Silicon and as a Python package (Python 3.7 or later).

## Release highlights

- myflames ships as a macOS desktop app for Apple Silicon, with everything it needs inside, so it runs without a Python installation.
- The new **Tuning** place scores the server's configuration and health and gives the `SET` statements to fix what it finds.
- **Server > Parameters** replaces Configuration: filter every variable, stage changes and apply up to 25 of them in one reviewed batch.
- The Query editor completes SQL as you type, and a table data browser lets you edit rows through a reviewed batch.

## New features

- Adds the myflames desktop app for macOS on Apple Silicon. It opens from Finder without a system Python, finds installed MySQL and MariaDB clients in the usual macOS locations, and keeps its data separate from the command line.
- Adds **Tuning** to the sidebar, with **Scorecard** and **Full analysis** tabs. The scorecard grades 19 checks in five weighted categories (Buffer pool and redo, Queries, Connections and threads, Tables and caches, Security), with `SET PERSIST`, `SET GLOBAL` or `SET SESSION` statements to copy and export to HTML, Markdown or JSON.
- Adds **Server > Parameters**, which replaces Configuration and works like an AWS RDS parameter group. Filter by **Modified**, **Dynamic**, **Static**, **Recommendations** or **Pending**, edit values in place, and review and apply up to 25 changes at once.
- Adds **Server > Overview > Error log**. On MySQL it reads `performance_schema.error_log`, with level and text filters, entries from the previous run and the most frequent error codes. On MariaDB it reads the log file when the server runs on the same computer.
- Adds SQL completion to the Query editor for keywords, databases, tables, columns and table aliases, from the connected server's metadata.
- Adds a table data browser. Stage row inserts, updates and deletes, review the SQL, and apply them as one batch on supported InnoDB tables. Other tables open read-only.
- Adds a read-only view of write statements in the Query editor and Top statements. For a supported write, myflames prepares the matching `SELECT` for review, so you can explain it without running the write.
- Adds full table and index lists to **Tables** and **Indexes**, with paging and CSV, HTML and PDF export.
- Adds a **Diagram | Mermaid** switch to Database diagram, with the Mermaid code beside the drawing, **Copy** and **Download .mmd**. A diagram can be rebuilt from the connected server, keeping your table positions.
- Adds a picker to **Server > Instruments** for Performance Schema features, instruments, consumers, actors and objects. Select up to 2,000 items and turn them on or off in a reviewed batch, with the option-file lines to copy.
- Adds a reviewed **Optimize table** action.
- Adds dump options to **Maintenance > Dump** (compression, chunking, rate limit and which schema objects to include) and a native folder picker. **Maintenance > Tools** links each detected tool to its official download.

## Improvements

- The workspace opens faster and handles large plans better. Views load the first time you open them, and Home and the investigation library load in pages with **Load more** and search.
- Plans charts fill the window and redraw when it or a **Compare** pane is resized. A plan with warnings opens its inspector on **Findings**, and bar chart colors show each operator's share of the plan time.
- **Compare** describes speed changes as plain ratios such as "2x faster" or "750x slower", shows each plan's total time, and explains how it matched operators between the two plans.
- **Replication** has its own place in the sidebar, with a topology diagram per channel, summary tiles for state, lag and GTID mode, and skip actions only when a channel's applier has stopped or has a failed transaction to skip.
- **Waits** shows proportion bars, and **I/O** shows summary tiles for the main server-wide InnoDB I/O rates.
- **Refresh all** in Server reads every view, including ones you have not opened yet. Each view on its own reads only while it is on screen.
- Top statements, Processlist and Locks fit next to the view list at 1440 px, and row actions such as **Show plan** and **Kill…** move into the `⋯` menu.
- The workspace uses the macOS system font, one top bar, a **Save investigation** sheet, a shared **Export** menu and a footer that shows the connection's write policy.
- Privilege notices appear in the toolbar only when an action is denied or blocked.
- Learn matches the rest of the workspace, with lesson search, a family filter, **Start learning** and the 16-lesson learning path.

## Bug fixes

- Fixed an issue where quitting the macOS app could leave its backend, or a running dump, restore or clone, running in the background.
- Fixed an issue where Maintenance went blank when a preflight check finished while another step's report was on screen.
- Fixed an issue where live captures and reports were slow on servers with many tables.
- Fixed an issue where capturing a plan from a MariaDB statement digest failed for queries with aggregate functions such as `SUM`.
- Fixed an issue where MariaDB 10.7 and earlier plans showed only the last table of a multi-table join.
- Fixed wrong row and loop counts in MariaDB plans with `UNION`, `INTERSECT` or `EXCEPT`, with joins, and with tables that never ran (shown as "not measured").
- Fixed an issue where `EXPLAIN`-only plans showed 0 instead of "not measured" for time and rows, or were taken as proof that a sort ran in memory.
- Fixed false advisor warnings about hash joins, sorts and temporary tables. Hash joins on expressions are no longer called quadratic, and a sort or temporary table is reported as spilling to disk only when the plan measured it.
- Fixed documentation links in plan findings. MySQL findings open the manual for the server's version, and MariaDB findings link to the MariaDB documentation.
- Fixed an issue where a plan with control characters in its text produced an invalid SVG. Flame graph tooltips also respond faster on large plans.
- Fixed version-specific advice in **Full analysis**, **Parameters** and **Tables** for redo log sizing, TempTable limits and MariaDB 11.2 and later.
- Fixed an issue where **Full analysis** counted unknown findings as Watch in its section summaries.
- Fixed copy and export in the Query editor and Table data. Numbers keep full `BIGINT` and `DECIMAL` precision without quotes, **Copy row as JSON** writes `NULL` as `null`, and CSV export escapes text that a spreadsheet would read as a formula.
- Fixed an issue where Parameters showed numbers in scientific notation and trimmed spaces at the start or end of string values.
- Fixed Database diagram's Mermaid export and import so special characters, column types, key markers and nullability survive the round trip.
- Fixed an issue where **Drop index** in **Server > Indexes** failed when sent to the Query editor.
- Fixed several Replication issues. Channel cards tell stopped, unknown and unjudged states apart, lag is described as a measured maximum, and **Skip** in the recovery table runs the same safety checks as the inspector.
- Fixed an issue where lock ages and waits ignored the server's time zone, and where the **Lock waiters** preset in **Mass kill** also picked sessions that only held locks.
- Fixed an issue where `SHOW FULL PROCESSLIST` failed on MariaDB servers that report a `Progress` column.
- Fixed an issue where switching servers left **Mass kill** open, or moved **Full analysis** and **Query digest** results to the new connection.
- Fixed layout, contrast and keyboard problems in the 720 x 520 minimum window, in dark mode, and with `⌘F` chart search.
- Fixed an issue where a MySQL Shell dump ran with a MySQL Shell older than the server, and where **Upgrade check** on MariaDB offered older or MySQL version numbers as targets.

## Security fixes

- **Mass kill** shows the exact `KILL` statements and the target server before it sends anything, and records cancelled runs in the Audit log.
- `SET` statements that call functions, run subqueries, assign variables or advance MariaDB sequences are treated as writes, so they go through write review and the connection's write policy.
- Turning off safe updates in the Query editor checks the saved connection policy again, and refuses the run if the connection became read-only or Production.
- Update downloads come only from myflames' GitHub releases over HTTPS, and only for the file the last update check found. Partial downloads are removed.
- Table, column and index names in `ALTER TABLE` statements that myflames builds are validated and quoted.
- The macOS app turns off the Electron options that would let another program run code inside it.

## Deprecations and removals

- The browser workspace (`myflames ui`) is deprecated in favor of the desktop app, and prints a deprecation notice when it starts.

## Packaging notes

- The macOS app is an unsigned Apple Silicon build. It includes the license notices for Electron, Chromium and Python next to myflames' own `LICENSE` and `NOTICE`.

## Additional resources

- Download the latest myflames from [myflames.io](https://myflames.io/download.html), or this version from [GitHub](https://github.com/vgrippa/myflames/releases/tag/v3.1.0)
- New to myflames? Start with the [Quickstart](https://myflames.io/docs.html?article=quickstart)
- Report a problem or ask for a feature on [GitHub Issues](https://github.com/vgrippa/myflames/issues)

Inspired by [Brendan Gregg's FlameGraph](https://github.com/brendangregg/FlameGraph) and [Tanel Poder's SQL Plan FlameGraphs](https://tanelpoder.com/posts/visualizing-sql-plan-execution-time-with-flamegraphs/).
