@ -83,7 +83,7 @@
< nav id = "sidebar" class = "sidebar" aria-label = "Table of contents" >
< div class = "sidebar-scrollbox" >
< ol class = "chapter" > < li class = "chapter-item expanded " > < a href = "introduction.html" > < strong aria-hidden = "true" > 1.< / strong > Introduction< / a > < / li > < li class = "chapter-item expanded " > < a href = "quickstart.html" > < strong aria-hidden = "true" > 2.< / strong > Quickstart< / a > < / li > < li > < ol class = "section" > < li class = "chapter-item expanded " > < a href = "install.html" > < strong aria-hidden = "true" > 2.1.< / strong > Install< / a > < / li > < li class = "chapter-item expanded " > < a href = "post-install.html" > < strong aria-hidden = "true" > 2.2.< / strong > Post Install< / a > < / li > < / ol > < / li > < li class = "chapter-item expanded " > < a href = "configuration.html" > < strong aria-hidden = "true" > 3.< / strong > Configuration< / a > < / li > < li > < ol class = "section" > < li class = "chapter-item expanded " > < a href = "general-config.html" > < strong aria-hidden = "true" > 3.1.< / strong > General Config< / a > < / li > < li class = "chapter-item expanded " > < a href = "modes.html" > < strong aria-hidden = "true" > 3.2.< / strong > Modes< / a > < / li > < li class = "chapter-item expanded " > < a href = "message.html" > < strong aria-hidden = "true" > 3.3.< / strong > Message< / a > < / li > < li class = "chapter-item expanded " > < a href = "layouts.html" > < strong aria-hidden = "true" > 3.4.< / strong > Layouts< / a > < / li > < li class = "chapter-item expanded " > < a href = "node_types.html" > < strong aria-hidden = "true" > 3.5.< / strong > Node Types< / a > < / li > < li class = "chapter-item expanded " > < a href = "style.html" > < strong aria-hidden = "true" > 3.6.< / strong > Style< / a > < / li > < / ol > < / li > < li class = "chapter-item expanded " > < a href = "default-key-bindings.html" > < strong aria-hidden = "true" > 4.< / strong > Default Key Bindings< / a > < / li > < li class = "chapter-item expanded " > < a href = "plugin.html" > < strong aria-hidden = "true" > 5.< / strong > Plugin< / a > < / li > < li > < ol class = "section" > < li class = "chapter-item expanded " > < a href = "installing-plugins.html" > < strong aria-hidden = "true" > 5.1.< / strong > Installing Plugins< / a > < / li > < li class = "chapter-item expanded " > < a href = "writing-plugins.html" > < strong aria-hidden = "true" > 5.2.< / strong > Writing Plugins< / a > < / li > < li class = "chapter-item expanded " > < a href = "awesome-plugins.html" > < strong aria-hidden = "true" > 5.3.< / strong > Awesome Plugins< / a > < / li > < / ol > < / li > < li class = "chapter-item expanded " > < a href = "todo.html" > < strong aria-hidden = "true" > 6.< / strong > TODO< / a > < / li > < li class = "chapter-item expanded " > < a href = "alternatives.html" > < strong aria-hidden = "true" > 7.< / strong > Alternatives< / a > < / li > < li class = "chapter-item expanded " > < a href = "upgrade-guide.html" > < strong aria-hidden = "true" > 8.< / strong > Upgrade Guide< / a > < / li > < li class = "chapter-item expanded " > < a href = "community.html" > < strong aria-hidden = "true" > 9.< / strong > Community< / a > < / li > < li class = "chapter-item expanded " > < a href = "contribute.html" > < strong aria-hidden = "true" > 10.< / strong > Contribute< / a > < / li > < / ol > < / div >
< ol class = "chapter" > < li class = "chapter-item expanded " > < a href = "introduction.html" > < strong aria-hidden = "true" > 1.< / strong > Introduction< / a > < / li > < li class = "chapter-item expanded " > < a href = "quickstart.html" > < strong aria-hidden = "true" > 2.< / strong > Quickstart< / a > < / li > < li > < ol class = "section" > < li class = "chapter-item expanded " > < a href = "install.html" > < strong aria-hidden = "true" > 2.1.< / strong > Install< / a > < / li > < li class = "chapter-item expanded " > < a href = "post-install.html" > < strong aria-hidden = "true" > 2.2.< / strong > Post Install< / a > < / li > < / ol > < / li > < li class = "chapter-item expanded " > < a href = "configuration.html" > < strong aria-hidden = "true" > 3.< / strong > Configuration< / a > < / li > < li > < ol class = "section" > < li class = "chapter-item expanded " > < a href = "general-config.html" > < strong aria-hidden = "true" > 3.1.< / strong > General Config< / a > < / li > < li class = "chapter-item expanded " > < a href = "modes.html" > < strong aria-hidden = "true" > 3.2.< / strong > Modes< / a > < / li > < li class = "chapter-item expanded " > < a href = "message.html" > < strong aria-hidden = "true" > 3.3.< / strong > Message< / a > < / li > < li class = "chapter-item expanded " > < a href = "layouts.html" > < strong aria-hidden = "true" > 3.4.< / strong > Layouts< / a > < / li > < li class = "chapter-item expanded " > < a href = "node_types.html" > < strong aria-hidden = "true" > 3.5.< / strong > Node Types< / a > < / li > < li class = "chapter-item expanded " > < a href = "style.html" > < strong aria-hidden = "true" > 3.6.< / strong > Style< / a > < / li > < li class = "chapter-item expanded " > < a href = "sorting.html" > < strong aria-hidden = "true" > 3.7.< / strong > Sorting< / a > < / li > < li class = "chapter-item expanded " > < a href = "filtering.html" > < strong aria-hidden = "true" > 3.8.< / strong > Filtering< / a > < / li > < / ol > < / li > < li class = "chapter-item expanded " > < a href = "default-key-bindings.html" > < strong aria-hidden = "true" > 4.< / strong > Default Key Bindings< / a > < / li > < li class = "chapter-item expanded " > < a href = "plugin.html" > < strong aria-hidden = "true" > 5.< / strong > Plugin< / a > < / li > < li > < ol class = "section" > < li class = "chapter-item expanded " > < a href = "installing-plugins.html" > < strong aria-hidden = "true" > 5.1.< / strong > Installing Plugins< / a > < / li > < li class = "chapter-item expanded " > < a href = "writing-plugins.html" > < strong aria-hidden = "true" > 5.2.< / strong > Writing Plugins< / a > < / li > < li class = "chapter-item expanded " > < a href = "awesome-plugins.html" > < strong aria-hidden = "true" > 5.3.< / strong > Awesome Plugins< / a > < / li > < / ol > < / li > < li class = "chapter-item expanded " > < a href = "todo.html" > < strong aria-hidden = "true" > 6.< / strong > TODO< / a > < / li > < li class = "chapter-item expanded " > < a href = "alternatives.html" > < strong aria-hidden = "true" > 7.< / strong > Alternatives< / a > < / li > < li class = "chapter-item expanded " > < a href = "upgrade-guide.html" > < strong aria-hidden = "true" > 8.< / strong > Upgrade Guide< / a > < / li > < li class = "chapter-item expanded " > < a href = "community.html" > < strong aria-hidden = "true" > 9.< / strong > Community< / a > < / li > < li class = "chapter-item expanded " > < a href = "contribute.html" > < strong aria-hidden = "true" > 10.< / strong > Contribute< / a > < / li > < / ol > < / div >
< div id = "sidebar-resize-handle" class = "sidebar-resize-handle" > < / div >
< / nav >
@ -387,7 +387,79 @@ action.</p>
< p > Style of the cursor.< / p >
< h2 id = "initial_layout" > < a class = "header" href = "#initial_layout" > initial_layout< / a > < / h2 >
< p > Type: string< / p >
< p > The name of one of the defined < a href = "layouts.html" > layouts< / a > to use when xplr loads.< / p >
< p > The name of one of the < a href = "layouts.html" > layout< / a > to use when xplr loads.< / p >
< h2 id = "initial_mode" > < a class = "header" href = "#initial_mode" > initial_mode< / a > < / h2 >
< p > Type: string< / p >
< p > The name of one of the < a href = "modes.html" > mode< / a > to use when xplr loads.< / p >
< h2 id = "initial_sorting" > < a class = "header" href = "#initial_sorting" > initial_sorting< / a > < / h2 >
< p > Type: list of < a href = "sorting.html#node-sorter-applicable" > Node Sorter Applicable< / a > < / p >
< p > Initial group if sorters applied to the nodes list in the table.< / p >
< h2 id = "tablestyle" > < a class = "header" href = "#tablestyle" > table.style< / a > < / h2 >
< p > Type: < a href = "style.html" > Style< / a > < / p >
< p > Default style of the table.< / p >
< h2 id = "tablecol_spacing" > < a class = "header" href = "#tablecol_spacing" > table.col_spacing< / a > < / h2 >
< p > Type: nullable integer< / p >
< p > Default spacing of the columns in the table.< / p >
< h2 id = "tablecol_widths" > < a class = "header" href = "#tablecol_widths" > table.col_widths< / a > < / h2 >
< p > Type: nullable list of < a href = "layouts.html#constraint" > Constraint< / a > < / p >
< p > Width of each column in the table.< / p >
< h2 id = "tableheaderheight" > < a class = "header" href = "#tableheaderheight" > table.header.height< / a > < / h2 >
< p > Type: nullable integer< / p >
< p > Height of the table header.< / p >
< h2 id = "tableheaderstyle" > < a class = "header" href = "#tableheaderstyle" > table.header.style< / a > < / h2 >
< p > Type: < a href = "style.html" > Style< / a > < / p >
< p > Style of table header.< / p >
< h2 id = "tableheadercols" > < a class = "header" href = "#tableheadercols" > table.header.cols< / a > < / h2 >
< p > Type: List of column configuration< / p >
< p > Each column config contains < code > format< / code > field (string) and < code > style< / code > field
(< a href = "style.html" > Style< / a > ), that define the content and style of header.< / p >
< h2 id = "tablerowheight" > < a class = "header" href = "#tablerowheight" > table.row.height< / a > < / h2 >
< p > Type: nullable integer< / p >
< p > Height of each row in the table.< / p >
< h2 id = "tablerowstyle" > < a class = "header" href = "#tablerowstyle" > table.row.style< / a > < / h2 >
< p > Type: < a href = "style.html" > Style< / a > < / p >
< p > Style of table rows.< / p >
< h2 id = "tablerowcols" > < a class = "header" href = "#tablerowcols" > table.row.cols< / a > < / h2 >
< p > Type: List of column configuration< / p >
< p > Each column config contains < code > format< / code > field (string) and < code > style< / code > field
(< a href = "style.html" > Style< / a > ).< / p >
< p > However, unlike < a href = "general-config.html#tableheadercols" > table.header.cols< / a > , the < code > format< / code > field here
points to a Lua function that receives a
< a href = "https://docs.rs/xplr/latest/xplr/ui/struct.NodeUiMetadata.html" > special argument< / a >
as input and returns a string that will be displayed in the column.< / p >
< p > TODO: Document the argument fields here.< / p >
< p > xplr by default provides the following functions:< / p >
< ul >
< li > < code > xplr.fn.builtin.fmt_general_table_row_cols_0< / code > < / li >
< li > < code > xplr.fn.builtin.fmt_general_table_row_cols_1< / code > < / li >
< li > < code > xplr.fn.builtin.fmt_general_table_row_cols_2< / code > < / li >
< li > < code > xplr.fn.builtin.fmt_general_table_row_cols_3< / code > < / li >
< li > < code > xplr.fn.builtin.fmt_general_table_row_cols_4< / code > < / li >
< / ul >
< p > You can either overwrite these functions, or create new functions in
< code > xplr.fn.custom< / code > and point to them.< / p >
< p > Terminal colors are supported.< / p >
< p > Example:< / p >
< pre > < code class = "language-lua" > xplr.fn.custom.fmt_simple_column = function(m)
return m.prefix .. m.relative_path .. m.suffix
end
xplr.config.general.table.header.cols = {
{ format = " path" }
}
xplr.config.general.table.row.cols = {
{ format = " custom.fmt_simple_column" }
}
xplr.config.general.table.col_widths = {
{ Percentage = 100 }
}
-- With this config, you should only see a single column displaying the
-- relative paths.
< / code > < / pre >
< hr / >
< p > TODO: Continue documentation< / p >
< div style = "break-before: page; page-break-before: always;" > < / div > < h1 id = "modes" > < a class = "header" href = "#modes" > Modes< / a > < / h1 >
< p > xplr is a modal file explorer. That means the users switch between different
@ -1047,6 +1119,130 @@ xplr.config.general.cursor.style.bg = { Rgb = { 100, 150, 200 } }
xplr.config.general.cursor.style.add_modifiers = { " Bold" , " Italic" }
xplr.config.general.cursor.style.sub_modifiers = { " Hidden" }
< / code > < / pre >
< div style = "break-before: page; page-break-before: always;" > < / div > < h1 id = "sorting" > < a class = "header" href = "#sorting" > Sorting< / a > < / h1 >
< p > xplr supports sorting paths by different properties. The sorting mechanism
works like a pipeline, which in visible in the < code > Sort & filter< / code > panel.< / p >
< p > Example:< / p >
< pre > < code > size↑ › [i]rel↓ › [c]dir↑ › [c]file↑ › sym↑
< / code > < / pre >
< p > This line means that the nodes visible on the table will be first sorted by
relative file size, then by case insensitive relative path, then by the
canonical (symlink resolved) type of the node, and finally by whether or not
the node is a symlink.< / p >
< p > The arrows denote the order.< / p >
< p > Each part of this pipeline is called < a href = "sorting.html#node-sorter-applicable" > Node Sorter Applicable< / a > .< / p >
< h2 id = "node-sorter-applicable" > < a class = "header" href = "#node-sorter-applicable" > Node Sorter Applicable< / a > < / h2 >
< p > It contains the following information:< / p >
< ul >
< li > < a href = "sorting.html#sorter" > sorter< / a > < / li >
< li > < a href = "sorting.html#reverse" > reverse< / a > < / li >
< / ul >
< h3 id = "sorter" > < a class = "header" href = "#sorter" > sorter< / a > < / h3 >
< p > A sorter can be one of the following:< / p >
< ul >
< li > " ByRelativePath" < / li >
< li > " ByIRelativePath" < / li >
< li > " ByExtension" < / li >
< li > " ByIsDir" < / li >
< li > " ByIsFile" < / li >
< li > " ByIsSymlink" < / li >
< li > " ByIsBroken" < / li >
< li > " ByIsReadonly" < / li >
< li > " ByMimeEssence" < / li >
< li > " BySize" < / li >
< li > " ByCanonicalAbsolutePath" < / li >
< li > " ByICanonicalAbsolutePath" < / li >
< li > " ByCanonicalExtension" < / li >
< li > " ByCanonicalIsDir" < / li >
< li > " ByCanonicalIsFile" < / li >
< li > " ByCanonicalIsReadonly" < / li >
< li > " ByCanonicalMimeEssence" < / li >
< li > " ByCanonicalSize" < / li >
< li > " BySymlinkAbsolutePath" < / li >
< li > " ByISymlinkAbsolutePath" < / li >
< li > " BySymlinkExtension" < / li >
< li > " BySymlinkIsDir" < / li >
< li > " BySymlinkIsFile" < / li >
< li > " BySymlinkIsReadonly" < / li >
< li > " BySymlinkMimeEssence" < / li >
< li > " BySymlinkSize" < / li >
< / ul >
< p > TODO: document each< / p >
< h3 id = "reverse" > < a class = "header" href = "#reverse" > reverse< / a > < / h3 >
< p > Type: boolean< / p >
< p > It defined the direction of the order.< / p >
< h2 id = "example-4" > < a class = "header" href = "#example-4" > Example< / a > < / h2 >
< pre > < code class = "language-lua" > xplr.config.general.initial_sorting = {
{ sorter = " ByCanonicalIsDir" , reverse = true },
{ sorter = " ByIRelativePath" , reverse = false },
}
< / code > < / pre >
< p > This snippet defines the initial sorting logic to be applied when xplr loads.< / p >
< div style = "break-before: page; page-break-before: always;" > < / div > < h1 id = "filtering" > < a class = "header" href = "#filtering" > Filtering< / a > < / h1 >
< p > xplr supports filtering paths by different properties. The filtering mechanism
works like a pipeline, which in visible in the < code > Sort & filter< / code > panel.< / p >
< p > Example:< / p >
< pre > < code > rel!^. › [i]abs=~abc › [i]rel!~xyz
< / code > < / pre >
< p > This line means that the nodes visible on the table will first be filtered by
the condition: < em > relative path does not start with < code > .< / code > < / em > , then by the condition:
< em > absolute path contains < code > abc< / code > (case insensitive)< / em > , and finally by the
condition: < em > relative path does not contain < code > xyz< / code > < / em > .< / p >
< p > Each part of this pipeline is called < a href = "filtering.html#node-filter-applicable" > Node Filter Applicable< / a > .< / p >
< h2 id = "node-filter-applicable" > < a class = "header" href = "#node-filter-applicable" > Node Filter Applicable< / a > < / h2 >
< p > It contains the following information:< / p >
< ul >
< li > < a href = "filtering.html#filter" > filter< / a > < / li >
< li > < a href = "filtering.html#input" > input< / a > < / li >
< / ul >
< h3 id = "filter" > < a class = "header" href = "#filter" > filter< / a > < / h3 >
< p > A filter can be one of the following:< / p >
< ul >
< li > " RelativePathIs" < / li >
< li > " RelativePathIsNot" < / li >
< li > " IRelativePathIs" < / li >
< li > " IRelativePathIsNot" < / li >
< li > " RelativePathDoesStartWith" < / li >
< li > " RelativePathDoesNotStartWith" < / li >
< li > " IRelativePathDoesStartWith" < / li >
< li > " IRelativePathDoesNotStartWith" < / li >
< li > " RelativePathDoesContain" < / li >
< li > " RelativePathDoesNotContain" < / li >
< li > " IRelativePathDoesContain" < / li >
< li > " IRelativePathDoesNotContain" < / li >
< li > " RelativePathDoesEndWith" < / li >
< li > " RelativePathDoesNotEndWith" < / li >
< li > " IRelativePathDoesEndWith" < / li >
< li > " IRelativePathDoesNotEndWith" < / li >
< li > " AbsolutePathIs" < / li >
< li > " AbsolutePathIsNot" < / li >
< li > " IAbsolutePathIs" < / li >
< li > " IAbsolutePathIsNot" < / li >
< li > " AbsolutePathDoesStartWith" < / li >
< li > " AbsolutePathDoesNotStartWith" < / li >
< li > " IAbsolutePathDoesStartWith" < / li >
< li > " IAbsolutePathDoesNotStartWith" < / li >
< li > " AbsolutePathDoesContain" < / li >
< li > " AbsolutePathDoesNotContain" < / li >
< li > " IAbsolutePathDoesContain" < / li >
< li > " IAbsolutePathDoesNotContain" < / li >
< li > " AbsolutePathDoesEndWith" < / li >
< li > " AbsolutePathDoesNotEndWith" < / li >
< li > " IAbsolutePathDoesEndWith" < / li >
< li > " IAbsolutePathDoesNotEndWith" < / li >
< / ul >
< p > TODO: document each< / p >
< h3 id = "input" > < a class = "header" href = "#input" > input< / a > < / h3 >
< p > Type: string< / p >
< p > The input for the condition.< / p >
< h2 id = "example-5" > < a class = "header" href = "#example-5" > Example:< / a > < / h2 >
< pre > < code class = "language-lua" > ToggleNodeFilter = {
filter = " RelativePathDoesNotStartWith" ,
input = " ."
}
< / code > < / pre >
< p > Here, < code > ToggleNodeFilter< / code > is a < a href = "message.html" > message< / a > that adds or removes
(toggles) the filter applied.< / p >
< div style = "break-before: page; page-break-before: always;" > < / div > < h1 id = "default-key-bindings" > < a class = "header" href = "#default-key-bindings" > Default Key Bindings< / a > < / h1 >
< p > The default key binding is inspired by < a href = "https://www.vim.org/" > vim< / a > and slightly
overlaps with < a href = "https://github.com/jarun/nnn/" > nnn< / a > , but it's supposed to be
@ -1087,7 +1283,7 @@ of <a href="modes.html">modes</a> and the key mappings for each mode.</p>
< tr > < td > ctrl-c< / td > < td > < / td > < td > terminate< / td > < / tr >
< tr > < td > esc< / td > < td > < / td > < td > escape< / td > < / tr >
< / tbody > < / table >
< h3 id = "filter "> < a class = "header" href = "#filter "> filter< / a > < / h3 >
< h3 id = "filter -1 "> < a class = "header" href = "#filter -1 "> filter< / a > < / h3 >
< table > < thead > < tr > < th > key< / th > < th > remaps< / th > < th > action< / th > < / tr > < / thead > < tbody >
< tr > < td > R< / td > < td > < / td > < td > relative does not contain< / td > < / tr >
< tr > < td > backspace< / td > < td > < / td > < td > remove last filter< / td > < / tr >
@ -1211,7 +1407,7 @@ of <a href="modes.html">modes</a> and the key mappings for each mode.</p>
< tr > < td > r< / td > < td > < / td > < td > by relative path< / td > < / tr >
< tr > < td > s< / td > < td > < / td > < td > by size< / td > < / tr >
< / tbody > < / table >
< h3 id = "filter- 1 "> < a class = "header" href = "#filter- 1 "> filter< / a > < / h3 >
< h3 id = "filter- 2 "> < a class = "header" href = "#filter- 2 "> filter< / a > < / h3 >
< table > < thead > < tr > < th > key< / th > < th > remaps< / th > < th > action< / th > < / tr > < / thead > < tbody >
< tr > < td > R< / td > < td > < / td > < td > relative does not contain< / td > < / tr >
< tr > < td > backspace< / td > < td > < / td > < td > remove last filter< / td > < / tr >
@ -1433,7 +1629,7 @@ e.g. <code>app-1.0.0</code> with <code>config-1.1.0</code>. But vice versa is fi
compatibility.< / p >
< / details >
< h3 id = "instructions" > < a class = "header" href = "#instructions" > Instructions< / a > < / h3 >
< h4 id = "a-hrefhttpsgithubcomsayanarijitxplrreleasestagv0137v0137a---a-hrefhttpsgithubcomsayanarijitxplrreleasestagv014 2v0142 a"> < a class = "header" href = "#a-hrefhttpsgithubcomsayanarijitxplrreleasestagv0137v0137a---a-hrefhttpsgithubcomsayanarijitxplrreleasestagv014 2v0142 a"> < a href = "https://github.com/sayanarijit/xplr/releases/tag/v0.13.7" > v0.13.7< / a > -> < a href = "https://github.com/sayanarijit/xplr/releases/tag/v0.14. 2"> v0.14.2 < / a > < / a > < / h4 >
< h4 id = "a-hrefhttpsgithubcomsayanarijitxplrreleasestagv0137v0137a---a-hrefhttpsgithubcomsayanarijitxplrreleasestagv014 3v0143 a"> < a class = "header" href = "#a-hrefhttpsgithubcomsayanarijitxplrreleasestagv0137v0137a---a-hrefhttpsgithubcomsayanarijitxplrreleasestagv014 3v0143 a"> < a href = "https://github.com/sayanarijit/xplr/releases/tag/v0.13.7" > v0.13.7< / a > -> < a href = "https://github.com/sayanarijit/xplr/releases/tag/v0.14. 3"> v0.14.3 < / a > < / a > < / h4 >
< ul >
< li > macOS users need to place their config file (< code > init.lua< / code > ) in
< code > $HOME/.config/xplr/< / code > or < code > /etc/xplr/< / code > .< / li >
@ -1442,6 +1638,10 @@ compatibility.</p>
for < a href = "https://github.com/sayanarijit/xplr/pull/229#issue-662426960" > FIFO based file previews< / a > .< / li >
< li > You can disable the recover mode using < code > config.general.disable_recover_mode = true< / code > .< / li >
< li > Try running < code > xplr --help< / code > . Yes, CLI has been implemented.< / li >
< li > Since version < code > v0.14.3< / code > , < code > StartFifo< / code > and < code > ToggleFifo< / code > will write to the FIFO
path when called. So, there's no need to pipe the focus path explicitely.< / li >
< li > Since version < code > v0.14.3< / code > , general config < code > xplr.config.start_fifo< / code > is available
which can be set to a file path to start a fifo when xplr starts.< / li >
< / ul >
< p > < sub > Like this project so far? < strong > < a href = "contribute.html" > Please consider contributing< / a > < / strong > .< / sub > < / p >
< h4 id = "a-hrefhttpsgithubcomsayanarijitxplrreleasestagv0121v0121a---a-hrefhttpsgithubcomsayanarijitxplrreleasestagv0137v0137a" > < a class = "header" href = "#a-hrefhttpsgithubcomsayanarijitxplrreleasestagv0121v0121a---a-hrefhttpsgithubcomsayanarijitxplrreleasestagv0137v0137a" > < a href = "https://github.com/sayanarijit/xplr/releases/tag/v0.12.1" > v0.12.1< / a > -> < a href = "https://github.com/sayanarijit/xplr/releases/tag/v0.13.7" > v0.13.7< / a > < / a > < / h4 >