Releases: sayanarijit/xplr
Releases · sayanarijit/xplr
Release list
v0.21.3
Changes & fixes
- xplr will respect $XDG_CONFIG_HOME if set (thanks to @SolitudeSF and @noahmayr)
- Fixed "Illegal format character q" error seen on non GNU (including macOS and BSD) systems (thanks to @lcook).
- Fixed a UI issue causing lower priority styles being fully ignored (thanks to @duganchen).
- Press
f1to see the global help menu from any mode, without leaving the mode. - Current mode help menu will be displayed on top of the global help menu.
- Added build targets (including direct download links) for Apple Silicon, aarch64 Linux, Android, arm Linux (thanks to @khvzak, author of mlua, for his help).
- Added hook: on_selection_change.
- Documentation improvements.
v0.21.2
Changes & fixes
- Added
CustomLayout, a new custom panel type to allow nesting other layouts inside a static or dynamic layout. This will allow switching between different layouts dynamically, without having to switch modes. $LS_COLORSwill have lesser priority thanxplr.config.node_types.*.style.- Now, there's no default color set in
xplr.config.node_types.*.style, so xplr will default to$LS_COLORS. xplr -mnow usesjfto render and pass messages. This allows for a more flexible template syntax.- xplr will now ask before delete.
- For copy, move or symlink operations, xplr will ask what to do if a file with the same name exists.
- CLI help menu improvements
- Several fixes and improvements in documentation. Thanks to @kianmeng and @hensg for contributing.
v0.21.1
Fixes
- SelectAll and ToggleSelectAll (i.e.
ctrl-a) in a new directory will extend, instead of replace, the existing selected paths. - Fixed a UI bug causing random characters to turn bold.
v0.21.0
Changes & fixes
- IMPORTANT FIX: Fixed panic on permission denial on macOS.
- BREAKING: Some UI plugins might stop rendering colors. Wait for them to update.
- BREAKING:
xplr.config.general.sort_and_filter_ui.search_identifierhas been
renamed toxplr.config.general.sort_and_filter_ui.search_identifiers. - BREAKING: Resolved Node API will not contain the
permissionsfield anymore.
Use the utility functionxplr.util.nodeto get its permissions. - Layout
CustomContenthas been undocumented. It will stay for compatibility,
but you should prefer using the following new layouts, because they support
custom title:- Static
- Dynamic
- Improved the builtin search operation using the following new messages:
- Search
- SearchFromInput
- SearchFuzzyUnordered
- SearchFuzzyUnorderedFromInput
- SearchRegex
- SearchRegexFromInput
- SearchRegexUnordered
- SearchRegexUnorderedFromInput
- ToggleSearchAlgorithm
- EnableSearchOrder
- DisableSearchOrder
- ToggleSearchOrder
- Builtin fuzzy search will now support skim's search syntax.
- Default search algorithm:
xplr.config.general.search.algorithm = "Fuzzy". - Default search ordering:
xplr.config.general.search.unordered = false. - Improved selection operations:
- BREAKING: Selection list will be retained after each operation unless the
paths are renamed, moved, deleted, or cleared manually (ctrl-u). :slto list selection in a $PAGER.:ssto create softlink of the selected items.:shto create hardlink of the selected items.:seto edit selection list in your $EDITOR.- Better conflict handling: add suffix rather than overriding/skipping.
- BREAKING: Selection list will be retained after each operation unless the
- Navigate between the selected paths using the following messages:
- FocusPreviousSelection (
ctrl-p) - FocusNextSelection (
ctrl-n)
- FocusPreviousSelection (
- Added support for
LS_COLORS, along with the following utility functions for
applying better styling/theming.- xplr.util.lscolor
- xplr.util.paint
- xplr.util.textwrap
- xplr.util.style_mix
- By default colors will only be applied to the file name column in the table.
- File paths will be properly quoted.
- Column Renderer Argument will contain additional fields:
- style
- permissions
- Selection list will display the paths in shorthand format, based on the
current location. - Use the following config to specify how the paths in selection list should be
rendered:- xplr.config.general.selection.item.format
- xplr.config.general.selection.item.style
- Improved working with file permissions using the following utility functions:
- xplr.util.permissions_rwx
- xplr.util.permissions_octal
- Type
:pto edit file permissions interactively. - More utility function for QOL improvement:
- xplr.util.layout_replace
- xplr.util.relative_to
- xplr.util.shorthand
- xplr.util.clone
- xplr.util.exists
- xplr.util.is_dir
- xplr.util.is_file
- xplr.util.is_symlink
- xplr.util.is_absolute
- xplr.util.path_split
- xplr.util.node
- xplr.util.node_type
- xplr.util.shell_escape
- Fixed mime type detection for executables:
application/x-executable. - Added workaround for compatibility with macOS legacy coreutils.
- Fixed history navigation for non-existent paths.
- Optimized navigation with long list of selected items.
- Minor improvements in batch operations.
- Minor improvements in logging.
Thanks to @noahmayr for contributing to a major part of this release.
v0.20.2
Changes & fixes
- Updated UI to be more light theme and NO_COLOR friendly.
- Fixed creating files inside multiple subdirectories (e.g.
foo/bar/test.txt) (thanks to @soryeigeton for reporting and help debugging). - Added new hooks (contribution by @emsquid).
- on_mode_switch
- on_layout_switch
- Minor documentation fixes and updates (contribution by @BoolPurist).
- Dependency updates.
v0.20.1
Changes & fixes
- xplr shell will default to $SHELL, using
bashas a fallback. oh-my-zsh users please addTRAPEXIT() { echoti rmkx; }in your.zshrc(see #499 for more info). - (experiment) xplr will now display full-screen help menu in intermediate modes. Set
xplr.config.modes.builtin[mode].layout = nilto disable. e.g.xplr.config.modes.builtin.create.layout = nil - Added new utility functions to work with json and yaml data.
- xplr.util.from_json()
- xplr.util.to_json()
- xplr.util.from_yaml()
- xplr.util.to_yaml()
- Added new utility function
xplr.util.version()to get the currently running binary version (semantic versioning fields). - Fixed displaying multispace characters (Japanese, Chinese...), thanks to @Elvyria for contributing to tui-input.
- Fixed a bug causing the creation of a new directory named
.\nwhen creating new files containing space in the name. - Minor UI updates.
v0.20.0
Changes & fixes
- BREAKING: xplr shell (
:!) will default to null (\0) delimited pipes, as
opposed to newline (\n) delimited ones (i.e. will useCall0instead of
Call). - Use new messages for safer file path handling (
\0delimited):- Call0
- CallSilently0
- BashExec0
- BashExecSilently0
- Use new sub-commands for safer message passing:
-m FORMAT [ARGUMENT].../--pipe-msg-in FORMAT [ARGUMENT]...-M FORMAT [ARGUMENT].../--print-msg-in FORMAT [ARGUMENT]...
Where FORMAT is a YAML string that may contain%s,%qand%%
placeholders and ARGUMENT is the value per placeholder. Seeinit.lua.
- Following hooks can be defined in the config files using an optional
return { on_* = { list, of, messages }, ... }statement at the end.- on_load
- on_focus_change
- on_directory_change
- Use
--vrootto isolate navigation of an xplr session inside a specific
directory. Interaction still requires passing full path, and shell,
lua functions etc still can access paths outside vroot. - Use the following messages to switch vroot at runtime, or the use key
bindings available in the new builtin mode "vroot" (mapped to:v).- SetVroot
- UnsetVroot
- ToggleVroot
- ResetVroot
- Use
$XPLR_INITIAL_PWDand Lua equivalent to implement workspace like
features without using virtual root. Use keysgito go to the initial
working directory from anywhere. - Use the convenient
xplr.utilutility functions in your Lua function calls.
See xplr.util API docs. - Improved CLI errors.
- Finished documentation (finally).
- UI updates to handle newlines in path.
Thanks to @jmcantrell for reporting and help implement fix for the critical newline-in-pathname bug.
v0.20.0-beta.3
This pre-release is for testing the "vroot" mode key bindings available via :v* keys, and the new messages ToggleVroot and UnsetVroot.
v0.20.0-beta.2
This pre-release is for testing the new vroot feature with --vroot, SetVroot, ResetVroot, and the on_* hooks defined as return { on_* = [ list, of, messages ]}
v0.20.0-beta.1
This pre-release is for testing the new return { on_load = { list, of, messages } } hook definition in config files, and also for trying the improved -m/-M API.