---
title: "Pragtical v3.14.0 Release"
slug: pragtical-v3-14-0-release
url: https://listedarticles.com/articles/pragtical-v3-14-0-release
canonical_url: https://pragtical.dev/blog/pragtical-v3140-release
content_type: changelog
language: en
published_at: 2026-10-20T00:00:00.000Z
updated_at: 2026-10-25T05:11:13.772Z
author: "Jefferson Gonzalez"
author_url: https://github.com/jgmdev
authored_by: human
publisher: "Pragtical"
publisher_url: https://pragtical.dev/
topics: ["Text Editors", "Open Source", "Developer Tools", "Lua"]
license: all-rights-reserved
word_count: 1318
reading_minutes: 6
citation: "Jefferson Gonzalez, Pragtical. \"Pragtical v3.14.0 Release.\" 20 Oct 2026. https://pragtical.dev/blog/pragtical-v3140-release (all-rights-reserved)"
# The full text follows. The web page shows an extract and sends readers
# to the source above; quote the citation and link the canonical URL.
---

# Pragtical v3.14.0 Release

> Pragtical v3.14.0, the Lua-based text editor's latest release, adds application menus and a toolbar, flexible placement of command prompts and project search, floating views, workspace session management, a refreshed Plugin Manager and lower idle CPU usage, plus a long list of fixes since v3.13.1.

Before getting into the changes, here is a look at how Pragtical has been
evolving, including some of the new interface improvements in this release.

Pragtical v3.14.0 brings application menus, more flexible placement of command
prompts and project search, workspace session management, a refreshed Plugin
Manager, and lower idle CPU usage. The changes below cover the work since
v3.13.1.

## Application Menus And Toolbar

Many editor commands can now be found under the File, Edit, Search, View,
Tools and Help menus. This makes it easier to discover commands without
knowing their names or remembering every keybinding. Plugins can also add
their own entries, with shortcuts and enabled states following the registered
commands.

Borderless mode and the menu bar are now enabled by default. In borderless
mode, the menu sits beside the logo in the title bar, leaving the rest of the
title area available for dragging the window. Thanks to Tocal on Discord for
suggesting this placement!

![Application menu embedded in the borderless title bar, with the Tools menu open](https://github.com/user-attachments/assets/96f3b1a8-a521-40b1-97fd-f22101b901f5)

Both **Borderless** and **Show Menu Bar** can be changed under
**Settings > Core > User Interface**. The borderless resize area is now a thin
strip on all four edges, so it no longer steals clicks from status bar items.
Resizing is disabled while maximized or fullscreen.

Here is the menu demonstration from [PR #630](https://github.com/pragtical/pragtical/pull/630):

The toolbar can also move. **Settings > Plugins > Treeview > Toolbar Position**
offers Left, Bottom, Top and Right: place it beside, above or below the file
tree, or at the editor's right edge. This screenshot from the initial menu and
toolbar PR shows the right-hand layout:

![Application menu and toolbar placed at the editor's right edge](https://github.com/user-attachments/assets/01ec1ceb-9412-4b8f-80d6-806b652804cc)

## Command Prompts And Floating Views

Command prompts are no longer limited to the bottom of the window. The
**Command Palette Position** setting under **Core > User Interface** offers
Bottom, Top and Center. Center floats the input and its suggestions over the
editor instead of resizing the document panes. Bottom remains the default.

The same option can be set in your user module:

```
local config = require "core.config"  
config.commandview_position = "center"
```

The next prompt uses the new placement. Centered prompts keep their top edge
steady while filtering results, instead of moving around as the list gets
shorter.

Underneath these changes is a shared floating-view API. Menus, completion
popups and dialogs can use the same placement, focus and mouse handling,
instead of each plugin having to intercept editor events on its own. Plugin
authors can find more details in the [floating views guide](https://pragtical.dev/docs/developer-guide/floating-views).

More floating-view demos from PR #630

Command prompts and the floating About dialog:

Completion and documentation popups with the optional LSP plugin:

Prompts can also remember where you left them. CommandView now supports
optional snapshots of input, selection and result scrolling. Core commands
use this to resume repeated searches and commands, with context checks so a
Go To Line search does not accidentally follow you into a different document.
The video from [PR #631](https://github.com/pragtical/pragtical/pull/631) shows
returning to a previous Go To Line search:

## Project Search Placement

Global project search can now stay on the left, move to the right, or open as
a centered popup. Choose **Settings > Plugins > Project Search > Position**
to change it. Keyboard result navigation remains available, and the centered
view stays open while a live search updates its matches.

Project search transitions were restored too, and centered search and About
can slide into view. The shared floating API respects the transition settings,
so disabling animations works consistently for these popups.

Search and About animation preview from PR #635

## Workspace Sessions

The previous release fixed automatic session restoration. This release adds a
way to choose which saved session to load and remove sessions you no longer
need. Open **File > Sessions**, or use the `workspace:load-session`,
`workspace:remove-session` and `workspace:clear-sessions` commands.

![File menu showing saved workspace sessions and load, remove and clear actions](https://github.com/user-attachments/assets/ddb2d271-744b-4ebf-a9b9-c09a40f11aaa)

Before loading another session, Pragtical backs up the current workspace,
including unsaved text. Loading replaces the current document layout, while
removing saved sessions leaves the open tabs alone. These operations apply to
the current project, without clearing sessions belonging to other projects.

## TreeView File Counts

Thanks to [Vinfall](https://github.com/Vinfall), the file tree can show how many
files are inside a collapsed directory. Counts follow the tree's hidden and
ignored-file settings. Here is the preview from the original contribution:

![Directory file counts beside collapsed folders in TreeView](https://github.com/user-attachments/assets/6eaa7b45-b876-4c64-91a2-543f3491569f)

The follow-up work moved counting into its own bundled plugin and made the
scans yield while traversing directories, keeping the editor usable during
large counts. Enable it under **Settings > Plugins > Treeview File Counts**;
it is off by default. TreeView also has separate row drawing hooks for plugins
that need to add gutter content or information beside a filename.

## Plugin Manager

The Plugin Manager has a refreshed interface with search, category and status
filters, sorting, a details pane, and checkboxes for selecting several plugins.
Install, upgrade or uninstall the selected entries without having to repeat
the operation for every row. Filters and selection state are retained through
the view's workspace restoration.

The package manager now uses `core.json`, and the old standalone JSON library
copies have been removed from local runs, packages and AppImages. The plugins
pin also includes the latest LSP and Ghostty updates, the Center Doc menu-bar
toggle for Zen mode, and Emoji fixes.

## Lower Idle CPU And UI Fixes

The main loop now uses SDL events for long waits and precise sleeps for short
frame delays. The unfocused grace period is renewed only when there is actual
activity. In the idle check shared with
[PR #645](https://github.com/pragtical/pragtical/pull/645), unfocused CPU usage
fell from 1.6% to about 0.24% of one core; the result depends on the workload
and enabled plugins.

Widget updates do less work, and collapsed panes no longer receive negative
dimensions that could keep hidden content animating and redrawing. Animations
also snap to their exact destination, allowing floating views to finish
closing instead of leaving a border behind.

There are fixes for layout invalidation after scaling, stray dividers from
hidden panes, nested list scrollbars, and selecting long TextBox input with
the mouse. TextBox inputs can no longer accidentally open a Save dialog when
using document save commands. SDL GPU also preserves color emoji RGB values,
applying text opacity without tinting the glyphs with the current text color.

## Build Updates

Bundled dependencies were refreshed to SDL3 3.4.18, SDL3\_image 3.4.8,
FreeType 2.15.0, PCRE2 10.49 and libpng 1.6.59, alongside updated Widget,
Plugin Manager, colors and plugins revisions. CI actions and macOS runners
were updated too.

Vinfall is now included in the About dialog's contributors list. Thanks to
everybody who reported issues, tested the rolling builds and helped improve
the editor!

Downloads on [GitHub](https://github.com/pragtical/pragtical/releases/tag/v3.14.0).

## Changes Log

### New Features

- Add application menus, floating views, command palette placement and toolbar docking
  ([#630](https://github.com/pragtical/pragtical/pull/630))
- Add optional command prompt state recall
  ([#631](https://github.com/pragtical/pragtical/pull/631))
- Add configurable project search placement
  ([#632](https://github.com/pragtical/pragtical/pull/632))
- Add workspace session management
  ([#633](https://github.com/pragtical/pragtical/pull/633))
- Add optional directory file counts to TreeView
  ([#623](https://github.com/pragtical/pragtical/pull/623))

### Enhancements

- Enable borderless mode and the application menu by default
  ([#643](https://github.com/pragtical/pragtical/pull/643))
- Embed the application menu in the borderless title bar
  ([#637](https://github.com/pragtical/pragtical/pull/637))
- Make more editor commands accessible from the application menus
  ([#640](https://github.com/pragtical/pragtical/pull/640))
- Add TreeView drawing hooks and asynchronous file counting
  ([#641](https://github.com/pragtical/pragtical/pull/641))
- Lower idle CPU usage
  ([#645](https://github.com/pragtical/pragtical/pull/645))
- Update Widget to reduce CPU usage
  ([#646](https://github.com/pragtical/pragtical/pull/646))
- Integrate the updated Plugin Manager and remove obsolete JSON library copies
  ([#624](https://github.com/pragtical/pragtical/pull/624))

### Fixes

- Allow disabling save commands for embedded document views
  ([#626](https://github.com/pragtical/pragtical/pull/626))
- Fix mouse selection and scrolling in TextBox inputs
  ([#628](https://github.com/pragtical/pragtical/pull/628))
- Fix Widget list layout and nested scrollbar input
  ([#629](https://github.com/pragtical/pragtical/pull/629))
- Fix UI scaling, hidden pane drawing and Widget integration
  ([#634](https://github.com/pragtical/pragtical/pull/634))
- Fix project search and floating view sliding animations
  ([#635](https://github.com/pragtical/pragtical/pull/635))
- Preserve color emoji colors in SDL GPU text rendering
  ([#636](https://github.com/pragtical/pragtical/pull/636))
- Keep centered command prompts stable while filtering
  ([#638](https://github.com/pragtical/pragtical/pull/638))
- Finish animations at their exact destination
  ([#639](https://github.com/pragtical/pragtical/pull/639))
- Keep split nodes and tab content within nonnegative bounds
  ([#647](https://github.com/pragtical/pragtical/pull/647))

### Build System

- Update CI actions, macOS runners and bundled dependencies
  ([#644](https://github.com/pragtical/pragtical/pull/644))
- Update plugins subproject
  ([a8f3b1a0](https://github.com/pragtical/plugins/commit/a8f3b1a0))

### Other Changes

- Add Vinfall to the About dialog contributors
  ([#642](https://github.com/pragtical/pragtical/pull/642))
