-
Notifications
You must be signed in to change notification settings - Fork 6
Release v6.0.3
The centre of this release is work on plugins and the plugin API: most
prominently the new Quick View support for panel plugins via an optional
get_quick_view(), and a substantial rework of spell checking as a plugin.
Quick View lets a panel preview neighbouring entries (including non-files
such as pod logs, kubectl describe output or connection settings), is kept
separate from get_local_copy() so previews are not made editable/copyable,
and raises MC_PANEL_PLUGIN_API_VERSION to 10 (out-of-tree plugins must be
rebuilt). It's implemented in k8s, docker, shell-link, ftp, sftp and s3;
preview files now live while shown, failed previews report inside the panel,
plugins can query quiet-messages via mc_pp_quiet_messages(), and previews
over FISH are capped by the new get helper (version 3) using SHELL_MAX_BYTES
(64 KB for a preview) while F3/F4 still fetch whole files; temporary
previews retain their 0600 mode fixing cases with pod manifests and S3 keys.
Surrounding that are coordinated plugin/infra and core fixes. Spell checking is
always built now: there's a Spell engine selection setting to choose aspell
or hunspell, the plugin dlopens the library at runtime and reports its
availability truthfully (including language/dictionary reporting), probes
aren't latched across restarts, the Check word dialog focuses suggestions and
Add word pre-fills input, and MC_SPELL_LOG=<file> lets you trace
engine/language/dictionary decisions. Packaging was updated (no
--enable-aspell, try libaspell.so.15 first, Arch/Debian/rpm changes
described) and the spell plugin gained a runtime soname search that counts down
libaspell.so.24...libaspell.so.15 and then libaspell. Other fixes include
mcterm terminal query replies via a VTERM_REPLY event (consuming DCS
strings and answering Device Attributes and XTGETTCAP), subshell handling for
plain sh (treat sh as unknown and disable the subshell to avoid hangs), a
TTY non-ASCII key redraw bug fix, fallback libarchive detection for arcmc
builds on systems without libarchive.pc, the removal of the cpio VFS in favor
of arcmc, and the removal of the tar filesystem from the VFS layer.
-
Quick View in panel plugins. Adds Quick View to panel plugins through a
new optional
get_quick_view(); an entry on a plugin panel can now be previewed in the neighbouring panel, including entries that are not files such as a pod's logs,kubectl describeoutput, or a connection's settings. This is kept separate fromget_local_copy()because that function also backsF4/F5/F6and would make those previewed entries editable and copyable, and the change raisesMC_PANEL_PLUGIN_API_VERSIONto 10 so out-of-tree plugins must be rebuilt; the feature is implemented in k8s, docker, shell-link, ftp, sftp and s3 while plugins without it keep working exactly as before. The preview file now lives as long as it is shown so structured view and other users reopening it by name find it, failed previews are reported inside the panel instead of a modal that froze the cursor, and plugins can see the core's quiet-messages state viamc_pp_quiet_messages(). Quick View over FISH no longer drags whole files across because theGETstream cannot be cut short, so the cap goes to the far end and thegethelper (version 3) takesSHELL_MAX_BYTESand sends exactlymin(size - offset, max)(64 KB for a preview), whileF3andF4still fetch whole files, and temporary previews keep the0600they are created with which fixes cases whereg_file_set_contents()had been dropping that to the umask for pod manifests and an S3 access key. (#108)
-
Spell engine selection. Spell checking no longer depends on
--enable-aspell: it is always built, only needs gmodule and dlopens the library at run time, and the engine is a plugin setting letting you choose aspell or hunspell, each with its own dictionary lookup. The plugin now reports its own state truthfully: it is unavailable when the library is present but no dictionary for the chosen language exists, the probe is no longer latched across restarts, and the messages name the language and list the dictionaries actually present instead of guessing package names. The ordering bug that made "Spell checking is off" answer any keystroke whileCtrl-Palone produced no response has been fixed. The Check word dialog now focuses the suggestion list soEnterreplaces the word instead of cancelling; a word with no suggestions still opens the dialog with Replace dropped and the focus on Add word, and Add word prefills an input while the language line shows the code the user typed and the engine answering. SetMC_SPELL_LOG=<file>to trace engine, language, dictionary, word and verdict in a release build. (#112)
-
Terminal query replies. This answers terminal capability queries that
shells such as fish 4 send before drawing the first prompt in the embedded
terminal. Previously the emulator did not consume DCS strings so
ESC Pand the following bytes were printed as normal text, the unanswered query stayed on the screen, and fish waited ten seconds, printed a warning over the screen and turned off part of its features. To fix this,mctermadds aVTERM_REPLYevent that carries the answer, consumes DCS strings, and replies to two questions:Device Attributeswith a VT100 that has an advanced video option, andXTGETTCAPwith "I know none of these". The answer is written to theptybymcterm, andmcviewignores the event when showing a terminal recording. (#123)
-
Subshell handling for plain sh. When your login shell is a plain sh (as
on FreeBSD), mc no longer aborts or hangs during subshell initialization. mc
now treats sh as an unknown shell: it preserves the command line and disables
the subshell. Previously mc attempted to drive sh like ash, but the BSD sh
does not expand command substitutions in PS1 so the subshell handshake never
completed and mc hung. The new behavior avoids that handshake and allows mc
to start in all modes without requiring
-u. (#117) -
TTY non-ASCII key handling. Typing a non-ASCII character in the editor
previously produced no visible character until the next keypress; a Russian
word stayed invisible until the cursor was moved. This was a regression from
PR #92. The cause was that
is_idle()usedSLang_input_pending(), which reads waiting bytes into S-Lang's own buffer, so the second byte of a multibyte character was consumed there,select()no longer saw it, andmcwaited for new input while one byte remained unread, preventing a redraw. (#113)
-
Fallback libarchive detection. The build now falls back to compiler
checks when
libarchive.pcis not provided bypkg-config. Those checks verify the presence ofarchive.hand the symbolarchive_read_freeand will configure thearcmcplugin when those are found. This allows FreeBSD builds to keep thearcmcplugin enabled when libarchive is present in the base system but nolibarchive.pcis installed, preventing the plugin from being dropped solely becausepkg-configis absent and preserving the existing behavior when alibarchive.pcis available. (#114)
-
Spell checking packaging. Spell checking is now built in unconditionally
and the packaging has been updated to match. The plugin no longer insists on
libaspell.soand now trieslibaspell.so.15first, which avoids telling users that the library is missing when distributions placelibaspell.soonly in the development package. The--enable-aspellconfigure option and the need for aspell headers have been removed, so the option and development packages were dropped from the Arch PKGBUILD and CI jobs, Debian now suggests aspell and hunspell, anddoc/INSTALLdocuments what is built. The rpm packaging stops producing bogus dependencies on/usr/sbin/perland/usr/sbin/python3by passing the interpreter paths to configure after Fedora 42 made/usr/sbina symlink tobin. The Gentoo ebuild required no change. (#115)
-
Spell plugin soname lookup. The spell plugin now searches for the
libaspell library at runtime across multiple sonames instead of relying on a
single hardcoded name. It counts down through the range
libaspell.so.24tolibaspell.so.15and tries the barelibaspellname last. No single version is written into the code any more. The answer of the search is remembered like the hunspell path so failed searches are not repeated, avoiding cases where mismatched sonames caused spell checking to stop and report a missing library. (#124) - cpio vfs replaced by arcmc. The cpio vfs backend has been removed and replaced with arcmc. (#119)
- Tar filesystem removal. The tar filesystem has been removed from the VFS layer. All registration, handlers and associated code paths were deleted and the build and tests were updated accordingly. This simplifies the VFS implementation and reduces the maintenance burden. Tar archives remain accessible via external tools or other VFS backends. (#118)