Skip to content

refactor!: deprecate [manager] in favor of [mgr]#2803

Merged
sxyazi merged 2 commits intomainfrom
pr-f136a0cf
May 28, 2025
Merged

refactor!: deprecate [manager] in favor of [mgr]#2803
sxyazi merged 2 commits intomainfrom
pr-f136a0cf

Conversation

@sxyazi
Copy link
Owner

@sxyazi sxyazi commented May 28, 2025

Yazi's design philosophy is to use the same terminology for the same things to avoid confusion.

This PR deprecates [manager] and introduces the new [mgr] as its direct replacement, ensuring consistency with the others:

Deprecation

# yazi.toml / keymap.toml / theme.toml / flavor.toml
- [manager]
+ [mgr]

This PR includes an automatic migration for yazi.toml, keymap.toml, and theme.toml

When Yazi starts up, it will check if the user's configuration contains [manager], if it does, backup the existing configuration and update the user's configuration with the new [mgr] to ensure a smoother transition to the new [mgr].

Note that flavor.toml will not be automatically migrated, as it's not a user-owned file. If you are using a flavor from yazi-rs/flavors, run ya pkg upgrade to update to the latest commit for support.

@sxyazi sxyazi requested a review from Copilot May 28, 2025 12:35
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

@sxyazi sxyazi requested a review from Copilot May 28, 2025 12:40
@sxyazi sxyazi merged commit 8a4d495 into main May 28, 2025
6 checks passed
@sxyazi sxyazi deleted the pr-f136a0cf branch May 28, 2025 12:41
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR deprecates the [manager] table in favor of a unified [mgr] nomenclature across configuration structures and presets, and adds a runtime migration to automatically update existing user configs.

  • Removed serde(rename = "manager") attributes and standardized the mgr field.
  • Updated default preset TOML files to use [mgr] instead of [manager].
  • Introduced a migrate function and wrapped config deserialization to auto-migrate old [manager] entries.

Reviewed Changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
yazi-config/src/yazi.rs Removed #[serde(rename = "manager")] on pub mgr
yazi-config/src/theme/theme.rs Removed #[serde(rename = "manager")] on pub mgr
yazi-config/src/lib.rs Switched direct file reads to migrate(...), and added migrate fn
yazi-config/src/keymap/keymap.rs Removed #[serde(rename = "manager")] on pub mgr
yazi-config/preset/yazi-default.toml Renamed [manager] to [mgr]
yazi-config/preset/theme-light.toml Renamed [manager] to [mgr]
yazi-config/preset/theme-dark.toml Renamed [manager] to [mgr]
yazi-config/preset/keymap-default.toml Renamed [manager] to [mgr]
yazi-config/Cargo.toml Added toml_edit = "0.22.26" for document editing
Comments suppressed due to low confidence (2)

yazi-config/src/lib.rs:88

  • [nitpick] Consider adding unit tests for migrate to cover cases such as existing [mgr], legacy [manager], parse failures, and missing files, ensuring the migration logic behaves as expected.
fn migrate(p: std::path::PathBuf) -> String {

yazi-config/src/lib.rs:92

  • The type toml_edit::DocumentMut does not exist; the toml_edit crate provides toml_edit::Document for parsing and in-place editing. Update this to old.parse::<toml_edit::Document>().
let Ok(mut doc) = old.parse::<toml_edit::DocumentMut>() else {

sxyazi added a commit to yazi-rs/flavors that referenced this pull request May 28, 2025
@uncenter
Copy link
Contributor

This makes the configuration file far less readable. Why are we opting for shorter, more ambiguous wording?

@sxyazi
Copy link
Owner Author

sxyazi commented May 28, 2025

Shortening "manager" to "mgr" cuts down on a few keystrokes, I hope it boosts the QoL, especially since it's the term used most frequently across all layers.

Ideally, we should balance practicality (keeping it short) with correctness (using the complete word), and I've always tried to do that - naming things when designing a feature takes a lot of effort, but sometimes there's an irreconcilable conflict between the two and when it's hard to find a short, complete word, based on my past patterns, I tend to lean more towards practicality.

@uncenter
Copy link
Contributor

I'd rather [yazi-file-manager-manager-configuration-section] than [mgr]. Extreme brevity should not be the goal while naming configuration options. I, and others - judging by the reactions to my previous comment - feel that the UX is actually worsened, not improved, by this change. A major and breaking change like this might serve well as an RFC to get community feedback first.

@sxyazi
Copy link
Owner Author

sxyazi commented May 28, 2025 via email

@uncenter
Copy link
Contributor

I'd propose moving the manager section options to the top-level of configuration (no specific section) or calling the section something like "[general]" -- though the latter is no more "optimal" in brevity than the original "[manager]" as they are both 7 character words.

@sxyazi
Copy link
Owner Author

sxyazi commented May 28, 2025

moving the manager section options to the top-level of configuration (no specific section)

How should I access them with rt and th? Currently, I use rt.mgr.sort_by to access:

sort_by = "alphabetical"

Does that mean, after this change, it becomes rt.sort_by? That sounds odd, because it would mean mixing the values from yazi.toml with others that might not even belong to yazi.toml (like rt.args, rt.term) in the same level:

impl Runtime {
pub fn compose(lua: &Lua) -> mlua::Result<Value> {
Composer::make(lua, 10, |lua, key| {
match key {
b"args" => Self::args(lua)?,
b"term" => Self::term(lua)?,
b"mgr" => Self::mgr(lua)?,
b"plugin" => super::Plugin::compose(lua)?,
b"preview" => Self::preview(lua)?,
b"tasks" => Self::tasks(lua)?,

calling the section something like "[general]" -- though the latter is no more "optimal" in brevity than the original "[manager]" as they are both 7 character words.

No, [manager] is not for general configuration, it's the configuration for the [manager] layer, which is used to display the 3-column layout. For general configuration, I plan to introduce a new [app] in the future, and pull out some of the existing configs of [manager] into it, such as mouse_events and title_format - it already exists, just hasn't been used yet:

pub enum Layer {
#[default]
App,
Mgr,

Besides, it isn't any shorter than the original [manager], which would make code like:

ui.Bar(ui.Edge.RIGHT):area(self._chunks[1]):symbol(th.mgr.border_symbol):style(th.mgr.border_style),
ui.Bar(ui.Edge.LEFT):area(self._chunks[3]):symbol(th.mgr.border_symbol):style(th.mgr.border_style),

even longer.

hankertrix added a commit to hankertrix/augment-command.yazi that referenced this pull request May 29, 2025
Breaking changes:
- All instances of mgr_emit has been replaced with emit.
- New emit command requires the Yazi version 25.5.28, as it makes
  use of the emit command to emit any Yazi command, including input,
  tab, and app commands by using the component:command syntax.
- New copy command requires the latest Yazi version to work
  properly, as the copy command only has the hovered flag after
  sxyazi/yazi#2709.
  The augmented copy command provides the same behaviour as the
  augmented remove and rename commands, determining an item group to
  operate on instead of always operating on the selected items.

Changes:
- Most errors that are non-trivial now throw instead of showing an error
  notification.
- The archive command now creates a zip archive with the name of the
  hovered item when an archive name isn't given and the item group is
  determined to be the hovered item. This makes it more convenient to
  create archives containing a single file or folder. The behaviour when
  the item group is determined to be the selected items is unchanged.
- It also now adds a .zip file extension when the archive name given has
  no file extension to create a zip archive by default.
- Added an overwrite prompt to the archive command which appears if the
  archive that is being created already exists.
  The configuration for this overwrite prompt is the same as the
  overwrite prompt for the create command.
- Added the --force flag to the archive command to automatically
  overwrite the existing archive without showing the confirmation
  prompt.
- The editor command now automatically calls sudo -e to edit a file that
  is owned by the root user if sudo is installed and sudo -e is
  supported, otherwise, it will revert to the default editor behaviour.
- Added a small delay before revealing the archive to reduce the amount
  of jumping the cursor does, similar to the create command.
- The delay before revealing the file for the create command has been
  decreased by a factor of 10.
- The prompts of all commands can now be configured using the th object
  for built-in commands, and th.augment_command for new commands,
  or new features of existing commands introduced by the plugin.
- The video generation script has been updated to include the emit and
  copy commands and the new archive command behaviour.
- The documentation has been updated to include the copy and emit
  commands, as well as to document the configuration of the plugin's
  prompts. The documentation for the archive command has also been
  updated to include the new archive behaviour. The new behaviour for
  the editor command has also been included in the documentation.
- Update documentation to follow sxyazi/yazi#2803.
- Changed all mentions of extractor to archiver.
- Updated Yazi types to match version 25.5.28.
@uncenter
Copy link
Contributor

Besides, it isn't any shorter than the original [manager], which would make code like:

Right lol, my point is that there is no need to make that code shorter. It was fine as it was and would continue to be fine.

@sxyazi
Copy link
Owner Author

sxyazi commented May 30, 2025

That would make it inconsistent with all other APIs listed in the OP, and I really want to avoid that as much as possible.

Also, using abbreviations in Yazi is a very common practice/coding style — not just a special case. A quick look at the codebase will find many such abbreviations: app, mgr, cmp, url, cha, rect, pad, pos, cx, rt, th, fs, ui, ya, ps.

As I said in #2803 (comment), when designing Yazi, I aimed to find a balance between correctness and practicality. I don't know if you are using these APIs listed in OP, but I use them A LOT.

Using mgr instead of manager not only reduces the keystrokes but also makes it easier for me to spot errors ("mgr" vs "manager", the former is recognizable to me immediately). Also, it shortens the codeline, making reviews easier - I can read less code and focus more on other more critical parts.

Carcuis added a commit to Carcuis/conf-sync that referenced this pull request May 31, 2025
whisperpine added a commit to whisperpine/nix-config that referenced this pull request Jun 4, 2025
whisperpine added a commit to whisperpine/nix-config that referenced this pull request Jun 4, 2025
yanosea added a commit to yanosea/yanoNixFiles that referenced this pull request Jun 6, 2025
- update section name from `[manager]` to `[mgr]`
  in multiple config files
- due to sxyazi/yazi#2803
calebperkins added a commit to calebperkins/mydots that referenced this pull request Jun 8, 2025
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Jun 12, 2025
This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [sxyazi/yazi](https://github.com/sxyazi/yazi) | minor | `v25.4.8` -> `v25.5.31` |

MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).

**Proposed changes to behavior should be submitted there as MRs.**

---

### Release Notes

<details>
<summary>sxyazi/yazi (sxyazi/yazi)</summary>

### [`v25.5.31`](https://github.com/sxyazi/yazi/releases/tag/v25.5.31)

[Compare Source](sxyazi/yazi@v25.5.28...v25.5.31)

This is a maintenance release, focusing on bug fixes.

#### What's Changed

-   fix: expose `ui.Wrap` by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2810
-   fix: `forward --end-of-word` of the input should consider the mode's delta by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2811
-   fix: make every effort to carry hidden states for dummy files by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2814

**Full Changelog**: sxyazi/yazi@v25.5.28...v25.5.31

### [`v25.5.28`](https://github.com/sxyazi/yazi/releases/tag/v25.5.28)

[Compare Source](sxyazi/yazi@v25.4.8...v25.5.28)

#### Breaking Changes

-   `[manager]` is deprecated in favor of the new `[mgr]`. sxyazi/yazi#2803
-   `tab_width` has been removed as it no longer needs to be set manually. sxyazi/yazi#2745
-   `tab_active` and `tab_inactive` are moved under the new `[tabs]` section. sxyazi/yazi#2745
-   `sixel_fraction` has been removed as it's no longer needed. sxyazi/yazi#2707

#### Deprecated

-   `ya.mgr_emit()`, `ya.app_emit()` and `ya.input_emit()` are deprecated. sxyazi/yazi#2653
-   `ya.preview_widgets()` is deprecated. sxyazi/yazi#2706
-   `Command:args()` is deprecated. sxyazi/yazi#2752
-   The `ya pack` subcommand is deprecated. sxyazi/yazi#2770
-   `LEFT`, `CENTER`, `RIGHT` on `ui.Line`, `ui.Text` are deprecated. sxyazi/yazi#2802
-   `NONE`, `TOP`, `RIGHT`, `BOTTOM`, `LEFT`, `ALL` on `ui.Bar`, `ui.Border` are deprecated. sxyazi/yazi#2802
-   `WRAP_NO`, `WRAP`, `WRAP_TRIM` on `ui.Text` are deprecated. sxyazi/yazi#2802

#### Redesign Tabs

sxyazi/yazi#2745 decouples tabs from the header into an independent tab bar component to enhance UX:

-   A standalone single-line component increases the available space for displaying tabs.
-   Tab titles are displayed by default to increase recognizability.
-   Supports switching tabs via mouse for easier navigation.

The new tab bar is only shown when there is more than one tab, ensuring no space is wasted for users who don't use tabs.

https://github.com/user-attachments/assets/5ca33561-7558-4b9c-8b6a-9dfbc0bc8aa4

#### Calculate Real-Time Directory Size in Spotter

sxyazi/yazi#2695 adds directory sizes to the `folder` spotter. The size is computed dynamically in real time and asynchronously, which means:

-   Every time a user clicks `<Tab>` on a directory, the latest size is calculated.
-   For large directories, real-time changes in size are reported to the user, with "(?)" appended at the end to indicate that the calculation is in progress.
-   If the user closes the spotter or switches directories using the left/right arrow keys, any ongoing calculations will be canceled to avoid wasting resources.

Also, the computed directory size will be updated in the file list:

-   If the user sets `linemode = size`, the latest size will be shown on the right of the file line.
-   If the user sets `sort_by = size`, the file list will be sorted by the latest sizes (if necessary).

https://github.com/user-attachments/assets/eb2981e6-3e02-4997-abfc-83cc456a1677

#### 9x Faster Sixel Image Preview

sxyazi/yazi#2707 replaces the existing neural network quantization algorithm with Wu's Color Quantizer, which offers [better performance](https://github.com/Ivordir/quantette/blob/main/docs/Benchmarks%20and%20Accuracy.md#time) while [maintaining comparable quality](https://github.com/Ivordir/quantette/blob/main/docs/Benchmarks%20and%20Accuracy.md#accuracydssim).

Old implementation (neural network via [`color_quant`](https://github.com/image-rs/color_quant), with default `sixel_fraction = 20`) – average 189.5763999ms:

```sh
time: 190.025ms
time: 191.054417ms
time: 187.696792ms
time: 188.060791ms
time: 189.381958ms
time: 191.618042ms
time: 192.383125ms
time: 190.511291ms
time: 187.8395ms
time: 187.193083ms
```

New implementation (Wu - sRGB via [`quantette`](https://github.com/Ivordir/quantette)) – average 20.9199916ms:

```sh
time: 21.226458ms
time: 20.719542ms
time: 21.207583ms
time: 20.815875ms
time: 21.071291ms
time: 21.273459ms
time: 20.811792ms
time: 20.723166ms
time: 20.52675ms
time: 20.824ms
```

#### [`piper.yazi` Plugin](https://github.com/yazi-rs/plugins/tree/main/piper.yazi)

With [`piper.yazi`](https://github.com/yazi-rs/plugins/tree/main/piper.yazi), you can use the output of any shell command as preview content. This eliminates the need to write a separate plugin for each command, making the use of custom previewers much more convenient.

![screenshot-002418](https://github.com/user-attachments/assets/59618aed-fa80-46e6-a6fc-82918317e9c2)

See https://github.com/yazi-rs/plugins/tree/main/piper.yazi#examples for more examples!

#### Double Directory Size Calculation Speed

sxyazi/yazi#2683 greatly improves directory computation performance by dividing the task into chunks and reusing existing threads. Directory sorting and file trashing will be observably twice as fast.

Run the benchmark script against a 10.16GB folder 5 times in release mode:

```sh
Old: elapsed 759.877791ms
New: elapsed 364.802583ms

Old: elapsed 734.5155ms
New: elapsed 360.103375ms

Old: elapsed 734.124167ms
New: elapsed 365.662458ms

Old: elapsed 733.27325ms
New: elapsed 365.694042ms

Old: elapsed 743.394875ms
New: elapsed 364.455083ms
```

#### Input Component Now Supports Password Mode

With sxyazi/yazi#2675, a new `obscure = true` option is available:

```lua
local value = ya.input {
  title = "Password:",
  obscure = true,
  position = { "center", w = 50 },
}
```

https://github.com/user-attachments/assets/ff5b21f2-977b-4e9f-a279-e4cb15b51a57

#### Truncate Long Items in the File List

sxyazi/yazi#2754, sxyazi/yazi#2759, and sxyazi/yazi#2778 add truncation support for long filenames in the file list and archive preview, and display file extensions at the end, ensuring that even if a filename is truncated, you can still know what file type it is by its extension.

https://github.com/user-attachments/assets/0f1afbdb-17ec-410f-adea-e8b1d2ed6341

#### [`types.yazi` Plugin](https://github.com/yazi-rs/plugins/tree/main/types.yazi)

For a long time, Yazi lacked a type definition file, which made plugin development very painful. Now, it's here!

[`types.yazi`](https://github.com/yazi-rs/plugins/tree/main/types.yazi) provides type definitions for Yazi's Lua API, empowering an efficient plugin development experience.

#### Improved Built-In Previewers

-   The `video` previewer now supports displaying embedded video covers, sxyazi/yazi#2640
-   The `magick` previewer will respect the user's `image_alloc` and `image_bound` settings, to limit its maximum resource usage, sxyazi/yazi#2602, thanks to [@&#8203;ze0987](https://github.com/ze0987)
-   The `video` previewer will respect the user's `max_width` setting, sxyazi/yazi#2560, thanks to [@&#8203;ze0987](https://github.com/ze0987)

#### Improve Path Auto-Completion Results

The auto-completion results for interactive cd (key: `g` => `<Space>`) will now more closely match the user's input keywords.

Done in sxyazi/yazi#2765

#### What's Changed

-   fix: reverse the mixing order of theme and flavor configuration by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2594
-   feat: limit memory usage for previewing large images by [@&#8203;ze0987](https://github.com/ze0987) in sxyazi/yazi#2602
-   fix: respect the user's `max_width` setting for the built-in video previewer by [@&#8203;ze0987](https://github.com/ze0987) in sxyazi/yazi#2560
-   feat: allow custom exit code with `quit --code` by [@&#8203;Nicholas42](https://github.com/Nicholas42) in sxyazi/yazi#2609
-   fix: ensure state synchronization even when the package update fails midway by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2613
-   fix: do not change revision when package deployment fails by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2627
-   feat: copy-on-write support for field caching by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2629
-   feat: fall back to `CSI 16 t` when PowerShell OpenSSH returns a fake terminal size by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2636
-   feat: support embedded cover for video preview by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2640
-   fix: lazily update files to avoid triggering issues dependent on sort order by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2643
-   feat: new `ya.emit()` API by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2653
-   feat: fine-grained `peek` and `watch` by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2655
-   feat: new `--no-dummy` option for `reveal` command by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2664
-   feat: obscure input component for inputting passwords by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2675
-   feat: increase the maximum allowed value of `sixel_fraction` to `30` by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2682
-   perf: double directory size calculation speed by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2683
-   feat: new `fs.calc_size()` API by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2691
-   feat: promote `Id` to a first-class type by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2692
-   feat: calculate real-time directory size in spotter by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2695
-   feat: checks in `ya pub` and `ya emit` subcommands to verify receiver exists and has necessary abilities by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2696
-   feat: add `s` and `S` keybinds in the input component by [@&#8203;hankertrix](https://github.com/hankertrix) in sxyazi/yazi#2678
-   fix: no title is set when starts the first time by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2700
-   refactor: move `tty` to the new `yazi-term` crate by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2701
-   feat: show error when image preview fails by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2706
-   feat!: 9x faster Sixel image preview by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2707
-   fix: reset the cursor position with `arrow()` after deleting files by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2708
-   fix: `ya pub-to 0` checks if any peer is able to receive the message by [@&#8203;mikavilpas](https://github.com/mikavilpas) in sxyazi/yazi#2697
-   feat: add `--hovered` to the `copy` command by [@&#8203;hankertrix](https://github.com/hankertrix) in sxyazi/yazi#2709
-   fix: missing a `hover` event after `cd` by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2719
-   fix: detach background and orphan processes from the controlling terminal with `setsid()` by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2723
-   fix: avoid tmux interfering with kitty graphical sequences by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2734
-   fix: `windows-sys` missing a `Win32_Security` feature by [@&#8203;Kreijstal](https://github.com/Kreijstal) in sxyazi/yazi#2728
-   feat: make `ui.Line` renderable by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2743
-   feat!: redesign tabs by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2745
-   refactor: deprecate the `Command:args()` method by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2752
-   perf: avoid unnecessary memory allocation in `ya.truncate()` by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2753
-   fix: icon rules mixing by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2755
-   feat: show file extension for truncated file list items by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2759
-   perf: remove intermediate variables in natural sorting algorithm to avoid unnecessary allocation by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2764
-   feat: improve path auto-completion results by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2765
-   fix: always try to create state directory before draining DDS data by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2769
-   feat: truncate long paths in archive preview file list by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2778
-   feat: add a `/` to the interactive cd auto-completion candidates by [@&#8203;ineu](https://github.com/ineu) in sxyazi/yazi#2777
-   feat: make custom tab bar easier by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2782
-   fix: update `rust-onig` to v6.5.1 for GCC 15 compatibility by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2794
-   feat: new `ui.Align`, `ui.Wrap`, and `ui.Edge` by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2802
-   refactor!: deprecate `[manager]` in favor of `[mgr]` by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2803
-   chore: bump version to 25.5.28 by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2804

#### New Contributors

-   [@&#8203;Nicholas42](https://github.com/Nicholas42) made their first contribution in sxyazi/yazi#2609
-   [@&#8203;Kreijstal](https://github.com/Kreijstal) made their first contribution in sxyazi/yazi#2728
-   [@&#8203;ineu](https://github.com/ineu) made their first contribution in sxyazi/yazi#2777

**Full Changelog**: sxyazi/yazi@v25.4.8...v25.5.28

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC41MC4wIiwidXBkYXRlZEluVmVyIjoiNDAuNTAuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiUmVub3ZhdGUgQm90Il19-->
Alrefai added a commit to Alrefai/dotfiles that referenced this pull request Jun 13, 2025
`[manager]` has been deprecated in favor of the new `[mgr]`.

see #2803: sxyazi/yazi#2803
j-pap added a commit to j-pap/NixOS that referenced this pull request Jun 14, 2025
ReStranger added a commit to ReStranger/nixos-config that referenced this pull request Jun 15, 2025
* sxyazi/yazi#2803

Signed-off-by: ReStranger <restranger@disroot.org>
ReStranger added a commit to ReStranger/nixos-config that referenced this pull request Jun 16, 2025
* sxyazi/yazi#2803

Signed-off-by: ReStranger <restranger@disroot.org>
sebaszv added a commit to sebaszv/tokyonight.nvim_fork that referenced this pull request Jun 18, 2025
The `manager` table has been deprecated in favour of `mgr`, which should
be a direct replacement.

This is documented here: <sxyazi/yazi#2803>
sebaszv added a commit to sebaszv/tokyonight.nvim_fork that referenced this pull request Jun 18, 2025
The `manager` table has been deprecated in favour of `mgr`, which should
be a direct replacement.

This is documented here: <sxyazi/yazi#2803>
sebaszv added a commit to sebaszv/tokyonight.nvim_fork that referenced this pull request Jun 26, 2025
The `manager` table has been deprecated in favour of `mgr`, which should
be a direct replacement.

This is documented here: <sxyazi/yazi#2803>
xeysz pushed a commit to xeysz/yazi that referenced this pull request Jun 27, 2025
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Jun 30, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants