- Double-clicking the right-hand part of a wide elided or scrolling matrix now opens the matrix viewer, too; before, only a click near its left edge did. The matrix's tooltip was missing there for the same reason.
- A .mac file opened in wxMaxima and saved again keeps its comments as they were: a comment containing
& or a nested /* ... */ is no longer changed on the way through, and a nested comment is now read as one comment, the way Maxima reads it. Only a text cell that Maxima couldn't read back as one comment still has its / next to a * written as /. A heading containing */ can no longer end its comment early and turn the rest of its text into code when the .mac file is loaded into Maxima (#2353).
with_slider_draw(..., file_name="name") no longer deletes name.gif right after showing it in the worksheet (#2389).
- wxMaxima now needs wxWidgets 3.2 or newer to compile. With wxWidgets 3.0.5, the last 3.0 release, wxMaxima started but never got a working connection to Maxima (#2301). Ubuntu 22.04 only ships wxWidgets 3.0, so the release no longer includes a .deb for it; the .deb for Ubuntu 24.04 replaces it.
- Compiling wxMaxima needs a compiler with good C++20 support: GCC 12 or newer (the one Debian 12 ships), or a similarly recent Clang or MSVC. Every Linux distribution that packages wxWidgets 3.2 has one.
- Dragging a rectangle across several entries of a matrix now selects just that block of entries instead of the whole matrix, and highlights it. Every "Copy ..." command – Copy, plain text, LaTeX, Octave/Matlab, MathML, RTF, image and SVG – then copies only that sub-matrix (#2345).
- A cell's output can now be reached with the keyboard: Down at the end of a cell's input selects its first result, further presses step through the results one at a time, and Up walks back into the input. Once a result is selected, the Menu key or Shift+F10 opens the same menu a right-click does, so it can be copied in any format. On Windows, screen readers announce the selected result (#2382). Anyone who prefers the old behaviour, where Down went straight on to the next cell, can switch it back with "Up/Down keys skip over output" in the Worksheet tab of the configuration dialog.
- A selected block of a matrix's entries can be grown or shrunk with Shift+arrow keys: each press moves the block's far corner – the one the drag ended at – by one entry. A run of left-out rows or columns counts as one step. Grown to the whole matrix, the block becomes an ordinary selection of the matrix, which Shift+arrow keys can shrink again (#2370).
- "Copy as HTML" now copies only what is selected when the selection is part of a cell's output – a result, a sub-expression or a block of a matrix's entries – instead of the whole cell (#2369).
- In a matrix shown with scrollbars, moving a selected block's corner with Shift+arrow keys now scrolls the matrix along, so the corner stays in view (#2380).
- A matrix, or a block of one, can be copied as CSV from the right-click menu, to paste it into a spreadsheet: one line per row, the values separated by commas, or by tabs where numbers are written with a decimal comma (#2364).
- New function
with_slider_draw_bare, which works like with_slider_draw but makes each frame of the animation with a plain draw() instead of draw2d(). A frame can therefore show several gr2d() and gr3d() scenes side by side, and use draw's global options like columns.
with_slider_draw_bare now accepts file_name, like with_slider_draw, and saves the animation as a gif file. wxMaxima assembles the gif from the frames, since draw can't make one out of frames with several scenes (#2361).
- New function
wx_version_min("26.09.0"), which returns true if the running wxMaxima is at least that version, so a worksheet can check whether it can use a feature. In wxMaxima 26.08.0 and older the function doesn't exist and the call returns itself unevaluated; comparing the result with true handles that, too.
- Hovering the mouse over a matrix now shows which entry it is over, as "Row 2, column 3", numbered like
M[2,3]. This makes it easier to find your way around a large matrix, including one whose middle rows or columns are left out or that scrolls. In a matrix of matrices the row and column of the outer matrix are shown.
wx_matrix() now only returns the formatted matrix instead of also displaying it, so wx_matrix(M); shows the matrix once, not twice, and wx_matrix(M)$ doesn't show it at all. The formatting stays with that value: F: wx_matrix(M, lines=true)$ followed by F; shows F formatted, while a result calculated from it, like F+1, is shown the normal way.
- Closing the diff viewer no longer resets settings that were changed in the main window while it was open (#2356).
- Output arriving from Maxima no longer pushes the cursor down the screen. If the cursor is visible and output is appended to a cell above it, the worksheet now scrolls along by exactly as much, so the line being read or typed in stays where it was and the new output grows upwards instead. The worksheet can only scroll in steps of several pixels; to make this exact its top margin varies by up to one such step.
- Double-clicking a matrix that is too large for the window, and therefore shown with its middle rows and columns left out or in a scrolling box, opens a window that shows all of it. That window can be resized, several can be open at once, and Escape closes it. The tooltip of such a matrix now mentions this.
wx_matrix() has a new option, oversized=full, oversized=elide or oversized=scroll, that decides how that one matrix is shown if it is too large for the window, whatever the configuration says for all the others. The choice is saved with the worksheet. Exporting the matrix as an image still always shows all of it.
- Opening Options no longer asks for the keyring's password. The AI Chat tab used to read every stored API key just to fill its masked key fields, and to write them all back on OK; it now never reads them. A key field starts empty and means "keep the stored key", typing a new key replaces it, and "Forget the stored key" deletes it. Only "Fetch models" still reads the key, since the provider wants it for that request.
- The vertical scrollbar of a matrix too large for the window no longer blinks when the pointer is over it, and can be dragged again. The matrix starts to the right of its group cell, behind the width of the label column, so the cell did not reach as far right as the scrollbar; a repaint of just the scrollbar (which moving the pointer onto it causes, on Wayland at least) then skipped the matrix, and a matrix that isn't drawn where it was is taken to be gone, scrollbars and all.
- DeepSeek and OpenRouter are now built-in AI Chat providers. Both need only an API key, pasted into Options -> AI Chat, and each has a link there to where that key is made. OpenRouter passes a request on to one of many other providers' models, chosen by name ("anthropic/claude-sonnet-5", ...), or picks one itself with the preset "openrouter/auto"; DeepSeek starts with its general "deepseek-chat" model, and its "deepseek-reasoner" can be picked instead, in which case the chat shows its answer, not its reasoning.
- A matrix too large for the window no longer widens the whole worksheet. Instead its middle rows and columns are left out and the gap is marked with ⋯ ⋮ ⋱, the way a large matrix is written by hand: the first and last rows and columns always stay in view, and hovering over the matrix tells which ones are not shown. The matrix is elided to fit the window, re-elided whenever the window is resized, and elided to fit the page when printed. Nothing is lost by it: copying, saving and exporting the matrix always include every entry. This is a change of the default: the old behaviour is still available as "Show them in full" under Options -> Worksheet -> "Matrices too large for the window".
- The same setting can instead show such a matrix in a window-sized box with its own, native scrollbars, the way a spreadsheet does. Only the matrix scrolls: the mouse wheel still scrolls the worksheet, so a matrix never traps it, and the scrollbars never take the keyboard focus away from the worksheet. A matrix shown this way is printed with its middle rows and columns left out, since paper cannot scroll. A matrix inside another one never gets scrollbars of its own: the outer one scrolls over both.
- A matrix too large for the window, whether elided or scrolling, has every other row and column very faintly shaded, so the eye can follow a row or a column across it. A matrix that fits the window stays plain.
- The AI chat now scrolls to an answer when it arrives, instead of leaving it below the bottom edge of the transcript for anything longer than a line or two.
- The AI chat has an Interrupt button. It is greyed out until there is something to interrupt, and stopping a request that way is recorded as what it is – the transcript says the request was interrupted, and the status bar's AI icon doesn't go red over it.
- Translatable strings now reach translators without waiting for whoever added them to remember to regenerate the catalogue: a weekly job refreshes it, and refuses to commit anything if the regeneration would silently drop strings.
- A custom AI provider can now sit behind HTTP Basic authentication, which is what Ollama's own documentation recommends for an instance reachable from beyond localhost. Fill in the new Username field in Options -> AI Chat and the credential below it is sent as the Basic password rather than as an API key – the field relabels itself to say so. Leaving the username empty keeps every provider behaving exactly as before.
- An AI tool connected to wxMaxima's MCP server can now ask which sidebars are on screen and show or hide them, so it can open the Variables pane before talking about variables, or clear a sidebar out of the way, instead of asking you to do it. Like every other MCP tool it cannot touch the worksheet itself: it changes which panes are visible and nothing else, and it refuses to hide the worksheet.
- Building the unit tests with
-DCMAKE_UNITY_BUILD=ON works again. One of the test harness's stub files has to be compiled on its own, and merging it with a test that defines the same function differently made the compiler refuse the whole translation unit.
- The AI Chat settings now offer a model to pick instead of only a name to type: a "Fetch models" button beside the Model field asks the provider which models it currently has and fills the field's dropdown with them. Nothing is fetched unless that button is pressed – most of these providers want an API key for the request, and merely selecting a provider shouldn't send them one. The field stays a text field as well, so a model the provider doesn't advertise – a fine-tune, a preview, or whatever a local server was started with – can still simply be typed, and a provider that offers no such list, or can't be reached, works exactly as before.
- The AI chat sidebar's status bar icon and its connection monitor now actually exist. Neither was reachable: the status bar was never told to reserve the field the AI icon lives in, so the icon was never created and every attempt to update it was silently discarded; the connection monitor was never constructed at all, had no sidebar entry in View -> Sidebars and no pane for the AI icon's double-click to toggle; and the chat sidebar was never handed either of them, so it had nowhere to report to even once they existed. The AI icon now shows whether a provider is configured, busy or in error, a click on it opens the chat, a double-click opens the connection monitor, and that monitor shows the requests wxMaxima sends and the replies it gets back.
- Clicking the AI status icon no longer does nothing: the single-click and right-click handlers tested whether a system secret store was available and then gave up if it was, which is precisely the case in which there is an AI chat sidebar to open.
- Compiling wxMaxima is about a third faster. Precompiled headers are now switched on by default – and, more to the point, they now actually do something: the option to enable them has existed for years, but the header it precompiled was empty, so turning it on changed nothing at all.
- Batch runs (
--batch) no longer occasionally hand the worksheet's first command to a Maxima that isn't listening yet. Opening the file restarts Maxima, and on a loaded machine the replacement could still be starting up when wxMaxima began sending it the document – the first command was then lost, and everything after it was read as the answer to the wrong question, so the run aborted somewhere in the middle for no visible reason. wxMaxima now waits for the new Maxima to announce itself before sending it anything. The same fix stops batch runs from occasionally skipping a statement later in the file, which could otherwise produce a wrong result with no error at all (#2196).
- Opening a file no longer starts Maxima twice. wxMaxima starts a Maxima as soon as it comes up, so that it is ready by the time you send off your first cell; when a file was named on the command line or double-clicked, that process was started in the wrong directory, thrown away again a moment later and replaced. Starting a worksheet this way is now about two seconds faster, and only one Maxima is ever launched.
- Windows:
wxmaxima --logtostderr ... 2>&1 no longer loses everything that wxMaxima writes to stderr. Whenever the shell pointed stdout and stderr at the same place – which is what 2>&1 does, and what a pipe to more or findstr usually involves – wxMaxima closed that destination while setting up the first of the two streams, so the second one silently went nowhere. The log output was never written rather than merely misplaced, which is what made it look as though --logtostderr had had no effect.
- Builds no longer redo work that is already done: the step that copies each translation into the build tree, so that ./wxmaxima-local finds it without installing, ran once per language on every single build – 50 file copies even when nothing at all had changed, which is why a rebuild never reported having nothing to do. It now runs only for the translations that actually changed. Nothing about the result differs: the same files are produced in the same places.
- Added wxmaxima-cli.exe on Windows: a small console program that starts wxMaxima, hands it the console's own input and output, waits for it and returns its exit code.
--version, --help and --batch only behave like a normal command-line tool when invoked through it. Windows fixes an executable's "subsystem" in the program file at link time, and cmd.exe does not wait for a graphical program: run wxmaxima.exe --version directly and the prompt comes back before the version has been printed. Nothing about the graphical wxMaxima changes; on Linux and macOS, where no such distinction exists, nothing changes either.
- Windows releases now also offer a .zip alongside the installer (GH #2298). Unpack it wherever you like – including a USB stick or a directory in your home folder – and run bin/wxmaxima.exe from there: no installation and no administrator rights. The installer still needs them, because it writes to Program Files and registers file associations for all users, and it remains the recommended choice where that is possible. The .zip contains exactly the same program and data files; what it does not do is register file associations or create Start Menu entries.
- AI Chat failures now show what the provider actually said. A failed request can still carry a real HTTP response, and its body is where the provider explains itself – so an unrecognised model id, which Anthropic answers with a bare HTTP 404, used to reach the user as an unexplained "could not reach Anthropic", for a request that had in fact reached it perfectly well.
- Updated the default Anthropic model, which had gone stale. An existing configuration keeps whatever model it already has: change it under Options -> AI Chat, or use "Revert all to defaults".
- The AI Chat sidebar no longer repeats the same "this provider's settings
need fixing" message into the conversation each time Options is closed.
- Fixed wxMaxima discarding the worksheet's stored window layout when reading a configuration written by an older version. Those versions recorded the worksheet pane at a dock row wxAUI considers invalid for a centre pane, and wxAUI does not merely complain: LoadPerspective() drops such a pane's stored geometry entirely. On a wxWidgets built with assertions enabled it aborted wxMaxima on startup instead. The stored layout is now repaired before wxAUI ever sees it.
- Fixed every wrapping paragraph in the Options dialog rendering as nothing: the AI Chat tab's introduction, its note about an API key being billed separately from a chat subscription, and the "OpenAI-compatible
covers most third-party APIs" hint in the Add-custom-provider dialog were all invisible. WrappingStaticText re-wrapped its text on every size event, which changed the size it asked for, which produced another size event – a loop that settled on the text not being wrapped at all, as a single long line in a much narrower panel. It now wraps only when the width it is given actually changes, and measures the wrapped text itself rather than asking wxStaticText, which on GTK deliberately reports the size the text would have if it were not wrapped.
- Fixed the two links on the Options dialog's AI Chat tab ("Get an API
key for ..." and "See current models for ...") being drawn on top of each other, above the fields they belong under, instead of stacked below them. They are created hidden – their real text isn't known until a provider is picked – and a hidden sizer item is never given a position, so nothing ever positioned them once shown: the code laid out the dialog rather than the tab they live on.
- Added the wxMaxima half of a protocol for asynchronous ("background
job") output, ready for a future Maxima that can run a command in the background. wxMaxima now tells Maxima which cell it is currently evaluating, and understands output that names the cell it belongs to – so a job's result lands on the cell that started it rather than on whichever cell happens to be current minutes later. A background job cannot ask questions (it is refused with a message on its own cell instead of hijacking another cell's prompt), its output cannot be interleaved with another job's, and output naming a cell that no longer exists is discarded. Nothing changes in a normal session: today's Maxima never sends such output. See Doxygen/AsyncMaximaOutput.md.
- Fixed a custom AI provider silently changing its own wire format: the "API style" dropdown lists "OpenAI-compatible" first, but the code that filled it in used the raw enum value as the selection index, so a freshly added OpenAI-compatible provider (e.g. a local Ollama server) was shown – and then, on the next save, genuinely stored – as an Anthropic-style one.
- A custom AI provider no longer requires an API key. A local AI server (Ollama, LM Studio, llama.cpp server) has nothing to authenticate to and normally has no key at all, but the sidebar refused to use such an entry and reported "No AI provider configured" instead. With no key, no credential header is sent at all rather than an empty one.
- AI Chat network failures now say what actually went wrong ("could not
connect to server", "could not resolve host", a TLS error, ...) instead of a bare "network error" that gave the user nothing to act on.
- The "Add custom AI provider" dialog now rejects a request URL with no
http:// or https:// scheme in front of it, and the AI Chat sidebar explains the problem instead of attempting the request, rather than letting a natural-looking but unusable "127.0.0.1:11434" through to fail later as an unexplained network error.
- Added a third status bar icon for the AI Chat sidebar (next to the existing Maxima/network status icons): hidden when no AI provider is configured, shown with a distinct icon while a request is in flight, on success, and on failure (with the error in the tooltip). Single-click brings the AI Chat sidebar to the front; double-click opens a new AI Connection Monitor sidebar showing the raw request/response traffic (View -> Sidebars); right-click offers a small menu (open the chat, open Options, clear the conversation). If a request takes longer than usual, the status text and icon tooltip say so, mirroring how a long Maxima calculation is already shown.
- Fixed the AI Chat sidebar being silently compiled out of every build regardless of the WXM_USE_AI_TOOLS option's value: the option was never actually passed to the C++ preprocessor, so every #if(WXM_USE_AI_TOOLS) guard evaluated false unconditionally, and a separate CMake source-list bug meant AiChatSidebar.cpp was never compiled in even when the option was fixed. Now wired through BuildConfig.h like the project's other optional features (e.g. USE_FRIBIDI).
- Added an optional MCP (Model Context Protocol) server that lets an external AI tool read the current worksheet as context: list/read cells, read the table of contents, read a whole section by heading, read the whole worksheet, and read/add/remove entries in the Variables sidebar's watchlist. Off by default; enable it in Options and it only ever listens on this machine (127.0.0.1). It cannot insert, edit or evaluate anything in the worksheet – every tool only reads, except adding/removing a variable from the watchlist, which only changes what that sidebar displays, the same as typing a name into it by hand.
- Added an MCP search_cells tool that finds every cell whose input and/or output contains a given plain-text or regular-expression pattern, so an AI can jump straight to the relevant cell(s) of a large worksheet instead of reading it all.
- Added an MCP evaluation_status tool that reports whether Maxima is actively evaluating a command right now, which cell, the exact statement within that cell currently running (a cell can hold several $/;-separated statements), and how many milliseconds that specific statement has been running.
- MCP's watch_variable now reports maxima_busy in its own response, so an AI adding a watch no longer needs a separate read_variables call just to learn that Maxima is still busy and the value isn't available yet.
- MCP's read_variables, watch_variable and evaluation_status now report maxima_connected, so an AI can tell "Maxima isn't running at all" apart from "Maxima is running and genuinely idle" – previously both cases looked identical (maxima_busy/evaluating both false).
- Added GitHub Models as a fifth built-in AI Chat provider – GitHub's own official, OpenAI-compatible model-hosting API, authenticated with a plain GitHub personal access token. (This is a deliberately different thing from "GitHub Copilot Chat", which has no sanctioned third-party API and was not added.)
- The MCP server and AI Chat sidebar's worksheet context now tell an AI where the user's cursor is and which cell (if any) has an error, so it can actually answer "what's wrong with my current cell" or "the cell
above the cursor" – both were previously invisible to it. Also capped how much of a single cell's output can dominate a response (a huge matrix or list no longer crowds out every other cell), with a way to ask for just a preview or specifically the end of a long output, and made read_variables report when Maxima is still busy so an empty value isn't mistaken for "undefined" when it's really just "not answered yet."
- Options -> AI Chat now links directly to each provider's own page for getting an API key, and the AI Chat sidebar itself shows an "Open
Options..." button whenever none is configured yet.
- The AI Chat and Accessibility tabs in Options no longer share a generic icon with an unrelated tab – both now have their own. Options -> AI Chat also gained a note explaining that an API key is billed separately from a consumer chat subscription (a Claude Pro/Max, ChatGPT Plus or Gemini Advanced plan does not include API usage), since a provider's site asking for prepaid credit before it hands out a key can otherwise look like a mistake.
- Options -> AI Chat redesigned: instead of all four providers' key/model fields shown stacked at once, a single "Active provider" dropdown now shows only the selected one's own fields. You can also add any number of your own custom providers (a name, an API style – OpenAI-compatible, Anthropic, or Google Gemini – a request URL and a model), which covers most third-party and self-hosted endpoints (OpenRouter, Groq, a local Ollama server, a proxy in front of one of the big three, ...) without needing built-in support for each one by name.
- Adding a custom AI provider now offers a "Quick fill" shortcut for a few well-known local AI servers (Ollama, LM Studio, llama.cpp server) that pre-fills the URL/model fields with that server's usual defaults – still a plain custom provider afterward, and every field stays editable.
- AI provider API keys are now stored in the operating system's own secret store (the same keyring Windows/macOS/most Linux desktops already use for other apps' passwords) instead of in wxMaxima's own plain-text settings file; a key saved by an older version is moved into the secret store automatically the first time you start this version. On a system with no such secret store available at all, the AI Chat tab, sidebar and menu entry are hidden entirely rather than falling back to storing a key in plain text.
- Added an "AI Chat" sidebar (View -> Sidebars -> AI Chat) that lets you chat about the current worksheet with Anthropic, OpenAI, Google Gemini or Qwen, using your own API key (configured in Options -> AI Chat). It sends a read-only snapshot of the worksheet as context; it cannot edit, evaluate or otherwise change the worksheet itself.
- Made the GUI-subsystem binary's stdout/stderr redirection (
RedirectStdioToParent()) use _dup2() to repoint the existing stream's descriptor instead of a shallow struct-copy over a second, throwaway FILE* – the standard, documented way to do this, regardless of the item below. This does not fix the wxmaxima_version_string CI failure on the Windows runner: that was the working theory, but the next CI run reproduced the exact same failure on this change, and a follow-up Wine-based test confirmed both the old and new code deliver a GUI-subsystem process's piped stdout correctly in isolation. That failure remains open; see AGENTS.md for what's been ruled out and the most promising remaining lead.
- Added a system tray/notification-area icon (GH #2286) that mirrors wxMaxima's busy status – the same information the status bar's own icon and, on Windows, the taskbar button's progress overlay already show – and offers a small quick-access menu (Interrupt, Show wxMaxima, Exit). Uses the portable
wxTaskBarIcon, so it works on any platform wxWidgets supports it on; on GTK/Linux specifically it only renders as a genuinely visible icon when the linked wxWidgets was itself built with AppIndicator/Ayatana support, a property of the wxWidgets package wxMaxima links against, not something wxMaxima's own build controls.
- Fixed a security issue (GH #1907): a crafted
.wxm file could execute arbitrary Maxima code as soon as it was opened or load()/batch()ed by plain Maxima, without the user ever running anything themselves. A title/section/subsection/heading/text-cell's .wxm marker opens a /* ... */ comment that stays open across the entire cell content, only closing at the end marker's own trailing */ – so a literal */ anywhere inside such a cell's own text closed that comment early, turning whatever followed (up to the next */ in the file) into live, executable Maxima input. Fixed by escaping any / that sits next to a * in these cells' text (as the HTML entity /) on write, and reversing it on read; code/input cells are deliberately left untouched, since their own markers are already fully self-closed on one line and they must stay byte-identical for a plain Maxima to batch() them correctly.
- Fixed a modal dialog popping up at every startup on wxWidgets >= 3.3 reporting the (successful) dark/light appearance change as a debug message – the diagnostic log call ran before wxMaxima's own log window was created (GH #2274 moved it later), so it fell through to wx's default log target, which shows a dialog for every message. The appearance change itself still happens at the same point as before; only logging its result is now deferred until the log window exists.
- Fixed the "Maxima isn't connecting" warning (GH #1182) sometimes firing spuriously on Linux/Windows for a large worksheet: it was counting the time wxMaxima itself spent parsing and laying out the worksheet against Maxima's 5-second connection budget, instead of only the time wxMaxima was actually free to notice the connection. Also reworded the warning to mention that wxMaxima/Maxima talk over a local loopback socket, which some security software blocks even though no traffic leaves the machine.
- Fixed
product()/prod() cells showing the wrong operator text ("sum(") once broken into lines, and rendering as nothing at all when they weren't broken – both caused by ProductCell failing to reach the code it inherits from SumCell: a virtual call made during SumCell's own constructor can never dispatch to ProductCell's override, and two do-nothing SetCurrentPoint()/Draw() overrides skipped SumCell's actual positioning/drawing logic entirely.
- Fixed an assert on newer wxWidgets ("Center pane must have dock layer, row
and pos set to 0") from the worksheet's AUI pane being declared with both
.Center() and a (meaningless, for a center pane) .Row(2).
- Fixed Windows Dark Mode only affecting the worksheet, not the rest of the interface (GH #2274).
wxLogWindow's constructor always creates a real wxFrame under the hood regardless of its "show" argument, and wxMaxima built its (normally hidden) log window near the very start of OnInit() – before wxApp::SetAppearance() got a chance to run. On Windows, SetAppearance() silently gives up (AppearanceResult::CannotChange) the moment any top-level window already exists, shown or not, so the app-wide appearance was never actually being applied to the native chrome (menus, toolbars, dialogs) – only the worksheet, which wxMaxima colors itself independently of SetAppearance(), ever reflected the setting. Moved the log window's construction to after the appearance is applied.
- Fixed composing the manual PDF for a non-CJK language failing outright if
texlive's CJK support wasn't installed (GH #2271, e.g. wxmaxima.hu.pdf on a Debian/Sid box without it) – the build passed -V CJKmainfont:... to pandoc unconditionally for every language, not just Chinese, making every manual's PDF hard-depend on a large, easy-to-not-have package it never actually needed. Only the CJK languages' PDFs request a CJK font now.
--batch/--exit-on-error runs that halt before finishing now exit with a dedicated status code (90-95) instead of a generic 1 for every reason (GH #2276) – a caller's script can now tell a Maxima error, an unanswered interactive question ("Halting, as documented for --batch"), a file that failed to open or save, or an image that failed to load/decode apart without parsing the log. See the new "EXIT STATUS" section of the wxmaxima(1) man page for the full list.
- Fixed a Maxima "set" (
{...}, setify(...), ...) rendering as completely blank output (GH #2270), even though the value was computed correctly (a right-click "Copy" of the invisible cell, or listify(%), revealed the right content). SetCell::SetCurrentPoint() shadowed the inherited ListCell::SetCurrentPoint() with an override that positioned only the cell itself, never its opening/closing brace or its contents – so those child cells kept whatever stale position they last had (or none at all) and were drawn off in the wrong place instead of inside the set's visible bounding box. The override did strictly less than the version it shadowed and served no purpose, so it was removed outright, letting SetCell inherit ListCell's (correct) positioning logic. Also fixed the "{"/"}" brace cells not getting the TS_FUNCTION style ListCell's "["/"]" cells get, a related inconsistency found while fixing this.
- Fixed the "ASCII maths" style defaulting to a non-monospace font, which misaligned Maxima's own ASCII-art 2D output (fractions, matrices, sums, ...) since it pads with literal spaces assuming every character is the same width. Two bugs stacked: the picked font family was only ever a loose hint the platform's font substitution was free to resolve to something proportional, and separately, reading a fresh configuration with no persisted font choice silently overwrote every style's carefully-chosen default font with one generic UI font – both now fixed.
- Added a "Copy as HTML" right-click menu item (GH #2265, #2266, #2267) that places a self-contained HTML document on the clipboard: the stylesheet is inlined and every image is embedded as a base64 data: URI, so the result pastes correctly into browsers, email clients and word processors without depending on any file from the original worksheet.
- Fixed "Copy as RTF" (and RTF on the general copy/cut clipboard) being silently ignored when pasted into MS Word (GH #2264): the RTF data was only advertised under the MIME-style clipboard format names Linux/GTK word processors expect, never under the literal "Rich Text Format" name Windows registers CF_RTF under and that Word's clipboard handler actually looks up.
- Fixed a hidden multiplication sign leaving almost no horizontal gap in MathML/OMML export (GH #2263), unlike the real gap it reserves on screen: the export substituted a genuinely zero-width Unicode marker for it. The marker itself (needed for accessibility, so screen readers still announce the implicit multiplication) is unchanged; it now carries explicit spacing so it takes up the same amount of room as it does in the worksheet.
26.08.0
Another large batch of improvements, many of them developed with substantial help from the AI assistant Claude: sidebars can now be minimized, "Find
and Replace" can be docked like the other sidebars, right-to-left interface languages and mixed-direction text are now properly supported, translation losses across dozens of languages were found and restored, and a long list of export, layout and stability fixes.
- Sidebars can now be minimized, not only closed (GH #2229).
- Right-to-left interface languages support. Full support requires libfribidi
- Restored translations that had quietly gone missing: (GH #2047).
- Equations exported as PNG (GH #2231) or SVG (GH #2230) now are accessible in 3.3.1/3.3.3, respectively.
- Many export improvements.
- Fixed scaled images losing their transparency (GH #2227).
- Evaluating a folded section no longer unfolds (GH #1952).
- "Pop out interactively" on a plot now tells you when gnuplot had trouble with it (GH #1973).
- macOS: fixed translation files not reaching the app bundle (GH #1711).
sum()/product()/lsum no longer wrap a plain summand in spurious parentheses, matching Maxima's own terminal output (GH #1536); box() no longer gets spurious parentheses around it either (GH #1948).
- Folding/unfolding a section (or "Fold All"/"Unfold All") is now part of the undo history (GH #266).
- Fixed wxMaxima losing sync with Maxima's working directory for names containing wildcard-like characters or, on Windows, characters outside the system codepage; a persistently broken path no longer spams the warning on every command (GH #1672).
- Code cell syntax highlighting improvements (GH #898).
- Table of contents: dragging a chapter/section to reorder it now actually works (GH #1524).
- Fixed two 32-bit-only bugs(GH #2208); CI now actually runs the tests there too.
- Tagged releases now also attach a
.tar.xz source archive with a checksum, built reproducibly from the tagged commit (GH #1192).
- Snap: gnuplot's license notice now travels with builds that bundle it.
--batch/--exit-on-error now actually halts on an unanswerable interactive question instead of hanging forever (GH #2178).
- Real tab handling.
- Better ASCII Arts support (#1608).
- New Maxima variable
wxdirs exposes wxMaxima's own configuration/data/ help/locale paths to .mac scripts.
- Windows: the installer/ZIP now bundles the MinGW runtime DLLs it needs to start.
- Added "Anonymize Code for Bug Report" to the Help menu (#1339): replaces every non-builtin name in the selected code (or, after confirmation, the whole document) with a random name, consistently, so a worksheet can be shared in a bug report without revealing the original names.
- Reduced the memory footprint of every cell on the worksheet by computing line-wrap draw order on demand instead of storing it per cell (#1445).
26.07.1
This release contains an unusually large batch of improvements – many of them developed with substantial help from the AI assistants Claude and Fable: dark mode for the whole Windows user interface, native Windows-on-Arm builds, numerous speedups, and a large number of bug and stability fixes.
- On Windows, switching to dark mode now also darkens the native user interface (menus, toolbars, sidebars, dialogs), not just the worksheet. wxWidgets can only enable this during application startup, so the saved appearance is now applied before the main window is created. (Toggling the appearance while wxMaxima is running may still need a restart to fully re-theme the native controls – a Windows limitation.)
- Native Windows-on-Arm (ARM64) builds: each release now includes a self-contained portable ZIP for ARM64 Windows, built natively with the clang-aarch64 toolchain. Unzip it and run wxmaxima.exe – no installer and no separate runtime needed.
- The worksheet diff viewer now shows changes inside a folded (collapsed) section instead of silently ignoring them: the cell alignment used to walk only the visible top-level cells, so two worksheets that differed solely inside a fold looked identical in the diff. Folded content is now expanded in the diff view and highlighted like any other change.
- Typing "(" at the horizontal cursor opens a new code cell containing "()" with the caret between the parens again, like "[", "{" and "\"" do. A refactor had left the caret in front of the opening paren instead.
- On builds with accessibility support (e.g. Windows) the configuration dialog gained an "Accessibility" tab: Maxima's output can now be announced to screen readers either as maths in linear text form (the default) or as MathML (wrapped in a complete namespaced <math> document), for screen readers that can speak MathML.
- Speedup: "Replace All" no longer schedules a re-layout of the whole worksheet - only the cells that actually contained the search text are re-laid-out.
- Speedup: scrolling to a cell whose position isn't known yet (and the caret-visibility check) now schedules a re-layout targeted at that cell instead of one spanning the whole worksheet.
- The statistics sidebar now grows its scrollable height to its wrapped button rows, like the other sidebars: when the sidebar was narrow, the buttons below the fold could neither be shown nor scrolled to.
- The POT file for translators now also includes the translatable strings from the source subdirectories (cells, sidebars, wizards, ...): the extraction glob was flat and silently dropped them.
- Evaluating a cell whose input is commented out entirely now removes the cell's stale output. Previously such a cell was skipped silently while a multi-cell evaluation advanced past it, keeping output that no longer matches the input.
- LDB mode: after answering an ldb> prompt (or clicking elsewhere), the next prompt's input line could no longer be reached - clicking into it did nothing and keystrokes opened a new worksheet cell instead. The LDB prompt now engages the full question machinery, so clicking into the cell that holds the prompt reopens its input line, and pressing Enter falls back to the prompt's answer even if the cursor wandered off it. The pending prompt is also cleaned up when the Lisp process ends.
- File name arguments (openr(), read_matrix(), load(), demo(), ...) now autocomplete bash-style: the popup lists the directory the partial name points into, typing narrows the list and Backspace widens it again, and choosing a directory descends into it and keeps completing there. Several edge cases (the editor's auto-added closing quote, a spurious leading "/" at the top level, and completion in a still-unsaved worksheet) were fixed too.
- Fixed a layout bug where the width of parenthesized content was underestimated: in partially-broken nested parenthesis/fraction/subscript constructs, cells inside a fraction could be drawn at the full font size while the surrounding parenthesis used the reduced-size extents. Composite cells now always re-lay-out their children at the right font size, and each cell remembers (and drawing verifies) the font size it was laid out with.
- Fixed a hang when a worksheet contained an image that could not be rendered (a broken or empty
<img>): querying the size of the not-yet-rendered bitmap tripped a wxWidgets assertion. Found by the layout/paint fuzzer.
- Fixed an assertion/crash when cutting or copying cells while the bitmap or SVG clipboard flavor was enabled: the off-screen renderer that draws the copied cells no longer trips the configuration teardown check.
- Repaired the lisp mode.
- Repaired the maxima debugger mode
- Repaired the SBCL debugger (LDB) mode
- Status bar pictograms for lisp and debugger modes
- Many Speedups
- A complete stability review using a Fable-Class AI
- Speedup: merely moving the mouse across the worksheet no longer repaints the whole visible worksheet at up to full frame rate. On GTK the worksheet now uses classic scrollbars by default (the overlay ones forced full-window repaints; a configuration option brings them back), the paint routine redraws each damaged rectangle separately, and needless idle re-layouts of the sidebars, status bar and performance monitor were removed. New "Worksheet repaints" / "Full-window repaints" counters in the performance monitor make such regressions easy to spot.
- Refactored the code into smaller, individually testable classes
- Added automatic tests for most recurring bugs
- More counters in the performance monitor
- Corrupt or hostile .wxmx files now fail cleanly instead of hanging: a damaged archive no longer wedges a batch run in an endless "Save As" loop, absurd watch-variable or active-cell counts no longer drive near-endless loops, and an over-large content.xml is read only up to a sane limit (a decompression-bomb guard). Guarded by a new corrupt_wxmx_smoke test. The .wxmx document-version check is now parsed locale-independently.
- Fixed: when Maxima asks a question the input cell for the answer appeared above the question instead of below it.
- Restarting Maxima no longer spawns a new gnuplot process to probe which graphics terminals gnuplot supports: if the restarted Maxima reports the same gnuplot as before, the answer from the first probe is reused.
- Stability: a failing save no longer risks stacking one "Saving failed!" dialog per autosave interval (the autosave timer restarted before the modal dialog was dismissed); the message is now shown once, after the handler that detected it has finished.
- Reading gnuplot's terminal-list reply and cached gnuplot source/data files can no longer loop forever on a stream that reports a read error instead of an end-of-file.
- Better prevention of leaked maxima processes
- Automatic line wrapping is now enabled for code cells
- Fixed: typing near the right edge of a wrapping text cell scrolled the worksheet sideways for no reason: the caret entered the horizontal scroll-into-view zone just before every automatic line wrap.
- Better authentication of maxima
- Animation frame rates are now floating-point.
- Windows: on shutdown wxMaxima suppresses the OS hard-error message boxes ("this
application could not be started"
- several configuration-dialog settings were silently not saved when pressing OK
- The diff viewer now highlights, inside each changed cell, the exact words the matching cell of the other file doesn't contain (word-level inline diff
- Changing a cell's type (Cell -> Convert to code/text/section/...) can now be undone.
- The Microsoft Edge WebView2 loader license is now included in the third-party notices only on Windows builds that actually use it, i.e. built with webview support - not on Linux/Mac, nor on a Windows build with webview disabled.
- Bugfix: the "how long did layout take" log message printed a meaningless near-zero duration, and the time-sliced layout of the off-screen part of a huge worksheet was not actually time-limited.
- Code deduplication.
- Corrected the line wrapping position
- The diff viewer's panes can be scrolled as soon as they open, instead of only after the window is resized.
- The "return to the cell that is being evaluated" toolbar button now lights up when the evaluated cell is scrolled out of view, even when the text cursor is not inside it (previously it only reacted to the cell that held the cursor).
- Windows: a batch-mode run (wxmaxima –batch, typically started from a script) could appear to hang for seconds to minutes before its window opened
- Fixed a mangled maxima user directory when maxima is compiled with GCL (as Debian's and Ubuntu's maxima packages are) match.
- Fixed find-next getting stuck when a match was found in an input prompt
- Fixed broken equation-image links in HTML exports using the "bitmap" equation format
- Added an export safety-net regression test (test_WorksheetExport) covering HTML (all equation formats), LaTeX, .mac and .wxm export.
- Fixed math cells with subscripts, parenthesis or lists keeping stale spacing
- Added a layout-idempotency regression test: after zoom and canvas-size changes the converged layout must be identical to laying the same content out from scratch.
- Configuration changes that alter how text is displayed (e.g. drawing a multiplication dot instead of an asterisk) take effect on the next redraw again instead of requiring the cells to be rebuilt.
- The build now autodetects whether the wxWidgets webview and qa components are actually usable instead of failing to configure on installations whose wx-config advertises components that were never built. WXM_DISABLE_WEBVIEW/WXM_DISABLE_QA are still honored to force-disable them.
- Fixed a crash in builds without webview support: requesting help on a topic (e.g. Maxima's ?? command) with exactly one matching topic name accessed the topic list out of bounds - and showed the wrong topic when there were several.
- The help pane is now opened once per help request instead of once per matching topic name.
- Accessibility: screen readers now actually see the worksheet's contents.
- Accessibility: the symbol/Greek-letter/math sidebar buttons are now announced as named push buttons (by their description, e.g. "Greek small letter alpha") instead of anonymous panels.
- The Unicode characters sidebar can now be used from the keyboard
- Fixed copying/cutting a freshly drag-and-dropped image turning it into an "Image data had zero length" error: the copy no longer reads the image before its background load has finished.
- Fixed copying/cutting a range of cells losing every cell that follows an image, a page break, or a code cell with the "send known answers" flag: those cells' clipboard data was missing a separator, so the following cells were swallowed on paste.
- Windows: wxMaxima now repairs its own .wxmx/.wxm/.mac file association on startup, so updating to a new install location no longer makes Windows "forget" which program opens .wxmx files.
- Windows: a new Help menu item registers wxMaxima as the tool TortoiseSVN and TortoiseGit use to compare .wxmx files.
- Added a regression test guarding the worksheet's line-wrapping (line-breaking) layout pass.
- Snap package: opening a link in the system web browser (the manual, "visit website", Maxima's online documentation) now works. The confined snap reaches the host's default browser through the XDG Desktop Portal instead of trying to launch a browser that is not visible inside the sandbox – no browser is bundled and confinement stays strict.
- Find: a match found inside a cell's output now scrolls to the matching part of the output, even in a long output cell. Previously the view only scrolled to the top of the output because the matched item – if it had not been drawn yet – had no on-screen position, so the scroll fell back to the start of the output.
26.07.0
- Fixed a crash on loading a worksheet containing an empty
<img/> or <slideshow/> tag (found by the parser fuzzer).
- No longer lose an embedded image on save if the current build cannot decode it.
- The license dialog now has a second tab listing third-party component notices (e.g. the Microsoft Edge WebView2 loader shipped with the Windows builds).
- Added a regression test guarding matrix column widths against being frozen by a layout-time deadline.
- The "follow evaluation" toolbar button now lights up immediately when needed.
- Fixed matrices keeping stale (too narrow or too wide) column widths when a layout-time deadline interrupted their recalculation.
- Fixed short Text and Title cells flickering.
- Fixed data loss when trying to embed .svg.gz files into .wxmx files.
- wxWidgets 3.3 compatibility.
- A proper Dark mode (dark sidebars, toolbars and menus require wxWidgets 3.3 and up)
- Many improvoements to the automatic tests
- Many batch mode improvements
- Many stability improvements
- Windows: pressing Ctrl+F now keeps the keyboard focus in the find dialog.
- Many diff viewer enhancements
- Corrected the find algorithm
- A correctness review for all wizards.
- EditorCells again grow and shrink when the user adds and removes lines
26.06.2
- A whole AI-driven safety review
- MSW only: .wxmx file contents were sometimes loaded twice
- Many diff viewer improvements
- Many find dialogue improvoements
- Corrected the table of contents showing only part of sections, sometimes.
- More responsivity when loading many images.
- Removed some visible glitches.
- Better implementation of the layout timeout.
- Fix layout of fractions inside exponents (e.g.
x^((a+b)/c)).
- Don't leave orphaned Maxima processes behind when wxMaxima is killed by a signal or crashes.
- The crash dialogue now works on more systems.
- Another layout fix.
- Add a new command
wxmxdiff (symlinked to wxmaxima on installation) which automatically opens in side-by-side diff comparison mode.
- More preparation for packaging
- Improve the randomness of the authentication token passed to Maxima.
- Add a "Math layout strategy" radio box to the config.
- Better undo handling.
- Another try to make accessibility work.
26.06.1
- Fix the Ctrl+F keyboard focus on MS Windows to correctly focus the find dialogue instead of leaving it on the worksheet.
- Fix syntax errors caused by sending duplicate/consecutive command delimiters to Maxima by filtering out delimiter-only commands and correctly handling unicode non-breaking space characters during ending checks.
- Fix a rare access violation (crash) when activating or clicking on an EditorCell that has a null or detached group cell pointer.
- Fix mouse capture lost warning messages by correctly marking mouse capture loss events as handled in the table of contents and worksheet.
- Fix the error status being immediately replaced by "awaiting input" on the status bar and taskbar when Maxima encounters an error.
- Fix layout recalculation of images and plots when window height changes (e.g. at startup or on vertical resizing).
- Fix duplicate evaluation triggers (sending known answers twice) when Maxima questions are received in multiple chunks.
- Fix scroll position tracking: call ScrolledAwayFromEvaluation(true) when the user manually scrolls so that the active cell is completely outside the visible portion of the worksheet.
- Fix inserting a new cell (via hCaret) on large worksheets causing the scroll range to shrink to the first screen and the view to jump to the top.
26.06.0
- Optimize drawing during mouse moves (bracket autohide): redraw only the actual height of the cell, rather than drawing all the way to the absolute bottom coordinate.
- Change the "Jump to first error" menu item to "Jump to last error" and fix its implementation to scroll to the most recent error cell.
- Fix handling of to_lisp() and (to-maxima).
- Fix redundant Maxima process spawns when opening worksheets and in batch mode.
- A Diff Viewer that compares two wxmx files from the same origin that were saved with this wxMaxima version or newer.
- Fix startup keyboard focus: The worksheet now correctly gains focus on application start.
- New
wx_matrix() command for advanced matrix formatting (lines, headers, custom brackets).
- Persistent matrix formatting: Style flags are now saved within the matrix object.
- Major XML performance optimization: Faster worksheet loading via hash-based attribute filtering.
- Improved XML integrity: Automated validation tests to prevent duplicate attributes and malformed files.
- Windows Accessibility: Fixed several bugs in the
wxAccessible implementation for better screen reader support.
- Script rendering: Fixed issues where complex subscripts/superscripts would flatten into standard subscripts.
- High-DPI: Optimized SVG rendering and resolved redundant resource requests.
- Editor performance: Optimized drawing by rendering only visible text tokens.
- Non-interactive mode: Automated tests now skip most blocking modal dialogues.
- The log now contains errors maxima encountered.
- Many improvements to the Doxygen documentation.
- Fix the cursor position after autocompletion (#2090).
- Fix XML for saving as wxmx, when Maxima warnings are displayed (#2092).
- Fix XML output for definite integrals. It was saved without the limits.
- Resolved a Crash on encountering some integrals (#2095)
- A complete overhaul of the worksheet's layout and display engine.
- Opening <file.wxmx>#UUID opens the file and scrolls to the Group with that UUID
- Many stability improvements, most of these AI-driven (#2072, #2061)
- The size of subscripts is now calculated correctly
- The table of contents can now show section numbers
- Massive improvement of the search within the worksheet
- Ctrl+G now interrupts the current command again on MS windows
- Reduced the time windows in which wxMaxima blocks because it is processing data
- Fixed a deadlock when closing the application while background autocompletion tasks were running.
- Fixed a bug where finding an item in an output cell didn't trigger a scroll to the found item.
- Fixed a bug where text from long output cells couldn't be selected if the beginning of the cell was scrolled out of view (#2069)
- MS Windows: The "maxima is running" indicator should now work correctly
- HI-DPI improvements
- A few Autocompletion fixes
- Better SVGZ support
- Some fixes for selection of output
- Improved MathML and RTF output
- Big find-and-replace functionality additions
- A compiler supporting C++20 is required now
- Files opened by double-clicking now have a consistent layout
- Added automatic tests and repaired others.
26.05.0
- Fix search and replace. Before in a longer string - e.g. "aaaaaaaaa" only every second occurrence was replaced, when (e.g.) one wanted to replace "a" by "b".
- Update Hungarian and Russian translations.
- Fix crashes at startup on MacOS 26.2 "Tahoe" (#2060).
- Improvements in Plot2dWiz and Plot3dWiz.
- Fix the "Hide all Sidebars" menu option, it did not work. (Changed from "Hide all Toolbars"), it hides sidebars, not the toolbar.
- Build system: Allow changing the C++ standard using CMAKE_CXX_STANDARD.
- Build system: Use C++20 by default, if the compiler supports it. C++14 still works.
- Build system: Fix compiling with C++20, C++23 and C++26.
- Fix webp support for wxWidgets >= 3.3.0.
- Fix 2nd 'Special constant' button in the integrate wizard.
- Fix many issues in the integrate numerically menu (#2069). Also mentioned "QUADPACK" in the menu, so that one knows, from what Maxima package these special functions come.
- Don't include dot files in the release archive (#2068).
- New compile option WXM_DISABLE_QA (#2064).
- Fix the 'Create a list from a list' menu (mentioned in the discussion forum).
- Fix the 'Extract nth element of a list' menu.
- Fix the 'Do for all list elements' menu.
- Fix the 'export list to csv file' and 'read list from csv file' menu. It was not working at all. Renamed to 'read nested list from csv file', the menu item is using read_nested_list(). Mentioned in the discussion forum.
- Fix the 'Apply a function to each list element' menu. Mentioned in the discussion forum.
- Fix the List/Push menu (wrong order of arguments). Mentioned in the discussion forum.
- Provide a relevant OSDescription in the top bar.
- Discard intermediate PNG plots from with_slider_draw (#2081).
- A better 'List sort' wizard. (Mentioned in the discussion forum).
- Fix the Help->Example and Help->Apropos menus.
- Fix the Matrix->Row and columns operations->Remove rows or columns menu. Change to one 'Remove rows' and one 'Remove columns' menu.
- Fix statistics sidebar (wxbarsplot, wxboxplot, wxpiechart, mean, median, std were not working)
- Fix inconsistent behavior in the list menu (mentioned in the discussion forum)
- Make toolbar icons HDPI (#2074).
26.01.0
- Keep the wxm/mac difference when saving wxm/exporting mac. This omits unneeded comments (/* [wxMaxima: input start ] */ (and input end) in a mac file (structural comments (section, ...) are still saved) and especially omits question/answer comments - they are unreadable by Maxima (see #2014, not only wxm files but also mac files were problematic). At least the issue with mac files is solved.
- Replace unicode fractions in math input.
- Use wxArtProvider images for the copy/print icons in the config dialogue. They were very small on Linux (Ubuntu).
- Support webp images if wxWidgets >= 3.3.0 is used.
- Fix the General Math sidebar resize issue (#2022).
- Fix the resizing of the 'Insert cell' sidebar (same problem as the 'General Math' sidebar).
- MacOS: Fix debug message boxes after closing a file (#2016).
- Fix build with current Mac XCode ('old'/new' build system). (reported in a comment in issue #2016).
- Fix a crash when copying a input cell (collapsed to only show the input).
- Fix a crash when closing the configuration menu on OpenBSD (#2027).
- Fix a problem with wxplot2d/wxplot3d on OpenBSD (#2027).
- Fix a crash when deleting a text cell (#2041).
- Fix subscripts of greek letters (#2045).
- Fix the "Numerical solutions of polynomial" (with and without bigfloats) wizards. The allroots() and bfallroots() functions use only one argument, not two.
- Save the chosen inversion status in the configuration. Fixes issue #2049.
- Try to highlight input text that coincides with selected output text.
- diff() now doesn't add a ",1" if only the 1st derivate is meant.
- A more consistent worksheet zoom feature.
- Maxima's state should now be displayed in the windows task bar.
25.04.0
- Use the (standard) wxWidgets log window instead of our own log pane. Less code to maintain, more features (e.g. clear log, save log). In "Release" builds the log window will be hidden (and can be enabled using View->Toggle log window, otherwise it is shown.
- Make the option "--logtostderr" work on Windows. (Windows GUI applications do not have STDIN, STDOUT and STDERR assigned, an extra 'text window' with the log messages will be opened at startup).
- Do not set lmxchar/rmxchar (used for displaying a matrix in text mode). It did not work at all. Maxima provides a reasonable default - and people probably expect the same, if they are using command line Maxima and wxMaxima. (#1926)
- Kill Lisp (e.g. sbcl.exe) when closing wxMaxima. (#1963, #1922, #1824, #1199)
- Correct heading colors (#2005)
- Repaired the Equations->Solve numerical->Find numerical solution" menu (#2010)
- Included examples (10MinuteTutorial.wxm, testbench_simple.wxmx) were affected
by the Maxima/Gnuplot 6 problem. (see issue #1960)
- Support wxWidgets, if it was build with '–enable-utf8=yes' (#2012)
- Fix compiling with wxWidgets without webview.
- HTML export/Mathjax: Don't remove 1st/last label char (#2003)
@section autotoc_md986 25.01.0
- Remove the change label width popup menu (#1964).
It was not working at all and caused crashes. And I think the
label width is not changed so often, so that a (working)
possibility in the configuration menu is enough.
- If an empty worksheet is saved as wxmx, allow it to be read again (#1978).
The generated content.xml was empty, which was no valid XML.
- Fix compiling with clang++.
- CopyAsMathML: encode "<" and ">" as HTML entities (valid XML).
- CopyAsMathML: improvements (operators and identifiers)
- Fix the check for Gnuplot-Cairo on Windows.
- Fix the (Windows) crash in the suggestions menu (#1980).
- HTML export: print the output labels on the left side.
@section autotoc_md987 24.11.0
- A Spanish translation update by cyphra.
- Resolved a crash when inverting the worksheet (#1951)
- Do not strip Lisp comments before sending the input to Maxima (#1953)
- Correctly copy superscript when CopyAsMathML (#1945)
- Copy as MathML: Use a centered dot instead of *, if configured (#1956)
- Fix superfluous quote marks in text copied by "Copy as MathML" (#1946)
- Fix copy as MathML for boxes.
- Correct display/handling of minf.
- WxMaxima was not responsive in the 1st minute.
- Fix display of subscripts. (#1584, #1807)
- Allow Maxima strings with newlines. (#76)
- Support Maxima which uses ABCL.
@section autotoc_md988 24.08.0
- An advanced plotting tutorial
- Try harder to kill maxima on closing it
- Try harder to clean up maxima's temporary files on closing it
- Resolved a race condition on closing multiple windows
- Resolved a CMake error on configuration with -B switch (#1917)
- More menu icons
- A better dialogue if Maxima isn't found
- Better search for the Maxima binary
- Find Gnuplot on Windows if wxMaxima is packaged alone. This
is needed for the 'Popout interactively' function of wxdraw().
- Security: Use a standard function (CreateTempFileName) for
creating a temporary file for the 'popout interactively'
function of wxdraw.
- Security: Add a random number to lisp generated temporary files.
- Fix the 'Gnuplot command window' (on Windows) (issues #771, #1680 and #1732).
- A Spanish translation update by cyphra
- Fix the greek letter replacement for 'beta' with newer Maxima versions (#1921).
- Fix a problem, when 'maxima-local' (a not installed version of Maxima)
was chosen as Maxima. WxMaxima did not finish on File->Exit and used
much CPU power.
- Size calculations for numbers that were broken into lines failed the first time
(#1931)
- On MS Windows one can now choose between Gnuplot and wGnuplot (#1934)
- Fixed the error message about dual manifest files on MSVC
@section autotoc_md989 24.05.0
- Faster discarding of maths that is too long to read
- Resolved a crash on closing the last window (#1898)
- Now only wxWidgets builds with Unicode support (default) are allowed.
Builds without Unicode support are strongly discouraged
by the wxWidgets team.
- Update German and Italian translations
- Use po4a instead of po4a-translate for the generation of
internationalized manuals. po4a-translate is deprecated (#1899)
- Allow compilation with the current wxWidgets development version
- Code reorganization to promote stability
- Security: Use a standard function (CreateTempFileName) for creating
temporary filenames instead of using the process id as 'random' number.
- Security: (autosaved) temporary files now use secure permissions,
are not readable by everyone.
- wxm files no more truncate text (#1908)
- Unicode sidebar: Allow searching for unicode numbers too, not only the
character name.
- Unicode sidebar: Correct the search filter, the last char was always
shown, even if there was no match.
- Improvements of the manual.
- Performance: Replaced many copy operations by references to const
- Correctly handle deletion of the last cell (#1911, #1840)
- A link from the help menu to maxima's help page
- Offer more maxima demos in the right-click menu
- Resolved a threading race condition (#1912)
- Printing integral, sum and product signs on MS Windows (#1909)
- Resolved literally hundreds of warnings from static analysis tools
- Support for the %catalan constant
- Better MSVC support
- On MSW wxWidgets >=3.2 now is mandatory for getting high-DPI support
- A backward-search fix (#1913)
@section autotoc_md990 24.02.2
- Set maxima's LANG variable, not wxMaxima's LANG (#1897)
- Sped up the communication between maxima and wxMaxima
- Sometimes newlines in misc text from maxima got lost (#1894)
@section autotoc_md992 24.02.1
- wxMaxima now correctly installs its icons (#1892)
- A race condition on closing Maxima
- Update the autocompletion only in idle state
- Fixed a race condition on dropping the log target
- Alt+Up at startup no more crashes (#1886)
- Resolved a compilation error on old wxWidgets versions
- Resolved GCC errors about too long functions
- Resolved an assert if no history file exists
- Ctrl+Alt+M now restarts maxima
- Added a Maxima/Memory menu
@section autotoc_md993 24.02.0
- Faster start-up
- Better performance directly after startup
- Faster loading of files
- Better button placement in sidebars
- Got rid of a crash on startup in fedora (#1862)
- Clear wxMaxima's input buffer on starting a new maxima process (#1856)
- A nicer ChangeLog dialogue
- Corrected for swapped row and columns in wizard enter matrix
- Fixed a few bugs in the XML saving code (#1867)
- Zooming did cause recalculation only for the 1st cell (#1870)
- Many config changes now have immediately effect on the worksheet
- Added the unicode-enhanced ASCII art from maxima to the menus
- Steamlined the cell size calculation stuff
- Completely overhauled the printing functionality
- Moved more of the help file indexing to the background (#1856)
- Better event handling in the unicode sidebars (#1875, #1863)
- Reading out the values of maxima variables for the GUI was broken
- Many checkmarks in menus had the wrong value
- Maxima's demos are now available in the menu and context menu
- Default the filter search boxes to text search, not regex
- Rescaling affected size calculations for code only with a delay
- Mac Os: way higher stability if multiple windows are open
- The context menu in the "greek letters" sidebar now works (#1878)
- Resolved an assert if the internal help browser was disabled,
but requested (#1881)
- wxMaxima now preserves history entries between sessions
- Better LibreOffice compatibility with the MathML output
- Better HTML output
- Fix crash when exporting a worksheet with animations to TeX
- Resolved a crash on closing a window (#1889)
@section autotoc_md994 23.12.0
- Input text selection was cleared when right-clicking
on it (#1845)
- Pressing both mouse buttons simultaneously caused an
assert (#1844)
- Corrected the cursor position after unsuccessful autocompletes
- Corrected the handling of question prompts from maxima (#1827)
- Bug corrections in the search functionality
- RegEx search works again
- Clicking on the notification now is more likely to focus the worksheet
- Corrected the cell folding logic (#1853)
- Folded cells are no more evaluated (#1853)
- Now we try to generate a backtrace on crashes (#1802)
- Corrected the position of integral limits
- Nicer product, sum and integral signs
- Hidden cells weren't restored from wxm files (#1855)
- diff() no longer causes spurious multiplication dots (#1825)
@section autotoc_md995 23.11.0
- Correctly draw the bracket of the cell under the cursor (#1811)
- Maths display was corrupted if the window was temporarily not wide
enough to display it in 2D (#1812)
- Added many range checks to the code
- Correct label scaling after changing the zoom factor (#1815)
- Repaired "copy as bitmap" (#1820)
- Repaired EMF and SVG output (#1838)
- Focus the search text on activating the search box (#1821)
- Correctly support dropping multiple files on the worksheet
- If the worksheet isn't empty dropping a file on the worksheet
no more closes the currently open file
- Try harder to kill maxima on closing it (#1824)
- Menu items for displaying the internal representation
- Better display of diff(), if multiplication dots are enabled (#1825)
- Tried to resolve a few asserts (#1831)
- Resolved many warnings from several static analysis tools
- Fine-tuning of the "undo" function
@section autotoc_md996 23.10.0
- A big rewrite to make the static analysis tools happy
- Many stability improvements
- Maxima's help commands work again out-of-the-box.
- Corrected the worksheet size calculation
- Better support for loading .wxmx files from weird paths
- Finally resolved the "Right-click resets zoom" problem (#1810)
- A speed up
- Many right-click menu fixes (#1810)
- Display/Hide label fixes
- Many help browser improvements (#1802)
- The worksheet size no more is underestimated (#1802)
- Cell creation fixes
- Copy-and-paste improvements (#1809)
- Better error messages for bitmaps
- Many additional bug fixes
@section autotoc_md997 23.08.0
- Better print scaling
- More consistent page size handling for printing
- Many performance and stability fixes from coverity-scan
- Resolved many warnings from cppcheck
- A RegEx search
@section autotoc_md1000 23.07.0
- Printing: Made the page margins configurable (#1787)
- Printing: We no more print page headers (#1791)
- Printing: Printing no more omits labels (#1507)
- Printing: A better pagebreak algorithm
- Printing: No more ghost lines around text cells
- Less ugly integral signs
- Many stability fixes
- More consistent worksheet scaling and sizes (#1780)
- Correctly save the color settings (#1789)
- Correctly check the numeric and other menu items
- The cursor no more disappears (#1788)
- Updated italian translation
@section autotoc_md1001 23.05.1
- Updated the Russian and Italian translation.
- Process the command line option <tt>--maxima=\<str\></tt>.
- Resolved several possibilities to crash the config dialogue
(#1774, #1766)
- Correctly calculate the worksheet size in the background (#1766)
- Correctly restore parenthesis on load (#1779)
- Always revise the decision what to display as 2D equation on
window width changes
- 2D display of integrals had zero size (#1780)
@section autotoc_md1003 23.05.0
- Got rid of some compiler and cppcheck warnings
- Big performance improvements
- A "maxima versus typical programming languages" tutorial.
- Table of contents: Jump to the chapter the cursor is in.
- Resolved another crash in the config dialogue
- Updated the unicode character list
- Resolved more potential event ID clashes
- Use an external file as wxMathML.lisp is now selected using
a command line option, not configured in the GUI.
This is mostly needed for developers, no need to expose it
to the end user.
- Better handling of paths to maxima when starting new
wxMaxima processes
- new wxMaxima processes now get more of the command-line args
of the parent process
- wxMaxima no more tries to install its own fonts.
@section autotoc_md1004 23.04.1
- More config dialogue tweaks
- MacOs: No more create config icons that aren't needed
- Recent file list: Don't try to re-use no-more-used wxWidgets IDs
- Make sure that the help sidebar is shown when opening a help topic
- If maxima wants us to open a help browser and wxMaxima was compiled
without one it now opens an external help browser
- Be aware that the MSW port recycles unused window IDs.
- The load() command now again works with symbols as package names.
@section autotoc_md1005 23.04.0
- Made the GUI more responsive for functions with much output
- Handle errors in the XML from maxima more gracefully
- Rewrote parts of the lisp part of wxMaxima
- Resolved a few lisp warnings
- Resolved a few XML errors caused by not escaping special chars
- Automatic XML generation tests
- More MacOs fixes
- Correct display of operators
- A better style sample for the config dialogue
- Resolved several asserts
- Resolved a few small bugs in the autosave logic
@section autotoc_md1007 23.03.0
- Make sure all bitmaps are valid on High-DPI MacOs (#1749)
- More styles consistency (#1753)
- Better configuration validation
- Depending on the wxWidgets version Unicode letters were
interpreted inorrectly (#1754)
- The manual anchors cache now saves the file-per-chapter URLs, too.
- cmake -DWXM_DISABLE_WEBVIEW now allows to find wxWidgets, if
wxWebView wasn't compiled.
- Completely rewrote the dockable-sidebars-stuff
- Many files are now build on demand, not at configure time
@section autotoc_md1008 23.02.0
- Fix XML generation of wxmx documents (#1556)
- A faster font cache
- Faster communication between wxMaxima and Maxima
- Dropped the dependency on an [internal] ww898 library
- More consistent text style handling
- A try to improve locale management on the Mac platform
- A separate style for operators (#1002)
- A nicer ChangeLog
@section autotoc_md1009 22.12.0
- A cleaner status bar with double-click actions
- Better display of labels
- box() now is displayed as a box, as the maxima manual states
- box(expr, "highlight") display expr in red, instead
- Resolved a few display glitches
- Resolved OS-dependant wrong actions on gui events
- A few system and compiler specific fixes
- Resolved a few compilation warnings
- Try harder to connect maxima if one communication port is blocked (#1717)
- Better display of help text in the console
- Faster saving of .wxmx files
- Better toolbar bitmap handling
@section autotoc_md1010 22.11.1
- Repaired zooming the worksheet
@section autotoc_md1011 22.11.0
- Resolved an ID collision (#1726)
- Faster restart of maxima (#1715)
- Make various dialogs window-modal (#1712)
- Proper handling of unicode in selection (#1726)
- An unicode conversion error (#1727)
- Repaired the "enter matrix" dialogue
- Jump to the correct anchor even if using online help
- Translation updates
- Many windows build improvements
- Resolved a crash on restarting maxima
@section autotoc_md1012 22.09.0
- Support for wxWidgets 3.1.7
- The description field for wizards no more is a MouseOverToolTip
- Wizards now accept chars from the unicode buttons
- Wizards now can balance parenthesis
- Wizards for operatingsystem, basic programming and string operations
- More miscellaneous work on the wizards
- The watchlist was broken
- In MacOs the config dialogue crashed
- Better scalability of the config dialogue
- Folded multiline code cells are now sent to Maxima correctly (#1674)
- The output of the "?" command contained spurious "<" (#1688)
- ?, ?? and describe() now use a browser window, by default
(an up-to-date Maxima is required for that feature)
- Search harder for the Maxima manual
- Search harder for Maxima manual entries
- Now we find Maxima manual entries that have no explicit anchor
- On Linux, MacOs and, if wxWidgets was compiled with edge support
the help browser can be obened in a dockable window
- wxMaxima can now compiled, even if wxWidgets was configured with
the option "--enable-privatefonts=no".
Use the option -DWXM_INCLUDE_FONTS=NO when compiling wxMaxima.
- Names that end in an underscore are now printed correctly (#1706)
- Made the tests work on more platforms (#1709)
- Resolved some asserts (#1574)
- Working MathJaX (#1702)
- A primitive integrated ChangeLog viewer
- Better documentation (#1693)
- Better unicode handling (#1691)
- Many additional bugfixes
@section autotoc_md1013 22.05.0:
- Updated the Ukrainian translation
- Added <tt>guess_exact_value</tt> to the numeric menu.
- Added lapack to the matrix menu
- Added linpack to the numeric menu
- Added a "declare facts" right-click menu entry to variables
- We no more reserve space for hidden input
- A better logexpand section in the numeric menu
- Many wizards have a more modern look and feel, now
- The modern-style wizards are now dockable by default
- Undo and redo buttons for the toolbar
- A "construct fraction" wizard (#1664)
- Printing multiple-page documents now should work again on Linux (#1671)
- The selection should now no more overwrite test (#1665)
- Hidden code cells now are correctly sent to maxime (#1674)
- MacOs: The toolbar icons work now on retina screens (#1657)
- MacOs: The config dialogue works again (#1662)
- Many additional MacOs fixes
- The Cygwin build works again
- Support for wxWidgets 3.1.6
@section autotoc_md1014 22.04.0:
- A Russian translation update from Olesya Gerasimenko
- Repaired drag-and-drop on MacOs (#1624)
- Resolved a bug in parenthesis matching (#1649)
- Faster startup logic
@section autotoc_md1015 22.03.0:
- Add an compile option "WXM_INCLUDE_FONTS", which allows to
specify, if additional fonts should be included.
Current default: YES; use -DWXM_INCLUDE_FONTS=NO when calling
CMake to disable that.
Including fonts caused some issues on MacOS. (#1580)
- Rename command line option –logtostdout to –logtostderr.
Because the option does print the log messages to STDERR, not STDOUT.
- A better heuristics for finding out what to style as 1D maths
- An updated french translation from Frédéric Chapoton
- Consistent image resolutions
- No more crashes on exporting multiple animations at once (#1616)
- Drag-and-Drop in the table of contents
- Table of contents: Convert sections to subsections and similar (#1629)
- Parenthesis and quote matching now uses the Maxima parser.
This means it now both knows the details of the Maxima language
and is much faster than before.
- A way of limiting the toc depth shown in the table of contents
- Now the problems after a kill(all) should be finally resolved
- Better support for the debugger (#1625)
- Machine-Float NaNs no more causes XML errors
- Labels with hexadecimal numbers no more cause crashes (#1633)
- wxMaxima no more skips chars in subscripted variables (#1632)
- Merging cells per keyboard shortcut works again (#1626)
- Symbols buttons whose symbols the GUI font lacks are now hidden
@section autotoc_md1016 21.11.0:
- Allow seeing all files in the file save dialog. (#1557)
- Fix an error when using Alt up arrow (show previous command) (#1566)
- Rewrote a config dialogue
- Improvements in the manual
- Update Spanish translation of manual
- Update German, Russian, Hungarian and Ukrainian translation
- Fix a warning, which occurred, when starting wxMaxima the first time
- ww898 unnecessarily limited the list of supported platforms
- wxMaxima's properties to Maxima symbols can now no more be killed
- Allow single GroupCells to be converted to LaTeX
- Enable reloading and changing images inserted via "Cell" -> "Insert Image..." (#1597)
- Correctly set the document saved state when the size of an image is changed
- Use the AUTHORS file for the Credits page in the "About" dialogue
- Handle power events (#1607)
- Fix ugly buttons in the sidebars with recent wxWidgets
@section autotoc_md1017 21.05.2:
- The integral signs disappeared or were misplaced on some MS Windows computers
@section autotoc_md1018 21.05.1:
- Resolved a segfault on printing that could be triggered on some computers
@section autotoc_md1019 21.05.0:
- Long numbers now can be broken into lines
- On Export long numbers sometimes got lost
- The height of folded cells now is calculated correctly, again (bug #1532)
- Printing now can insert pagebreaks within GroupCells (bug #970, #1528,
#1241, #181, #573,#1082)
- A Russian translation update by OlesyaGerasimenko
- A Ukrainian translation update by Yuri Chornoivan
- Changed the font for the PDF manuals to free Google Noto fonts.
Now all PDF manuals can be created without missing characters
(before cyrillic, chinese and greek characters were missing).
- Solved a crash when printing.
@section autotoc_md1020 21.04.0
- Fix visualization after "Evaluate all cells (Ctrl+Shift+R)" (bug #1512).
- Fix context sensitive help with F1 (bug #1508).
- Add an option for not showing matching parenthesis (bug #1509).
- Changed the weather icons in the toolbar to more meaningful ones (bug #1514).
- Many bugfixes with respect to correctly breaking lines (bugs #1528, #1471, #1512).
- Fix a bug in copy-paste of saved/loaded results (bug #1518).
- Fix a crash when pressing Ctrl-X while a math cell is selected (bug #1519).
- CMake 3.10 is now required for building wxMaxima.
- C++ 14 is required for building wxMaxima. Now CMake knows about that fact.
- Many external build scripts are now replaced by C++ and CMake commands.
- A menu entry for when to invoke the debugger.
21.02.0
- A Spanish translation update by cyphra
- Replaced openMP by c++11's built-in thread handling. This should improve stability at the cost of making loading files with lots of images slower.
- Language selection now works on Windows.
- Resolved a crash when deleting regions.
- The –ini switch should work again correctly.
- Fix an issue, where demos didn't re-center screen anymore, when screen is full and print was incomplete.
- Made the time between autosaves configurable.
- Fixed an issue with reproducible builds.
21.01.0
- Chinese translation updates by 刘荣.
- A Russian translation update by OlesyaGerasimenko
- Many small bugfixes including a crash on loading files with images.
Changes in older wxMaxima versions you can find here
https://github.com/wxMaxima-developers/wxmaxima/blob/Version-21.02.0/NEWS.md