-
Notifications
You must be signed in to change notification settings - Fork 398
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: word wrapping in builtin code preview #1159
Conversation
03350e7
to
cd734ee
Compare
Thank you for the PR! It works perfectly, the only thing I would change is hard wrap to soft wrap. Hard wrap example: Soft wrap example: As an extra suggestion, the crate I have used previously provides some algorithm that tries to optimize the wrapping so it looks more even. But that's completely optional, just regular soft wrap will be enough. Appreciate the solution! |
Instead of hard wrap I tried to implement soft wrap. It tries to wrap lines on characters |
Works like a charm, thank you. Please, DM me your Ethereum wallet so I could send you 50 USDT (let me know if you prefer USDC). As far as I am concerned, the problem is solved so looking forward to @sxyazi 's review. |
} else if !line.ends_with(b"\n") { | ||
line.push(b'\n') | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It seems like this branch isn't in the original code - can you explain why you added it?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Every line in original code had \n at the end, but if we want to wrap long line, we have to place \n at the end of each piece of smaller line. There should not be any issues with old solution because all lines there already have \n at the end
false | ||
} | ||
|
||
fn chunk_by_width(line: Vec<u8>, width: usize) -> Vec<Vec<u8>> { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please combine all instances of String::from_utf8
and String::from_utf8_lossy
in this function into a single one, as it is a time-consuming operation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I tried to optimize this solution a bit by using two buffers: one is string and second is Vec. First one is used only to calculate width every iteration. Second is used to take slices when slicing a line
let mut buf = vec![]; | ||
// If we want to indent plain text, we have to decide if it is plain | ||
while reader.read_until(b'\n', &mut buf).await.is_ok() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why do we need both while
and for
loops here? It seems like while
will keep reading until the end of the file without stopping early, I think we should exit the loop as soon as we have enough lines for preview.
Is it possible to move if long_line.is_empty() || lines_handled > skip + area.height as usize {
up into the while
loop and combine the while
and for
into one loop?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
At first I thought we have to go line by line twice, but now it seems it's possible to do it once. I tried to refactor code according to this. Now we traverse a file once, like before
} | ||
long_lines.push(mem::take(&mut buf)); | ||
buf.clear() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
buf.clear() |
This is unnecessary. After mem::take
, buf
will be initialized as a new Vec
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
if line.as_str().ends_with("\r\n") { | ||
let mut chars = line.chars(); | ||
chars.next_back(); | ||
chars.next_back(); | ||
line = chars.as_str().to_string(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please keep the original code here. The new implementation using to_string()
will cause unnecessary memory reallocations. Since \r\n
are known to be ASCII characters, there's no need to treat them as Unicode chars
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i.e.
if line.ends_with("\r\n") {
line.pop();
line.pop();
line.push('\n');
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed
chars.next_back(); | ||
chars.next_back(); | ||
line = chars.as_str().to_string(); | ||
} else if !line.as_str().ends_with('\n') { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
} else if !line.as_str().ends_with('\n') { | |
} else if !line.ends_with('\n') { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
also fixed this
6c0a482
to
f5598eb
Compare
4eec20b
to
ed6ae00
Compare
33d04f9
to
3fdbbfe
Compare
86c53d8
to
24e7a3a
Compare
code
previewer
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks!
code
previewer
It seems that the schema for yazi.toml files haven't been updated with the new wrap option yet. I've tried to find the schema file in this repo but couldn't find it. Where could I find it so that I could create an PR? |
This PR contains the following updates: | Package | Update | Change | |---|---|---| | [aquaproj/aqua](https://togithub.com/aquaproj/aqua) | minor | `v2.30.0` -> `v2.31.0` | | [aquaproj/aqua-registry](https://togithub.com/aquaproj/aqua-registry) | minor | `v4.217.0` -> `v4.219.0` | | [casey/just](https://togithub.com/casey/just) | minor | `1.34.0` -> `1.35.0` | | [eza-community/eza](https://togithub.com/eza-community/eza) | patch | `v0.19.0` -> `v0.19.1` | | [fujiwara/awslim](https://togithub.com/fujiwara/awslim) | patch | `v0.3.3` -> `v0.3.4` | | [junegunn/fzf](https://togithub.com/junegunn/fzf) | minor | `v0.54.3` -> `v0.55.0` | | [nektos/act](https://togithub.com/nektos/act) | patch | `v0.2.65` -> `v0.2.66` | | [snyk/cli](https://togithub.com/snyk/cli) | minor | `v1.1292.4` -> `v1.1293.0` | | [sxyazi/yazi](https://togithub.com/sxyazi/yazi) | patch | `v0.3.1` -> `v0.3.2` | | [withgraphite/homebrew-tap](https://togithub.com/withgraphite/homebrew-tap) | patch | `v1.4.3` -> `v1.4.4` | --- ### Release Notes <details> <summary>aquaproj/aqua (aquaproj/aqua)</summary> ### [`v2.31.0`](https://togithub.com/aquaproj/aqua/releases/tag/v2.31.0) [Compare Source](https://togithub.com/aquaproj/aqua/compare/v2.30.0...v2.31.0-1) [Pull Requests](https://togithub.com/aquaproj/aqua/pulls?q=is%3Apr+milestone%3Av2.31.0) | [Issues](https://togithub.com/aquaproj/aqua/issues?q=is%3Aissue+milestone%3Av2.31.0) | aquaproj/aqua@v2.30.0...v2.31.0 ##### Overview ##### Featuers [#​2978](https://togithub.com/aquaproj/aqua/issues/2978) [#​2994](https://togithub.com/aquaproj/aqua/issues/2994) Support verifying packages with minisign [#​3052](https://togithub.com/aquaproj/aqua/issues/3052) Support passing variables ##### Fixes [#​3012](https://togithub.com/aquaproj/aqua/issues/3012) Fix typo `temporal`. Replace them with `temporary` [#​3017](https://togithub.com/aquaproj/aqua/issues/3017) [#​3024](https://togithub.com/aquaproj/aqua/issues/3024) Stop using `replace` directive ##### Others Update Go 1.22.5 to 1.22.6 ##### Feature - Support verifying packages with minisign [#​2978](https://togithub.com/aquaproj/aqua/issues/2978) [#​2994](https://togithub.com/aquaproj/aqua/issues/2994) Support verifying packages with [minisign](https://togithub.com/jedisct1/minisign). ##### Why is the feature needed? To install some packages securely. For example, [zig](https://ziglang.org/download/) is signed by minisign. ##### Example Code This feature is similar to Cosign and slsa-verifier. https://aquaproj.github.io/docs/reference/registry-config/cosign/ This feature depends on minisign. So aqua should install minisign transparently same as Cosign and slsa-verifier. registry.yaml ```yaml minisign: enabled: true public_key: "RWSGOq2NVecA2UPNdBUZykf1CCb147pkmdtYxgb3Ti+JO/wCYvhbAb/U" ##### public_key_url: https://example/signature.pub ``` ##### Feature - Support passing variables [#​3052](https://togithub.com/aquaproj/aqua/issues/3052) Add the optional field `vars` in aqua.yaml and Registry. ##### `vars` in Registry e.g. ```yaml packages: - type: github_release repo_owner: indygreg repo_name: python-build-standalone asset: cpython-{{.Vars.python_version}}+{{.Version}}-{{.Arch}}-{{.OS}}-install_only.{{.Format}} # .Vars.python_version vars: - name: python_version required: true ##### ... ``` `vars` is a list of variables. Fields of a variable - name: string (Required): A variable name - required: boolean (Optional): If true, the variable is required. To use the package, users need to set the variable in aqua.yaml - default: any (Optional): The default value of the variable Variables are passed to template strings as `.Vars.<template name>`. e.g. asset: cpython-{{.Vars.python_version}}+{{.Version}}-{{.Arch}}-{{.OS}}-install_only.{{.Format}} ##### `vars` in aqua.yaml e.g. ```yaml packages: - name: indygreg/python-build-standalone@20240726 vars: python_version: 3.11.9 ``` `vars` is a map of variables. The key is a variable name and the value is a variable value. </details> <details> <summary>aquaproj/aqua-registry (aquaproj/aqua-registry)</summary> ### [`v4.219.0`](https://togithub.com/aquaproj/aqua-registry/releases/tag/v4.219.0) [Compare Source](https://togithub.com/aquaproj/aqua-registry/compare/v4.218.0...v4.219.0) [Issues](https://togithub.com/aquaproj/aqua-registry/issues?q=is%3Aissue+milestone%3Av4.219.0) | [Pull Requests](https://togithub.com/aquaproj/aqua-registry/pulls?q=is%3Apr+milestone%3Av4.219.0) | aquaproj/aqua-registry@v4.218.0...v4.219.0 #### 🎉 New Packages [#​26329](https://togithub.com/aquaproj/aqua-registry/issues/26329) [k1LoW/oldstable](https://togithub.com/k1LoW/oldstable): Check if version of go directive in go.mod is oldstable [@​ponkio-o](https://togithub.com/ponkio-o) #### Fixes [#​26341](https://togithub.com/aquaproj/aqua-registry/issues/26341) ollama/ollama: Regenerate the setting [#​26330](https://togithub.com/aquaproj/aqua-registry/issues/26330) zyedidia/micro: Regenerate the setting [#​26303](https://togithub.com/aquaproj/aqua-registry/issues/26303) kcp-dev/kcp/kubectl-kcp: Follow up changes of kcp v0.25.0 [#​26339](https://togithub.com/aquaproj/aqua-registry/issues/26339) Rename the package `daguflow/dagu` to `dagu-org/dagu` [#​26259](https://togithub.com/aquaproj/aqua-registry/issues/26259) Rename the package `soywod/himalaya` to `pimalaya/himalaya` ### [`v4.218.0`](https://togithub.com/aquaproj/aqua-registry/releases/tag/v4.218.0) [Compare Source](https://togithub.com/aquaproj/aqua-registry/compare/v4.217.0...v4.218.0) [Issues](https://togithub.com/aquaproj/aqua-registry/issues?q=is%3Aissue+milestone%3Av4.218.0) | [Pull Requests](https://togithub.com/aquaproj/aqua-registry/pulls?q=is%3Apr+milestone%3Av4.218.0) | aquaproj/aqua-registry@v4.217.0...v4.218.0 ##### 🎉 New Packages [#​26241](https://togithub.com/aquaproj/aqua-registry/issues/26241) [ogen-go/ogen](https://togithub.com/ogen-go/ogen) OpenAPI v3 code generator for go [@​ntk221](https://togithub.com/ntk221) ##### Fixes [#​26249](https://togithub.com/aquaproj/aqua-registry/issues/26249) rossmacarthur/sheldon: Regenerate the setting </details> <details> <summary>casey/just (casey/just)</summary> ### [`v1.35.0`](https://togithub.com/casey/just/blob/HEAD/CHANGELOG.md#1350---2024-08-28) [Compare Source](https://togithub.com/casey/just/compare/1.34.0...1.35.0) ##### Changed - Allow fallback with recipes in submodules ([#​2329](https://togithub.com/casey/just/pull/2329) by [casey](https://togithub.com/casey)) - Allow `[private]` attribute on assignments ([#​2300](https://togithub.com/casey/just/pull/2300) by [adsnaider](https://togithub.com/adsnaider)) ##### Misc - Generate `.sha256sum` files for release artifacts ([#​2323](https://togithub.com/casey/just/pull/2323) by [twm](https://togithub.com/twm)) - Clarify that subsequent dependencies run immediately after recipe ([#​2326](https://togithub.com/casey/just/pull/2326) by [casey](https://togithub.com/casey)) - Fix readme typo ([#​2321](https://togithub.com/casey/just/pull/2321) by [arminius-smh](https://togithub.com/arminius-smh)) - Remove Config::run ([#​2320](https://togithub.com/casey/just/pull/2320) by [neunenak](https://togithub.com/neunenak)) - Bump MSRV to 1.74 ([#​2306](https://togithub.com/casey/just/pull/2306) by [casey](https://togithub.com/casey)) - Remove logging ([#​2305](https://togithub.com/casey/just/pull/2305) by [casey](https://togithub.com/casey)) - Group commands under dedicated heading in `--help` output ([#​2302](https://togithub.com/casey/just/pull/2302) by [casey](https://togithub.com/casey)) - Fix readme typo ([#​2297](https://togithub.com/casey/just/pull/2297) by [nyurik](https://togithub.com/nyurik)) </details> <details> <summary>eza-community/eza (eza-community/eza)</summary> ### [`v0.19.1`](https://togithub.com/eza-community/eza/releases/tag/v0.19.1): eza v0.19.1 [Compare Source](https://togithub.com/eza-community/eza/compare/v0.19.0...v0.19.1) ### Changelog #### \[0.19.1] - 2024-08-28 ##### Bug Fixes - FreeBSD build. - Typo ##### Miscellaneous Tasks - Release eza v0.19.1 ##### Build - Bump uzers from 0.12.0 to 0.12.1 ### Checksums #### sha256sum 5fdfd44e7a413520cddca3ccd55860d8a31d83ce7a2853c219fb2f42738317b3 ./target/bin-0.19.1/eza_aarch64-unknown-linux-gnu.tar.gz 48f5519a502de8fc9604f9e830b6cc0fff3e4b073b7938c56ede10ae4bb2bd5e ./target/bin-0.19.1/eza_aarch64-unknown-linux-gnu.zip 9831abbea6aada54faacd81a912c594e606a0f8a498af4815d4d970e66388b6d ./target/bin-0.19.1/eza_arm-unknown-linux-gnueabihf.tar.gz 50d43e3b0bcbcf5fe1c858b40446feff64723f8a2faf2936f50a8d411f40de3e ./target/bin-0.19.1/eza_arm-unknown-linux-gnueabihf.zip 732a425a33f9cbd4913613c03fed183845d1a824d2184239d7e6f681602919c1 ./target/bin-0.19.1/eza.exe_x86_64-pc-windows-gnu.tar.gz 5f3b5b3cc0a42007fc8143e169bf427d5388e1fe58ff0d779685974b3db44ccc ./target/bin-0.19.1/eza.exe_x86_64-pc-windows-gnu.zip 0d621083ebd4c49f482633f582f39e4fbc11d33c374d48ff9c6dc22b85d2095f ./target/bin-0.19.1/eza_x86_64-unknown-linux-gnu.tar.gz c943d5f2509eb24129ed4f5044e761156c5485249fa93ac080964be1052566d6 ./target/bin-0.19.1/eza_x86_64-unknown-linux-gnu.zip 0af306c97b39c4751dc5f45ac6907f7e9e09d2302af1b4ea8c586a867ce44535 ./target/bin-0.19.1/eza_x86_64-unknown-linux-musl.tar.gz 6ba0657ae4a32b1c889b7098097fbbc814f811d454e1750b60c7fbe043c1212f ./target/bin-0.19.1/eza_x86_64-unknown-linux-musl.zip #### md5sum 16d3e99f3fe6972c30ebcc46a7ed5975 ./target/bin-0.19.1/eza_aarch64-unknown-linux-gnu.tar.gz 6c39d3471eb4852bafd7045ed75fb54f ./target/bin-0.19.1/eza_aarch64-unknown-linux-gnu.zip 64e23697b7ea01169cda720bea1feebb ./target/bin-0.19.1/eza_arm-unknown-linux-gnueabihf.tar.gz 58275092eb47c2fcda28363b38b0875e ./target/bin-0.19.1/eza_arm-unknown-linux-gnueabihf.zip 84cc697f0e62be6976ce6b07be8ada24 ./target/bin-0.19.1/eza.exe_x86_64-pc-windows-gnu.tar.gz 931047398365928014243dd342582ba8 ./target/bin-0.19.1/eza.exe_x86_64-pc-windows-gnu.zip dd0b503e2cfdbe987c3d0fed49db1dfd ./target/bin-0.19.1/eza_x86_64-unknown-linux-gnu.tar.gz cf23637754986ff5b623896c2d96ed03 ./target/bin-0.19.1/eza_x86_64-unknown-linux-gnu.zip 1e2f60c01f47d237107a5ec86ef858f9 ./target/bin-0.19.1/eza_x86_64-unknown-linux-musl.tar.gz c87b7fe92044f7f6c9fa6b4717ba2bf5 ./target/bin-0.19.1/eza_x86_64-unknown-linux-musl.zip #### blake3sum 9dda018bce3f7a968e91af7daedd346ba25906d2c79d12c6dd4e95bf0d077468 ./target/bin-0.19.1/eza_aarch64-unknown-linux-gnu.tar.gz 60cae504108d1dc579015de420c8a5856e13e046d6ee805310e756416fa60f79 ./target/bin-0.19.1/eza_aarch64-unknown-linux-gnu.zip 5fb17e8ef705ff2738c99cef0c6f777f484ee3a0812d430a54c9b666b4a6ca44 ./target/bin-0.19.1/eza_arm-unknown-linux-gnueabihf.tar.gz 45ec2d14e03a1b5f1e21e50cc499859c37285011e13aa06db99f3c0f273c9f6a ./target/bin-0.19.1/eza_arm-unknown-linux-gnueabihf.zip 3cb4e94f3b436b3c7a9b281bbbff430f056bd7da6ba6423e2ee29614f09b6728 ./target/bin-0.19.1/eza.exe_x86_64-pc-windows-gnu.tar.gz 3f8120fb4fa02ac441c7542f1928350e294ec82c3f8ad793583d1ff2a701ed92 ./target/bin-0.19.1/eza.exe_x86_64-pc-windows-gnu.zip 86afd29d8d563c210feed810500b65c49424cebb5007ab96280dc26fdd84871b ./target/bin-0.19.1/eza_x86_64-unknown-linux-gnu.tar.gz dd6ae9afc46fd7f2a76dd674e23f9bdd590f684a718bc93b8368fb1f2a7607aa ./target/bin-0.19.1/eza_x86_64-unknown-linux-gnu.zip 18b10dbe2f12a60f2ba7ea6657ae0dd429b90200b91d6b8440dbbadc29c3f52f ./target/bin-0.19.1/eza_x86_64-unknown-linux-musl.tar.gz d7f35c22b1bf8b4830f3beef8f2976fcd677797f45f6f017e8aeb9490f6fdced ./target/bin-0.19.1/eza_x86_64-unknown-linux-musl.zip </details> <details> <summary>fujiwara/awslim (fujiwara/awslim)</summary> ### [`v0.3.4`](https://togithub.com/fujiwara/awslim/blob/HEAD/CHANGELOG.md#v034---2024-08-29) [Compare Source](https://togithub.com/fujiwara/awslim/compare/v0.3.3...v0.3.4) - Update all-services.yaml by [@​github-actions](https://togithub.com/github-actions) in [https://github.com/fujiwara/awslim/pull/47](https://togithub.com/fujiwara/awslim/pull/47) </details> <details> <summary>junegunn/fzf (junegunn/fzf)</summary> ### [`v0.55.0`](https://togithub.com/junegunn/fzf/releases/tag/v0.55.0): 0.55.0 [Compare Source](https://togithub.com/junegunn/fzf/compare/v0.54.3...v0.55.0) *Release highlights: https://junegunn.github.io/fzf/releases/0.55.0/* - Added `exact-boundary-match` type to the search syntax. When a search term is single-quoted, fzf will search for the exact occurrences of the string with both ends at word boundaries. ```sh fzf --query "'here'" << EOF come here not there EOF ``` - \[bash] Fuzzy path completion is enabled for all commands - 1. If the default completion is not already set - 2. And if the current bash supports `complete -D` option - However, fuzzy completion for some commands can be "dynamically" disabled by the dynamic completion loader - See the comment in `__fzf_default_completion` function for more information - Comments are now allowed in `$FZF_DEFAULT_OPTS` and `$FZF_DEFAULT_OPTS_FILE` ```sh export FZF_DEFAULT_OPTS=' ``` ### Layout options --layout=reverse --info=inline-right # Show info on the right side of the prompt line ### ... ' - Hyperlinks (OSC 8) are now supported in the preview window and in the main window ```sh printf '<< \e]8;;http://github.com/junegunn/fzf\e\\Link to \e[32mfz\e[0mf\e]8;;\e\\ >>' | fzf --ansi fzf --preview "printf '<< \e]8;;http://github.com/junegunn/fzf\e\\Link to \e[32mfz\e[0mf\e]8;;\e\\ >>'" - The default `--ellipsis` is now `··` instead of `..`. - \[vim] A spec can have `exit` callback that is called with the exit status of fzf - This can be used to clean up temporary resources or restore the original state when fzf is closed without a selection - Fixed `--tmux bottom` when the status line is not at the bottom - Fixed extra scroll offset in multi-line mode (`--read0` or `--wrap`) - Added fallback `ps` command for `kill` completion on Cygwin </details> <details> <summary>nektos/act (nektos/act)</summary> ### [`v0.2.66`](https://togithub.com/nektos/act/releases/tag/v0.2.66) [Compare Source](https://togithub.com/nektos/act/compare/v0.2.65...v0.2.66) #### Changelog ##### New Features - [`102e6cb`](https://togithub.com/nektos/act/commit/102e6cb) feat: Validate GitHub Actions schema ([#​2416](https://togithub.com/nektos/act/issues/2416)) ##### Other - [`38e43bd`](https://togithub.com/nektos/act/commit/38e43bd) chore: bump VERSION to 0.2.66 - [`c9ae534`](https://togithub.com/nektos/act/commit/c9ae534) build(deps): bump golang.org/x/term from 0.22.0 to 0.23.0 ([#​2421](https://togithub.com/nektos/act/issues/2421)) - [`ca292cd`](https://togithub.com/nektos/act/commit/ca292cd) build(deps): bump megalinter/megalinter from 7.13.0 to 8.0.0 ([#​2436](https://togithub.com/nektos/act/issues/2436)) - [`f79a13e`](https://togithub.com/nektos/act/commit/f79a13e) build(deps): bump dario.cat/mergo from 1.0.0 to 1.0.1 ([#​2430](https://togithub.com/nektos/act/issues/2430)) - [`60a2fed`](https://togithub.com/nektos/act/commit/60a2fed) fix GOOS parsing to match expected GHA RUNNER_OS values ([#​2422](https://togithub.com/nektos/act/issues/2422)) </details> <details> <summary>snyk/cli (snyk/cli)</summary> ### [`v1.1293.0`](https://togithub.com/snyk/cli/releases/tag/v1.1293.0) [Compare Source](https://togithub.com/snyk/cli/compare/v1.1292.4...v1.1293.0) The Snyk CLI is being deployed to different deployment channels, users can select the stability level according to their needs. For details please see [this documentation](https://docs.snyk.io/snyk-cli/releases-and-channels-for-the-snyk-cli) ##### News - Starting with this version, Snyk cli binaries will be distributed via `downloads.snyk.io` instead of `static.snyk.io`. This includes intallation from `npm`, `homebrew` and `scoop` as well as many of the CI/CD integrations. ##### Features - **sbom:** add support for license issues in sbom test ([6948668](https://togithub.com/snyk/snyk/commit/6948668d57523c2e7fd76ff363cf2d1625b6f0f3)) - **auth:** Use OAuth2 as default authentication mechanism ([35949c4](https://togithub.com/snyk/snyk/commit/35949c4acdd3bcbd510a6ac076523f21366b91c2)) - **config:** Introduce config environment command ([0d8dd2b](https://togithub.com/snyk/snyk/commit/0d8dd2b04278e38fe5fd335ec3023f753c944988)) - **container:** When docker is not installed, platform parameter is now supported ([64b405d](https://togithub.com/snyk/snyk/commit/64b405d02733fb2423798f4cfbff19fa04110c2d)) ##### Bug Fixes - **auth:** align auth failure error messages for oauth ([e3bfec3](https://togithub.com/snyk/snyk/commit/e3bfec354e56499a2266a45804d0a93d17f46bce)) - **auth:** ensure environment variable precedence for auth tokens ([24417d6](https://togithub.com/snyk/snyk/commit/24417d6e7c7661c1a288a1f01502af17fdb54e64)) - **test:** fix a bug related to multi-project .NET folder structures ([755a38f](https://togithub.com/snyk/snyk/commit/755a38fc6b5c7b4f7631fced9e8f0fd8ed391819)) - **test:** multiple pnpm workspace improvements ([da5c14f](https://togithub.com/snyk/snyk/commit/da5c14fc344f17c7ac8c0969f2e0cb24ba59b6cd)) - **test:** fixes a bug regarding Snyk attempting to get the dependencies from the wrong nuget \*.deps.json file.([2e17434](https://togithub.com/snyk/snyk/commit/2e17434de99d342ea7dcedf5ba5bd250aae85eb3)) - **test:** support for pipenv with python 3.12 ([09df3bc](https://togithub.com/snyk/snyk/commit/09df3bc7dbcb184a56021ead7703732fa66ea273)) - **test:** support multi-part comparison for python pip versions. ([b625eb9](https://togithub.com/snyk/snyk/commit/b625eb90410d69047ef87b65cc0289f9360251fe)) - **container:** container monitor with --json now outputs valid json([039c9bd](https://togithub.com/snyk/snyk/commit/039c9bd13efa9397a8e442e80206bfabcc529125)) - **container:** support hashing large .jar files ([6f82231](https://togithub.com/snyk/snyk/commit/6f822317209e8b60bb07bf073bdcb9c78f402eb8)) - **sbom:** fix issues in JSON output of `sbom test` command, include CWE values on `CWE` property ([#​5331](https://togithub.com/snyk/snyk/issues/5331)) ([99773c3](https://togithub.com/snyk/snyk/commit/99773c3eac6c41c61c9da7fc0f1b991e5298dc37)) - **sbom:** include all detected dep-graphs of a container image ([ea43977](https://togithub.com/snyk/snyk/commit/ea439770e88093d1a99d88957f48ea63ea82b09a)) - **iac:** fixed an issue where the resource path was missing for certain Terraform resources. [IAC-3015](\[0b5823a]\(https://github.com/snyk/snyk/commit/0b5823ae2673bfbec7a055c881e8055eeb8c01ee\)) - **general:** map previously unhandled exit codes to exit code 2 ([9fde4fe](https://togithub.com/snyk/snyk/commit/9fde4fec680f2ae0650baf6b1cfed5908984e9ef)) - **general:** use entitlements when signing bundled macos binaries ([bebc59c](https://togithub.com/snyk/snyk/commit/bebc59cbfbd20aef2e8531845579f2d78c5b07ca)) </details> <details> <summary>sxyazi/yazi (sxyazi/yazi)</summary> ### [`v0.3.2`](https://togithub.com/sxyazi/yazi/releases/tag/v0.3.2) [Compare Source](https://togithub.com/sxyazi/yazi/compare/v0.3.1...v0.3.2) This version introduces two eagerly awaited new features: a brand-new `confirm` component, and word wrapping. #### Brand-new `confirm` component [https://github.com/sxyazi/yazi/pull/1167](https://togithub.com/sxyazi/yazi/pull/1167) (thanks to [@​thelamb](https://togithub.com/thelamb)) introduces a brand-new `confirm` component that handles various confirmations (like trashing files, deleting files, overwriting files, and exit confirmations). The goal is to provide a safer and more efficient user experience: - **Safer**: Now, when you trash, delete, or overwrite files, it'll show a list of affected files for a second confirmation, instead of just the number of files like before. - **More efficient**: Confirmation now only requires pressing `Enter` once, instead of typing `"y"` and then pressing `Enter`. This should be a nice quality-of-life improvement. https://github.com/user-attachments/assets/51c5c533-06ab-4661-b9f9-fcdbe8b0324c #### Word wrapping [https://github.com/sxyazi/yazi/pull/1159](https://togithub.com/sxyazi/yazi/pull/1159) (thanks to [@​mskvsk](https://togithub.com/mskvsk) and [@​ArtyomArtamonov](https://togithub.com/ArtyomArtamonov)) adds a new `wrap` option under `[preview]`, which can be set to `"no"` or `"yes"`. When set to `"yes"`, word wrapping is enabled: ```toml ### ~/.config/yazi/yazi.toml [preview] wrap = "yes" ``` #### Image preview performance optimization I've been working on optimizing Yazi's image preview speed, and with multi-threading, preloading, and a built-in image decoder, it should already be the fastest among all terminal file managers. However, I noticed some lag during fast scrolling and realized that at this point, the performance bottleneck isn't Yazi itself, but rather the terminal. When users scroll quickly, Yazi processes the images at a very high speed and sends them to the terminal, but the terminal can't keep up with processing them in time, which gives the impression of lag. In reality, it's not Yazi that's lagging, but the terminal. [https://github.com/sxyazi/yazi/pull/1512](https://togithub.com/sxyazi/yazi/pull/1512) introduces a new `image_delay` configuration option to address this issue. When previewing images, it will wait at least `image_delay` milliseconds before starting to send the decoded image data to the terminal. This gives the terminal a breather and creates the perception that the file list is still scrolling smoothly. Additionally, this can reduce the CPU overhead caused by immediate image decoding during fast scrolling, thereby extending battery life. ##### Before: https://github.com/user-attachments/assets/549fc6bb-3dbb-4f4f-ae61-1dd0fa9a88e8 ##### Now: https://github.com/user-attachments/assets/17d5010c-eae2-4230-bc00-71945f22370b #### New `--dir` option for the `create` command The `create` command is designed to support creating both files and directories (with `/` or `\` at the end to indicate a directory). However, this isn't user-friendly for those who need to create many directories but few files, as they always have to type `/` or `\`. [https://github.com/sxyazi/yazi/pull/1505](https://togithub.com/sxyazi/yazi/pull/1505) (thanks to [@​abstrakct](https://togithub.com/abstrakct)) introduces a new `--dir` option that explicitly specifies creating directories without needing to type `/` or `\` every time. #### What's Changed - fix: overlong single-line text containing escape sequences was not being properly escaped by [@​sxyazi](https://togithub.com/sxyazi) in [https://github.com/sxyazi/yazi/pull/1497](https://togithub.com/sxyazi/yazi/pull/1497) - fix: upgrade `ansi-to-tui` to `5.0.0-rc.1` to resolve `ratatui` version conflict by [@​sxyazi](https://togithub.com/sxyazi) in [https://github.com/sxyazi/yazi/pull/1499](https://togithub.com/sxyazi/yazi/pull/1499) - feat: add `--dir` option to `create` command by [@​abstrakct](https://togithub.com/abstrakct) in [https://github.com/sxyazi/yazi/pull/1505](https://togithub.com/sxyazi/yazi/pull/1505) - feat: add `ext()` method to `Url` userdata by [@​sxyazi](https://togithub.com/sxyazi) in [https://github.com/sxyazi/yazi/pull/1528](https://togithub.com/sxyazi/yazi/pull/1528) - feat: new `confirm` component by [@​thelamb](https://togithub.com/thelamb) in [https://github.com/sxyazi/yazi/pull/1167](https://togithub.com/sxyazi/yazi/pull/1167) - chore: set `MACOSX_DEPLOYMENT_TARGE` to 10.11 to make the binary compatible with old macOS by [@​hronro](https://togithub.com/hronro) in [https://github.com/sxyazi/yazi/pull/1532](https://togithub.com/sxyazi/yazi/pull/1532) - fix: use a different cache directory for each user to avoid permission issues by [@​sxyazi](https://togithub.com/sxyazi) in [https://github.com/sxyazi/yazi/pull/1541](https://togithub.com/sxyazi/yazi/pull/1541) - fix: wait till mimetype is resolved to avoid flickering by [@​sxyazi](https://togithub.com/sxyazi) in [https://github.com/sxyazi/yazi/pull/1542](https://togithub.com/sxyazi/yazi/pull/1542) - docs: add links to all terminal emulators by [@​nyurik](https://togithub.com/nyurik) in [https://github.com/sxyazi/yazi/pull/1538](https://togithub.com/sxyazi/yazi/pull/1538) - feat: make the builtin `code` previewer handle invalid carriage return chars and binary streams better by [@​sxyazi](https://togithub.com/sxyazi) in [https://github.com/sxyazi/yazi/pull/1550](https://togithub.com/sxyazi/yazi/pull/1550) - perf: only scan the first 1024 bytes to detect if it's binary, apply `\r` fixes only to content within the visible range, avoid unnecessary allocations during natural sorting by [@​sxyazi](https://togithub.com/sxyazi) in [https://github.com/sxyazi/yazi/pull/1551](https://togithub.com/sxyazi/yazi/pull/1551) - feat: word wrapping in builtin code preview by [@​ArtyomArtamonov](https://togithub.com/ArtyomArtamonov) in [https://github.com/sxyazi/yazi/pull/1159](https://togithub.com/sxyazi/yazi/pull/1159) - fix: filter out the `which` candidates that overlap with longer key chords by [@​sxyazi](https://togithub.com/sxyazi) in [https://github.com/sxyazi/yazi/pull/1562](https://togithub.com/sxyazi/yazi/pull/1562) - fix: `DECSET` and `DECRQM` tmux passthrough by [@​sxyazi](https://togithub.com/sxyazi) in [https://github.com/sxyazi/yazi/pull/1564](https://togithub.com/sxyazi/yazi/pull/1564) #### New Contributors - [@​abstrakct](https://togithub.com/abstrakct) made their first contribution in [https://github.com/sxyazi/yazi/pull/1505](https://togithub.com/sxyazi/yazi/pull/1505) - [@​hronro](https://togithub.com/hronro) made their first contribution in [https://github.com/sxyazi/yazi/pull/1532](https://togithub.com/sxyazi/yazi/pull/1532) - [@​nyurik](https://togithub.com/nyurik) made their first contribution in [https://github.com/sxyazi/yazi/pull/1538](https://togithub.com/sxyazi/yazi/pull/1538) - [@​ArtyomArtamonov](https://togithub.com/ArtyomArtamonov) made their first contribution in [https://github.com/sxyazi/yazi/pull/1159](https://togithub.com/sxyazi/yazi/pull/1159) **Full Changelog**: sxyazi/yazi@v0.3.1...v0.3.2 </details> <details> <summary>withgraphite/homebrew-tap (withgraphite/homebrew-tap)</summary> ### [`v1.4.4`](https://togithub.com/withgraphite/homebrew-tap/compare/v1.4.3...v1.4.4) [Compare Source](https://togithub.com/withgraphite/homebrew-tap/compare/v1.4.3...v1.4.4) </details> --- ### Configuration 📅 **Schedule**: Branch creation - "after 4pm on thursday" in timezone America/Los_Angeles, Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/scottames/dots). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC41Ni4wIiwidXBkYXRlZEluVmVyIjoiMzguNTYuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIl19--> --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: scottames-github-bot[bot] <162828115+scottames-github-bot[bot]@users.noreply.github.com>
This PR adds a new
wrap
option under[preview]
, which can be set to"no"
or"yes"
. When set to"yes"
, line wrapping is enabled:Note that this feature may still be unstable and its behavior might change in the future because it relies on ratatui's text wrapping implementation, which is itself still unstable, see ratatui/ratatui#293 for details.