Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 27 Feb 2026 10:04:04 +0000
From:      Nicola Vitale <nivit@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: 22205b741553 - main - textproc/oyo: Add new port
Message-ID:  <69a16c14.31a3e.51375040@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by nivit:

URL: https://cgit.FreeBSD.org/ports/commit/?id=22205b741553f3d3eeb4820f752488a3918cfce7

commit 22205b741553f3d3eeb4820f752488a3918cfce7
Author:     Nicola Vitale <nivit@FreeBSD.org>
AuthorDate: 2026-02-27 10:02:50 +0000
Commit:     Nicola Vitale <nivit@FreeBSD.org>
CommitDate: 2026-02-27 10:03:43 +0000

    textproc/oyo: Add new port
    
    Oyo is a terminal diff viewer that combines a classic scrollable diff with a
    step-through way to review changes.
    
    This tool has different diff modes, such as a dual mode for scrolling through
    diffs or stepping incrementally, a unified mode where code transforms in one
    pane, a split  mode for side-by-side old and new versions, has an evolution
    mode with deletions fading out and a blame mode for Git annotations per line.
    
    Other features of oyo include handling hunk navigation to jump between change
    groups, multi-file support, regex search across diffs, a command palette for
    quick actions, syntax highlighting, word-level diff marking, animated steps,
    line wrapping, Git integration as a difftool, autoplay at set speeds and
    helpful keyboard bindings.
    
    https://github.com/ahkohd/oyo
---
 textproc/Makefile            |   1 +
 textproc/oyo/Makefile        |  32 ++++
 textproc/oyo/Makefile.crates | 200 +++++++++++++++++++++
 textproc/oyo/distinfo        | 403 +++++++++++++++++++++++++++++++++++++++++++
 textproc/oyo/pkg-descr       |  13 ++
 textproc/oyo/pkg-plist       |  27 +++
 6 files changed, 676 insertions(+)

diff --git a/textproc/Makefile b/textproc/Makefile
index 01cdc3f8d896..0b4afa0b0e90 100644
--- a/textproc/Makefile
+++ b/textproc/Makefile
@@ -545,6 +545,7 @@
     SUBDIR += or-aspell
     SUBDIR += otree
     SUBDIR += ov
+    SUBDIR += oyo
     SUBDIR += ox-gfm.el
     SUBDIR += p5-AI-Categorizer
     SUBDIR += p5-Algorithm-CheckDigits
diff --git a/textproc/oyo/Makefile b/textproc/oyo/Makefile
new file mode 100644
index 000000000000..0be174a3e378
--- /dev/null
+++ b/textproc/oyo/Makefile
@@ -0,0 +1,32 @@
+PORTNAME=	oyo
+DISTVERSIONPREFIX=	v
+DISTVERSION=	0.1.24
+CATEGORIES=	textproc
+
+MAINTAINER=	nivit@FreeBSD.org
+COMMENT=	Step-through diff viewer
+WWW=		https://github.com/ahkohd/oyo
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/LICENSE.md
+
+LIB_DEPENDS=	libonig.so:devel/oniguruma
+
+USES=		cargo
+USE_GITHUB=	yes
+GH_ACCOUNT=	ahkohd
+
+CARGO_INSTALL_PATH=	crates/oyo
+
+OPTIONS_DEFINE=	DOCS
+
+post-patch-DOCS-on:
+	${REINPLACE_CMD} -e 's|\.\./\(assets/\)|${DOCSDIR}/\1|g' ${WRKSRC}/docs/*.md
+
+post-install-DOCS-on:
+	${MKDIR} ${STAGEDIR}${DOCSDIR}/assets
+	(cd ${WRKSRC}/docs && \
+	${COPYTREE_SHARE} . ${STAGEDIR}${DOCSDIR} "! -name *\.bak" && \
+	${COPYTREE_SHARE} ../assets ${STAGEDIR}${DOCSDIR}/assets)
+
+.include <bsd.port.mk>
diff --git a/textproc/oyo/Makefile.crates b/textproc/oyo/Makefile.crates
new file mode 100644
index 000000000000..738474fab81a
--- /dev/null
+++ b/textproc/oyo/Makefile.crates
@@ -0,0 +1,200 @@
+CARGO_CRATES=	adler2-2.0.1 \
+		aho-corasick-1.1.4 \
+		allocator-api2-0.2.21 \
+		anes-0.1.6 \
+		anstream-0.6.21 \
+		anstyle-1.0.13 \
+		anstyle-parse-0.2.7 \
+		anstyle-query-1.1.5 \
+		anstyle-wincon-3.0.11 \
+		anyhow-1.0.100 \
+		autocfg-1.5.0 \
+		base64-0.22.1 \
+		bincode-1.3.3 \
+		bitflags-2.10.0 \
+		bumpalo-3.19.1 \
+		bytes-1.11.0 \
+		cassowary-0.3.0 \
+		cast-0.3.0 \
+		castaway-0.2.4 \
+		cc-1.2.50 \
+		cfg-if-1.0.4 \
+		ciborium-0.2.2 \
+		ciborium-io-0.2.2 \
+		ciborium-ll-0.2.2 \
+		clap-4.5.53 \
+		clap_builder-4.5.53 \
+		clap_derive-4.5.49 \
+		clap_lex-0.7.6 \
+		colorchoice-1.0.4 \
+		compact_str-0.8.1 \
+		crc32fast-1.5.0 \
+		criterion-0.5.1 \
+		criterion-plot-0.5.0 \
+		crossbeam-deque-0.8.6 \
+		crossbeam-epoch-0.9.18 \
+		crossbeam-utils-0.8.21 \
+		crossterm-0.28.1 \
+		crossterm_winapi-0.9.1 \
+		crunchy-0.2.4 \
+		darling-0.20.11 \
+		darling_core-0.20.11 \
+		darling_macro-0.20.11 \
+		deranged-0.5.5 \
+		dirs-5.0.1 \
+		dirs-sys-0.4.1 \
+		either-1.15.0 \
+		equivalent-1.0.2 \
+		errno-0.3.14 \
+		filedescriptor-0.8.3 \
+		find-msvc-tools-0.1.5 \
+		flate2-1.1.5 \
+		fnv-1.0.7 \
+		foldhash-0.1.5 \
+		getrandom-0.2.16 \
+		half-2.7.1 \
+		hashbrown-0.15.5 \
+		hashbrown-0.16.1 \
+		heck-0.5.0 \
+		hermit-abi-0.5.2 \
+		ident_case-1.0.1 \
+		imara-diff-0.1.8 \
+		indexmap-2.12.1 \
+		indoc-2.0.7 \
+		instability-0.3.10 \
+		is-terminal-0.4.17 \
+		is_terminal_polyfill-1.70.2 \
+		itertools-0.10.5 \
+		itertools-0.13.0 \
+		itoa-1.0.15 \
+		js-sys-0.3.83 \
+		libc-0.2.178 \
+		libredox-0.1.11 \
+		linked-hash-map-0.5.6 \
+		linux-raw-sys-0.4.15 \
+		lock_api-0.4.14 \
+		log-0.4.29 \
+		lru-0.12.5 \
+		memchr-2.7.6 \
+		miniz_oxide-0.8.9 \
+		mio-1.1.1 \
+		num-conv-0.1.0 \
+		num-traits-0.2.19 \
+		once_cell-1.21.3 \
+		once_cell_polyfill-1.70.2 \
+		onig-6.5.1 \
+		onig_sys-69.9.1 \
+		oorandom-11.1.5 \
+		option-ext-0.2.0 \
+		parking_lot-0.12.5 \
+		parking_lot_core-0.9.12 \
+		paste-1.0.15 \
+		pin-project-lite-0.2.16 \
+		pkg-config-0.3.32 \
+		plist-1.8.0 \
+		plotters-0.3.7 \
+		plotters-backend-0.3.7 \
+		plotters-svg-0.3.7 \
+		powerfmt-0.2.0 \
+		proc-macro2-1.0.103 \
+		quick-xml-0.38.4 \
+		quote-1.0.42 \
+		ratatui-0.29.0 \
+		rayon-1.11.0 \
+		rayon-core-1.13.0 \
+		redox_syscall-0.5.18 \
+		redox_users-0.4.6 \
+		regex-1.12.2 \
+		regex-automata-0.4.13 \
+		regex-syntax-0.8.8 \
+		rustc-hash-1.1.0 \
+		rustix-0.38.44 \
+		rustversion-1.0.22 \
+		ryu-1.0.20 \
+		same-file-1.0.6 \
+		scopeguard-1.2.0 \
+		serde-1.0.228 \
+		serde_core-1.0.228 \
+		serde_derive-1.0.228 \
+		serde_json-1.0.145 \
+		serde_spanned-0.6.9 \
+		shlex-1.3.0 \
+		signal-hook-0.3.18 \
+		signal-hook-mio-0.2.5 \
+		signal-hook-registry-1.4.7 \
+		simd-adler32-0.3.8 \
+		smallvec-1.15.1 \
+		socket2-0.6.1 \
+		static_assertions-1.1.0 \
+		strsim-0.11.1 \
+		strum-0.26.3 \
+		strum_macros-0.26.4 \
+		syn-2.0.111 \
+		syntect-5.3.0 \
+		thiserror-1.0.69 \
+		thiserror-2.0.17 \
+		thiserror-impl-1.0.69 \
+		thiserror-impl-2.0.17 \
+		time-0.3.44 \
+		time-core-0.1.6 \
+		time-macros-0.2.24 \
+		tinytemplate-1.2.1 \
+		tokio-1.48.0 \
+		tokio-macros-2.6.0 \
+		toml-0.8.23 \
+		toml_datetime-0.6.11 \
+		toml_edit-0.22.27 \
+		toml_write-0.1.2 \
+		two-face-0.5.0-rc1 \
+		unicode-ident-1.0.22 \
+		unicode-segmentation-1.12.0 \
+		unicode-truncate-1.1.0 \
+		unicode-width-0.1.14 \
+		unicode-width-0.2.0 \
+		utf8parse-0.2.2 \
+		walkdir-2.5.0 \
+		wasi-0.11.1+wasi-snapshot-preview1 \
+		wasm-bindgen-0.2.106 \
+		wasm-bindgen-macro-0.2.106 \
+		wasm-bindgen-macro-support-0.2.106 \
+		wasm-bindgen-shared-0.2.106 \
+		web-sys-0.3.83 \
+		winapi-0.3.9 \
+		winapi-i686-pc-windows-gnu-0.4.0 \
+		winapi-util-0.1.11 \
+		winapi-x86_64-pc-windows-gnu-0.4.0 \
+		windows-link-0.2.1 \
+		windows-sys-0.48.0 \
+		windows-sys-0.59.0 \
+		windows-sys-0.60.2 \
+		windows-sys-0.61.2 \
+		windows-targets-0.48.5 \
+		windows-targets-0.52.6 \
+		windows-targets-0.53.5 \
+		windows_aarch64_gnullvm-0.48.5 \
+		windows_aarch64_gnullvm-0.52.6 \
+		windows_aarch64_gnullvm-0.53.1 \
+		windows_aarch64_msvc-0.48.5 \
+		windows_aarch64_msvc-0.52.6 \
+		windows_aarch64_msvc-0.53.1 \
+		windows_i686_gnu-0.48.5 \
+		windows_i686_gnu-0.52.6 \
+		windows_i686_gnu-0.53.1 \
+		windows_i686_gnullvm-0.52.6 \
+		windows_i686_gnullvm-0.53.1 \
+		windows_i686_msvc-0.48.5 \
+		windows_i686_msvc-0.52.6 \
+		windows_i686_msvc-0.53.1 \
+		windows_x86_64_gnu-0.48.5 \
+		windows_x86_64_gnu-0.52.6 \
+		windows_x86_64_gnu-0.53.1 \
+		windows_x86_64_gnullvm-0.48.5 \
+		windows_x86_64_gnullvm-0.52.6 \
+		windows_x86_64_gnullvm-0.53.1 \
+		windows_x86_64_msvc-0.48.5 \
+		windows_x86_64_msvc-0.52.6 \
+		windows_x86_64_msvc-0.53.1 \
+		winnow-0.7.14 \
+		yaml-rust-0.4.5 \
+		zerocopy-0.8.33 \
+		zerocopy-derive-0.8.33
diff --git a/textproc/oyo/distinfo b/textproc/oyo/distinfo
new file mode 100644
index 000000000000..15e5230d8758
--- /dev/null
+++ b/textproc/oyo/distinfo
@@ -0,0 +1,403 @@
+TIMESTAMP = 1772181601
+SHA256 (rust/crates/adler2-2.0.1.crate) = 320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa
+SIZE (rust/crates/adler2-2.0.1.crate) = 13366
+SHA256 (rust/crates/aho-corasick-1.1.4.crate) = ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301
+SIZE (rust/crates/aho-corasick-1.1.4.crate) = 184015
+SHA256 (rust/crates/allocator-api2-0.2.21.crate) = 683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923
+SIZE (rust/crates/allocator-api2-0.2.21.crate) = 63622
+SHA256 (rust/crates/anes-0.1.6.crate) = 4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299
+SIZE (rust/crates/anes-0.1.6.crate) = 23857
+SHA256 (rust/crates/anstream-0.6.21.crate) = 43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a
+SIZE (rust/crates/anstream-0.6.21.crate) = 29516
+SHA256 (rust/crates/anstyle-1.0.13.crate) = 5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78
+SIZE (rust/crates/anstyle-1.0.13.crate) = 17651
+SHA256 (rust/crates/anstyle-parse-0.2.7.crate) = 4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2
+SIZE (rust/crates/anstyle-parse-0.2.7.crate) = 21707
+SHA256 (rust/crates/anstyle-query-1.1.5.crate) = 40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc
+SIZE (rust/crates/anstyle-query-1.1.5.crate) = 10264
+SHA256 (rust/crates/anstyle-wincon-3.0.11.crate) = 291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d
+SIZE (rust/crates/anstyle-wincon-3.0.11.crate) = 12638
+SHA256 (rust/crates/anyhow-1.0.100.crate) = a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61
+SIZE (rust/crates/anyhow-1.0.100.crate) = 54059
+SHA256 (rust/crates/autocfg-1.5.0.crate) = c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8
+SIZE (rust/crates/autocfg-1.5.0.crate) = 18729
+SHA256 (rust/crates/base64-0.22.1.crate) = 72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6
+SIZE (rust/crates/base64-0.22.1.crate) = 81597
+SHA256 (rust/crates/bincode-1.3.3.crate) = b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad
+SIZE (rust/crates/bincode-1.3.3.crate) = 28958
+SHA256 (rust/crates/bitflags-2.10.0.crate) = 812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3
+SIZE (rust/crates/bitflags-2.10.0.crate) = 48427
+SHA256 (rust/crates/bumpalo-3.19.1.crate) = 5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510
+SIZE (rust/crates/bumpalo-3.19.1.crate) = 96477
+SHA256 (rust/crates/bytes-1.11.0.crate) = b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3
+SIZE (rust/crates/bytes-1.11.0.crate) = 78391
+SHA256 (rust/crates/cassowary-0.3.0.crate) = df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53
+SIZE (rust/crates/cassowary-0.3.0.crate) = 22876
+SHA256 (rust/crates/cast-0.3.0.crate) = 37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5
+SIZE (rust/crates/cast-0.3.0.crate) = 11452
+SHA256 (rust/crates/castaway-0.2.4.crate) = dec551ab6e7578819132c713a93c022a05d60159dc86e7a7050223577484c55a
+SIZE (rust/crates/castaway-0.2.4.crate) = 12546
+SHA256 (rust/crates/cc-1.2.50.crate) = 9f50d563227a1c37cc0a263f64eca3334388c01c5e4c4861a9def205c614383c
+SIZE (rust/crates/cc-1.2.50.crate) = 93293
+SHA256 (rust/crates/cfg-if-1.0.4.crate) = 9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801
+SIZE (rust/crates/cfg-if-1.0.4.crate) = 9360
+SHA256 (rust/crates/ciborium-0.2.2.crate) = 42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e
+SIZE (rust/crates/ciborium-0.2.2.crate) = 35611
+SHA256 (rust/crates/ciborium-io-0.2.2.crate) = 05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757
+SIZE (rust/crates/ciborium-io-0.2.2.crate) = 6697
+SHA256 (rust/crates/ciborium-ll-0.2.2.crate) = 57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9
+SIZE (rust/crates/ciborium-ll-0.2.2.crate) = 14695
+SHA256 (rust/crates/clap-4.5.53.crate) = c9e340e012a1bf4935f5282ed1436d1489548e8f72308207ea5df0e23d2d03f8
+SIZE (rust/crates/clap-4.5.53.crate) = 62036
+SHA256 (rust/crates/clap_builder-4.5.53.crate) = d76b5d13eaa18c901fd2f7fca939fefe3a0727a953561fefdf3b2922b8569d00
+SIZE (rust/crates/clap_builder-4.5.53.crate) = 170811
+SHA256 (rust/crates/clap_derive-4.5.49.crate) = 2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671
+SIZE (rust/crates/clap_derive-4.5.49.crate) = 33559
+SHA256 (rust/crates/clap_lex-0.7.6.crate) = a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d
+SIZE (rust/crates/clap_lex-0.7.6.crate) = 13466
+SHA256 (rust/crates/colorchoice-1.0.4.crate) = b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75
+SIZE (rust/crates/colorchoice-1.0.4.crate) = 8196
+SHA256 (rust/crates/compact_str-0.8.1.crate) = 3b79c4069c6cad78e2e0cdfcbd26275770669fb39fd308a752dc110e83b9af32
+SIZE (rust/crates/compact_str-0.8.1.crate) = 71371
+SHA256 (rust/crates/crc32fast-1.5.0.crate) = 9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511
+SIZE (rust/crates/crc32fast-1.5.0.crate) = 40723
+SHA256 (rust/crates/criterion-0.5.1.crate) = f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f
+SIZE (rust/crates/criterion-0.5.1.crate) = 110088
+SHA256 (rust/crates/criterion-plot-0.5.0.crate) = 6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1
+SIZE (rust/crates/criterion-plot-0.5.0.crate) = 22706
+SHA256 (rust/crates/crossbeam-deque-0.8.6.crate) = 9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51
+SIZE (rust/crates/crossbeam-deque-0.8.6.crate) = 22471
+SHA256 (rust/crates/crossbeam-epoch-0.9.18.crate) = 5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e
+SIZE (rust/crates/crossbeam-epoch-0.9.18.crate) = 46875
+SHA256 (rust/crates/crossbeam-utils-0.8.21.crate) = d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28
+SIZE (rust/crates/crossbeam-utils-0.8.21.crate) = 42691
+SHA256 (rust/crates/crossterm-0.28.1.crate) = 829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6
+SIZE (rust/crates/crossterm-0.28.1.crate) = 132275
+SHA256 (rust/crates/crossterm_winapi-0.9.1.crate) = acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b
+SIZE (rust/crates/crossterm_winapi-0.9.1.crate) = 16027
+SHA256 (rust/crates/crunchy-0.2.4.crate) = 460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5
+SIZE (rust/crates/crunchy-0.2.4.crate) = 3887
+SHA256 (rust/crates/darling-0.20.11.crate) = fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee
+SIZE (rust/crates/darling-0.20.11.crate) = 37614
+SHA256 (rust/crates/darling_core-0.20.11.crate) = 0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e
+SIZE (rust/crates/darling_core-0.20.11.crate) = 68006
+SHA256 (rust/crates/darling_macro-0.20.11.crate) = fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead
+SIZE (rust/crates/darling_macro-0.20.11.crate) = 2532
+SHA256 (rust/crates/deranged-0.5.5.crate) = ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587
+SIZE (rust/crates/deranged-0.5.5.crate) = 24438
+SHA256 (rust/crates/dirs-5.0.1.crate) = 44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225
+SIZE (rust/crates/dirs-5.0.1.crate) = 12255
+SHA256 (rust/crates/dirs-sys-0.4.1.crate) = 520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c
+SIZE (rust/crates/dirs-sys-0.4.1.crate) = 10719
+SHA256 (rust/crates/either-1.15.0.crate) = 48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719
+SIZE (rust/crates/either-1.15.0.crate) = 20114
+SHA256 (rust/crates/equivalent-1.0.2.crate) = 877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f
+SIZE (rust/crates/equivalent-1.0.2.crate) = 7419
+SHA256 (rust/crates/errno-0.3.14.crate) = 39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb
+SIZE (rust/crates/errno-0.3.14.crate) = 12002
+SHA256 (rust/crates/filedescriptor-0.8.3.crate) = e40758ed24c9b2eeb76c35fb0aebc66c626084edd827e07e1552279814c6682d
+SIZE (rust/crates/filedescriptor-0.8.3.crate) = 12635
+SHA256 (rust/crates/find-msvc-tools-0.1.5.crate) = 3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844
+SIZE (rust/crates/find-msvc-tools-0.1.5.crate) = 30942
+SHA256 (rust/crates/flate2-1.1.5.crate) = bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb
+SIZE (rust/crates/flate2-1.1.5.crate) = 77015
+SHA256 (rust/crates/fnv-1.0.7.crate) = 3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1
+SIZE (rust/crates/fnv-1.0.7.crate) = 11266
+SHA256 (rust/crates/foldhash-0.1.5.crate) = d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2
+SIZE (rust/crates/foldhash-0.1.5.crate) = 21901
+SHA256 (rust/crates/getrandom-0.2.16.crate) = 335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592
+SIZE (rust/crates/getrandom-0.2.16.crate) = 40163
+SHA256 (rust/crates/half-2.7.1.crate) = 6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b
+SIZE (rust/crates/half-2.7.1.crate) = 61040
+SHA256 (rust/crates/hashbrown-0.15.5.crate) = 9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1
+SIZE (rust/crates/hashbrown-0.15.5.crate) = 140908
+SHA256 (rust/crates/hashbrown-0.16.1.crate) = 841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100
+SIZE (rust/crates/hashbrown-0.16.1.crate) = 147785
+SHA256 (rust/crates/heck-0.5.0.crate) = 2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea
+SIZE (rust/crates/heck-0.5.0.crate) = 11517
+SHA256 (rust/crates/hermit-abi-0.5.2.crate) = fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c
+SIZE (rust/crates/hermit-abi-0.5.2.crate) = 17435
+SHA256 (rust/crates/ident_case-1.0.1.crate) = b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39
+SIZE (rust/crates/ident_case-1.0.1.crate) = 3492
+SHA256 (rust/crates/imara-diff-0.1.8.crate) = 17d34b7d42178945f775e84bc4c36dde7c1c6cdfea656d3354d009056f2bb3d2
+SIZE (rust/crates/imara-diff-0.1.8.crate) = 155787
+SHA256 (rust/crates/indexmap-2.12.1.crate) = 0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2
+SIZE (rust/crates/indexmap-2.12.1.crate) = 100184
+SHA256 (rust/crates/indoc-2.0.7.crate) = 79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706
+SIZE (rust/crates/indoc-2.0.7.crate) = 17184
+SHA256 (rust/crates/instability-0.3.10.crate) = 6778b0196eefee7df739db78758e5cf9b37412268bfa5650bfeed028aed20d9c
+SIZE (rust/crates/instability-0.3.10.crate) = 14509
+SHA256 (rust/crates/is-terminal-0.4.17.crate) = 3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46
+SIZE (rust/crates/is-terminal-0.4.17.crate) = 7458
+SHA256 (rust/crates/is_terminal_polyfill-1.70.2.crate) = a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695
+SIZE (rust/crates/is_terminal_polyfill-1.70.2.crate) = 7548
+SHA256 (rust/crates/itertools-0.10.5.crate) = b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473
+SIZE (rust/crates/itertools-0.10.5.crate) = 115354
+SHA256 (rust/crates/itertools-0.13.0.crate) = 413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186
+SIZE (rust/crates/itertools-0.13.0.crate) = 146261
+SHA256 (rust/crates/itoa-1.0.15.crate) = 4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c
+SIZE (rust/crates/itoa-1.0.15.crate) = 11231
+SHA256 (rust/crates/js-sys-0.3.83.crate) = 464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8
+SIZE (rust/crates/js-sys-0.3.83.crate) = 56425
+SHA256 (rust/crates/libc-0.2.178.crate) = 37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091
+SIZE (rust/crates/libc-0.2.178.crate) = 783720
+SHA256 (rust/crates/libredox-0.1.11.crate) = df15f6eac291ed1cf25865b1ee60399f57e7c227e7f51bdbd4c5270396a9ed50
+SIZE (rust/crates/libredox-0.1.11.crate) = 7330
+SHA256 (rust/crates/linked-hash-map-0.5.6.crate) = 0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f
+SIZE (rust/crates/linked-hash-map-0.5.6.crate) = 15049
+SHA256 (rust/crates/linux-raw-sys-0.4.15.crate) = d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab
+SIZE (rust/crates/linux-raw-sys-0.4.15.crate) = 2150898
+SHA256 (rust/crates/lock_api-0.4.14.crate) = 224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965
+SIZE (rust/crates/lock_api-0.4.14.crate) = 29249
+SHA256 (rust/crates/log-0.4.29.crate) = 5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897
+SIZE (rust/crates/log-0.4.29.crate) = 51515
+SHA256 (rust/crates/lru-0.12.5.crate) = 234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38
+SIZE (rust/crates/lru-0.12.5.crate) = 16047
+SHA256 (rust/crates/memchr-2.7.6.crate) = f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273
+SIZE (rust/crates/memchr-2.7.6.crate) = 97616
+SHA256 (rust/crates/miniz_oxide-0.8.9.crate) = 1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316
+SIZE (rust/crates/miniz_oxide-0.8.9.crate) = 67132
+SHA256 (rust/crates/mio-1.1.1.crate) = a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc
+SIZE (rust/crates/mio-1.1.1.crate) = 105630
+SHA256 (rust/crates/num-conv-0.1.0.crate) = 51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9
+SIZE (rust/crates/num-conv-0.1.0.crate) = 7444
+SHA256 (rust/crates/num-traits-0.2.19.crate) = 071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841
+SIZE (rust/crates/num-traits-0.2.19.crate) = 51631
+SHA256 (rust/crates/once_cell-1.21.3.crate) = 42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d
+SIZE (rust/crates/once_cell-1.21.3.crate) = 34534
+SHA256 (rust/crates/once_cell_polyfill-1.70.2.crate) = 384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe
+SIZE (rust/crates/once_cell_polyfill-1.70.2.crate) = 7448
+SHA256 (rust/crates/onig-6.5.1.crate) = 336b9c63443aceef14bea841b899035ae3abe89b7c486aaf4c5bd8aafedac3f0
+SIZE (rust/crates/onig-6.5.1.crate) = 32394
+SHA256 (rust/crates/onig_sys-69.9.1.crate) = c7f86c6eef3d6df15f23bcfb6af487cbd2fed4e5581d58d5bf1f5f8b7f6727dc
+SIZE (rust/crates/onig_sys-69.9.1.crate) = 656378
+SHA256 (rust/crates/oorandom-11.1.5.crate) = d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e
+SIZE (rust/crates/oorandom-11.1.5.crate) = 23750
+SHA256 (rust/crates/option-ext-0.2.0.crate) = 04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d
+SIZE (rust/crates/option-ext-0.2.0.crate) = 7345
+SHA256 (rust/crates/parking_lot-0.12.5.crate) = 93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a
+SIZE (rust/crates/parking_lot-0.12.5.crate) = 46735
+SHA256 (rust/crates/parking_lot_core-0.9.12.crate) = 2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1
+SIZE (rust/crates/parking_lot_core-0.9.12.crate) = 34110
+SHA256 (rust/crates/paste-1.0.15.crate) = 57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a
+SIZE (rust/crates/paste-1.0.15.crate) = 18374
+SHA256 (rust/crates/pin-project-lite-0.2.16.crate) = 3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b
+SIZE (rust/crates/pin-project-lite-0.2.16.crate) = 30504
+SHA256 (rust/crates/pkg-config-0.3.32.crate) = 7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c
+SIZE (rust/crates/pkg-config-0.3.32.crate) = 21370
+SHA256 (rust/crates/plist-1.8.0.crate) = 740ebea15c5d1428f910cd1a5f52cebf8d25006245ed8ade92702f4943d91e07
+SIZE (rust/crates/plist-1.8.0.crate) = 54623
+SHA256 (rust/crates/plotters-0.3.7.crate) = 5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747
+SIZE (rust/crates/plotters-0.3.7.crate) = 149031
+SHA256 (rust/crates/plotters-backend-0.3.7.crate) = df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a
+SIZE (rust/crates/plotters-backend-0.3.7.crate) = 13709
+SHA256 (rust/crates/plotters-svg-0.3.7.crate) = 51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670
+SIZE (rust/crates/plotters-svg-0.3.7.crate) = 6715
+SHA256 (rust/crates/powerfmt-0.2.0.crate) = 439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391
+SIZE (rust/crates/powerfmt-0.2.0.crate) = 15165
+SHA256 (rust/crates/proc-macro2-1.0.103.crate) = 5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8
+SIZE (rust/crates/proc-macro2-1.0.103.crate) = 60024
+SHA256 (rust/crates/quick-xml-0.38.4.crate) = b66c2058c55a409d601666cffe35f04333cf1013010882cec174a7467cd4e21c
+SIZE (rust/crates/quick-xml-0.38.4.crate) = 205035
+SHA256 (rust/crates/quote-1.0.42.crate) = a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f
+SIZE (rust/crates/quote-1.0.42.crate) = 31504
+SHA256 (rust/crates/ratatui-0.29.0.crate) = eabd94c2f37801c20583fc49dd5cd6b0ba68c716787c2dd6ed18571e1e63117b
+SIZE (rust/crates/ratatui-0.29.0.crate) = 543514
+SHA256 (rust/crates/rayon-1.11.0.crate) = 368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f
+SIZE (rust/crates/rayon-1.11.0.crate) = 182470
+SHA256 (rust/crates/rayon-core-1.13.0.crate) = 22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91
+SIZE (rust/crates/rayon-core-1.13.0.crate) = 73151
+SHA256 (rust/crates/redox_syscall-0.5.18.crate) = ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d
+SIZE (rust/crates/redox_syscall-0.5.18.crate) = 30747
+SHA256 (rust/crates/redox_users-0.4.6.crate) = ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43
+SIZE (rust/crates/redox_users-0.4.6.crate) = 15585
+SHA256 (rust/crates/regex-1.12.2.crate) = 843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4
+SIZE (rust/crates/regex-1.12.2.crate) = 163843
+SHA256 (rust/crates/regex-automata-0.4.13.crate) = 5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c
+SIZE (rust/crates/regex-automata-0.4.13.crate) = 625250
+SHA256 (rust/crates/regex-syntax-0.8.8.crate) = 7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58
+SIZE (rust/crates/regex-syntax-0.8.8.crate) = 359141
+SHA256 (rust/crates/rustc-hash-1.1.0.crate) = 08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2
+SIZE (rust/crates/rustc-hash-1.1.0.crate) = 9331
+SHA256 (rust/crates/rustix-0.38.44.crate) = fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154
+SIZE (rust/crates/rustix-0.38.44.crate) = 379347
+SHA256 (rust/crates/rustversion-1.0.22.crate) = b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d
+SIZE (rust/crates/rustversion-1.0.22.crate) = 21096
+SHA256 (rust/crates/ryu-1.0.20.crate) = 28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f
+SIZE (rust/crates/ryu-1.0.20.crate) = 48738
+SHA256 (rust/crates/same-file-1.0.6.crate) = 93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502
+SIZE (rust/crates/same-file-1.0.6.crate) = 10183
+SHA256 (rust/crates/scopeguard-1.2.0.crate) = 94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49
+SIZE (rust/crates/scopeguard-1.2.0.crate) = 11619
+SHA256 (rust/crates/serde-1.0.228.crate) = 9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e
+SIZE (rust/crates/serde-1.0.228.crate) = 83652
+SHA256 (rust/crates/serde_core-1.0.228.crate) = 41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad
+SIZE (rust/crates/serde_core-1.0.228.crate) = 63111
+SHA256 (rust/crates/serde_derive-1.0.228.crate) = d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79
+SIZE (rust/crates/serde_derive-1.0.228.crate) = 59605
+SHA256 (rust/crates/serde_json-1.0.145.crate) = 402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c
+SIZE (rust/crates/serde_json-1.0.145.crate) = 155748
+SHA256 (rust/crates/serde_spanned-0.6.9.crate) = bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3
+SIZE (rust/crates/serde_spanned-0.6.9.crate) = 10210
+SHA256 (rust/crates/shlex-1.3.0.crate) = 0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64
+SIZE (rust/crates/shlex-1.3.0.crate) = 18713
+SHA256 (rust/crates/signal-hook-0.3.18.crate) = d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2
+SIZE (rust/crates/signal-hook-0.3.18.crate) = 50862
+SHA256 (rust/crates/signal-hook-mio-0.2.5.crate) = b75a19a7a740b25bc7944bdee6172368f988763b744e3d4dfe753f6b4ece40cc
+SIZE (rust/crates/signal-hook-mio-0.2.5.crate) = 14373
+SHA256 (rust/crates/signal-hook-registry-1.4.7.crate) = 7664a098b8e616bdfcc2dc0e9ac44eb231eedf41db4e9fe95d8d32ec728dedad
+SIZE (rust/crates/signal-hook-registry-1.4.7.crate) = 19491
+SHA256 (rust/crates/simd-adler32-0.3.8.crate) = e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2
+SIZE (rust/crates/simd-adler32-0.3.8.crate) = 17294
+SHA256 (rust/crates/smallvec-1.15.1.crate) = 67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03
+SIZE (rust/crates/smallvec-1.15.1.crate) = 38116
+SHA256 (rust/crates/socket2-0.6.1.crate) = 17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881
+SIZE (rust/crates/socket2-0.6.1.crate) = 58486
+SHA256 (rust/crates/static_assertions-1.1.0.crate) = a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f
+SIZE (rust/crates/static_assertions-1.1.0.crate) = 18480
+SHA256 (rust/crates/strsim-0.11.1.crate) = 7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f
+SIZE (rust/crates/strsim-0.11.1.crate) = 14266
+SHA256 (rust/crates/strum-0.26.3.crate) = 8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06
+SIZE (rust/crates/strum-0.26.3.crate) = 7237
+SHA256 (rust/crates/strum_macros-0.26.4.crate) = 4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be
+SIZE (rust/crates/strum_macros-0.26.4.crate) = 27531
+SHA256 (rust/crates/syn-2.0.111.crate) = 390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87
+SIZE (rust/crates/syn-2.0.111.crate) = 302117
+SHA256 (rust/crates/syntect-5.3.0.crate) = 656b45c05d95a5704399aeef6bd0ddec7b2b3531b7c9e900abbf7c4d2190c925
+SIZE (rust/crates/syntect-5.3.0.crate) = 833348
+SHA256 (rust/crates/thiserror-1.0.69.crate) = b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52
+SIZE (rust/crates/thiserror-1.0.69.crate) = 22198
+SHA256 (rust/crates/thiserror-2.0.17.crate) = f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8
+SIZE (rust/crates/thiserror-2.0.17.crate) = 28857
+SHA256 (rust/crates/thiserror-impl-1.0.69.crate) = 4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1
+SIZE (rust/crates/thiserror-impl-1.0.69.crate) = 18365
+SHA256 (rust/crates/thiserror-impl-2.0.17.crate) = 3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913
+SIZE (rust/crates/thiserror-impl-2.0.17.crate) = 21344
+SHA256 (rust/crates/time-0.3.44.crate) = 91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d
+SIZE (rust/crates/time-0.3.44.crate) = 143200
+SHA256 (rust/crates/time-core-0.1.6.crate) = 40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b
+SIZE (rust/crates/time-core-0.1.6.crate) = 9105
+SHA256 (rust/crates/time-macros-0.2.24.crate) = 30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3
+SIZE (rust/crates/time-macros-0.2.24.crate) = 24715
+SHA256 (rust/crates/tinytemplate-1.2.1.crate) = be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc
+SIZE (rust/crates/tinytemplate-1.2.1.crate) = 26490
+SHA256 (rust/crates/tokio-1.48.0.crate) = ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408
+SIZE (rust/crates/tokio-1.48.0.crate) = 843434
+SHA256 (rust/crates/tokio-macros-2.6.0.crate) = af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5
+SIZE (rust/crates/tokio-macros-2.6.0.crate) = 16505
+SHA256 (rust/crates/toml-0.8.23.crate) = dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362
+SIZE (rust/crates/toml-0.8.23.crate) = 36050
+SHA256 (rust/crates/toml_datetime-0.6.11.crate) = 22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c
+SIZE (rust/crates/toml_datetime-0.6.11.crate) = 16125
+SHA256 (rust/crates/toml_edit-0.22.27.crate) = 41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a
+SIZE (rust/crates/toml_edit-0.22.27.crate) = 78602
+SHA256 (rust/crates/toml_write-0.1.2.crate) = 5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801
+SIZE (rust/crates/toml_write-0.1.2.crate) = 15660
+SHA256 (rust/crates/two-face-0.5.0-rc1.crate) = bfc681466eb2344f48672c20bda4ce0e9d7e619f1b7f8abbf54d14326a0bdf49
+SIZE (rust/crates/two-face-0.5.0-rc1.crate) = 3480296
+SHA256 (rust/crates/unicode-ident-1.0.22.crate) = 9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5
+SIZE (rust/crates/unicode-ident-1.0.22.crate) = 47919
+SHA256 (rust/crates/unicode-segmentation-1.12.0.crate) = f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493
+SIZE (rust/crates/unicode-segmentation-1.12.0.crate) = 106323
+SHA256 (rust/crates/unicode-truncate-1.1.0.crate) = b3644627a5af5fa321c95b9b235a72fd24cd29c648c2c379431e6628655627bf
+SIZE (rust/crates/unicode-truncate-1.1.0.crate) = 12529
+SHA256 (rust/crates/unicode-width-0.1.14.crate) = 7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af
+SIZE (rust/crates/unicode-width-0.1.14.crate) = 271615
+SHA256 (rust/crates/unicode-width-0.2.0.crate) = 1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd
+SIZE (rust/crates/unicode-width-0.2.0.crate) = 271509
+SHA256 (rust/crates/utf8parse-0.2.2.crate) = 06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821
+SIZE (rust/crates/utf8parse-0.2.2.crate) = 13499
+SHA256 (rust/crates/walkdir-2.5.0.crate) = 29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b
+SIZE (rust/crates/walkdir-2.5.0.crate) = 23951
+SHA256 (rust/crates/wasi-0.11.1+wasi-snapshot-preview1.crate) = ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b
+SIZE (rust/crates/wasi-0.11.1+wasi-snapshot-preview1.crate) = 28477
+SHA256 (rust/crates/wasm-bindgen-0.2.106.crate) = 0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd
+SIZE (rust/crates/wasm-bindgen-0.2.106.crate) = 48417
+SHA256 (rust/crates/wasm-bindgen-macro-0.2.106.crate) = 48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3
+SIZE (rust/crates/wasm-bindgen-macro-0.2.106.crate) = 9266
+SHA256 (rust/crates/wasm-bindgen-macro-support-0.2.106.crate) = cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40
+SIZE (rust/crates/wasm-bindgen-macro-support-0.2.106.crate) = 49711
+SHA256 (rust/crates/wasm-bindgen-shared-0.2.106.crate) = cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4
+SIZE (rust/crates/wasm-bindgen-shared-0.2.106.crate) = 10115
+SHA256 (rust/crates/web-sys-0.3.83.crate) = 9b32828d774c412041098d182a8b38b16ea816958e07cf40eec2bc080ae137ac
+SIZE (rust/crates/web-sys-0.3.83.crate) = 644431
+SHA256 (rust/crates/winapi-0.3.9.crate) = 5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419
+SIZE (rust/crates/winapi-0.3.9.crate) = 1200382
+SHA256 (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6
+SIZE (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = 2918815
+SHA256 (rust/crates/winapi-util-0.1.11.crate) = c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22
+SIZE (rust/crates/winapi-util-0.1.11.crate) = 13368
+SHA256 (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f
+SIZE (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 2947998
+SHA256 (rust/crates/windows-link-0.2.1.crate) = f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5
+SIZE (rust/crates/windows-link-0.2.1.crate) = 6133
+SHA256 (rust/crates/windows-sys-0.48.0.crate) = 677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9
+SIZE (rust/crates/windows-sys-0.48.0.crate) = 2628884
+SHA256 (rust/crates/windows-sys-0.59.0.crate) = 1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b
+SIZE (rust/crates/windows-sys-0.59.0.crate) = 2387323
+SHA256 (rust/crates/windows-sys-0.60.2.crate) = f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb
+SIZE (rust/crates/windows-sys-0.60.2.crate) = 2518479
+SHA256 (rust/crates/windows-sys-0.61.2.crate) = ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc
+SIZE (rust/crates/windows-sys-0.61.2.crate) = 2517186
+SHA256 (rust/crates/windows-targets-0.48.5.crate) = 9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c
+SIZE (rust/crates/windows-targets-0.48.5.crate) = 6904
+SHA256 (rust/crates/windows-targets-0.52.6.crate) = 9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973
+SIZE (rust/crates/windows-targets-0.52.6.crate) = 6403
+SHA256 (rust/crates/windows-targets-0.53.5.crate) = 4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3
+SIZE (rust/crates/windows-targets-0.53.5.crate) = 7126
+SHA256 (rust/crates/windows_aarch64_gnullvm-0.48.5.crate) = 2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8
+SIZE (rust/crates/windows_aarch64_gnullvm-0.48.5.crate) = 418492
+SHA256 (rust/crates/windows_aarch64_gnullvm-0.52.6.crate) = 32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3
+SIZE (rust/crates/windows_aarch64_gnullvm-0.52.6.crate) = 435718
+SHA256 (rust/crates/windows_aarch64_gnullvm-0.53.1.crate) = a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53
+SIZE (rust/crates/windows_aarch64_gnullvm-0.53.1.crate) = 787748
+SHA256 (rust/crates/windows_aarch64_msvc-0.48.5.crate) = dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc
+SIZE (rust/crates/windows_aarch64_msvc-0.48.5.crate) = 798483
+SHA256 (rust/crates/windows_aarch64_msvc-0.52.6.crate) = 09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469
+SIZE (rust/crates/windows_aarch64_msvc-0.52.6.crate) = 832615
+SHA256 (rust/crates/windows_aarch64_msvc-0.53.1.crate) = b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006
+SIZE (rust/crates/windows_aarch64_msvc-0.53.1.crate) = 838009
+SHA256 (rust/crates/windows_i686_gnu-0.48.5.crate) = a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e
+SIZE (rust/crates/windows_i686_gnu-0.48.5.crate) = 844891
+SHA256 (rust/crates/windows_i686_gnu-0.52.6.crate) = 8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b
+SIZE (rust/crates/windows_i686_gnu-0.52.6.crate) = 880402
+SHA256 (rust/crates/windows_i686_gnu-0.53.1.crate) = 960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3
+SIZE (rust/crates/windows_i686_gnu-0.53.1.crate) = 939775
+SHA256 (rust/crates/windows_i686_gnullvm-0.52.6.crate) = 0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66
+SIZE (rust/crates/windows_i686_gnullvm-0.52.6.crate) = 475940
+SHA256 (rust/crates/windows_i686_gnullvm-0.53.1.crate) = fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c
+SIZE (rust/crates/windows_i686_gnullvm-0.53.1.crate) = 857396
+SHA256 (rust/crates/windows_i686_msvc-0.48.5.crate) = 8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406
+SIZE (rust/crates/windows_i686_msvc-0.48.5.crate) = 864300
+SHA256 (rust/crates/windows_i686_msvc-0.52.6.crate) = 240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66
+SIZE (rust/crates/windows_i686_msvc-0.52.6.crate) = 901163
+SHA256 (rust/crates/windows_i686_msvc-0.53.1.crate) = 1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2
+SIZE (rust/crates/windows_i686_msvc-0.53.1.crate) = 907688
+SHA256 (rust/crates/windows_x86_64_gnu-0.48.5.crate) = 53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e
+SIZE (rust/crates/windows_x86_64_gnu-0.48.5.crate) = 801619
+SHA256 (rust/crates/windows_x86_64_gnu-0.52.6.crate) = 147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78
+SIZE (rust/crates/windows_x86_64_gnu-0.52.6.crate) = 836363
+SHA256 (rust/crates/windows_x86_64_gnu-0.53.1.crate) = 9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499
+SIZE (rust/crates/windows_x86_64_gnu-0.53.1.crate) = 903712
+SHA256 (rust/crates/windows_x86_64_gnullvm-0.48.5.crate) = 0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc
+SIZE (rust/crates/windows_x86_64_gnullvm-0.48.5.crate) = 418486
+SHA256 (rust/crates/windows_x86_64_gnullvm-0.52.6.crate) = 24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d
+SIZE (rust/crates/windows_x86_64_gnullvm-0.52.6.crate) = 435707
+SHA256 (rust/crates/windows_x86_64_gnullvm-0.53.1.crate) = 0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1
+SIZE (rust/crates/windows_x86_64_gnullvm-0.53.1.crate) = 787739
+SHA256 (rust/crates/windows_x86_64_msvc-0.48.5.crate) = ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538
+SIZE (rust/crates/windows_x86_64_msvc-0.48.5.crate) = 798412
+SHA256 (rust/crates/windows_x86_64_msvc-0.52.6.crate) = 589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec
+SIZE (rust/crates/windows_x86_64_msvc-0.52.6.crate) = 832564
+SHA256 (rust/crates/windows_x86_64_msvc-0.53.1.crate) = d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650
+SIZE (rust/crates/windows_x86_64_msvc-0.53.1.crate) = 837950
+SHA256 (rust/crates/winnow-0.7.14.crate) = 5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829
+SIZE (rust/crates/winnow-0.7.14.crate) = 184718
+SHA256 (rust/crates/yaml-rust-0.4.5.crate) = 56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85
+SIZE (rust/crates/yaml-rust-0.4.5.crate) = 47783
+SHA256 (rust/crates/zerocopy-0.8.33.crate) = 668f5168d10b9ee831de31933dc111a459c97ec93225beb307aed970d1372dfd
+SIZE (rust/crates/zerocopy-0.8.33.crate) = 271917
+SHA256 (rust/crates/zerocopy-derive-0.8.33.crate) = 2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1
+SIZE (rust/crates/zerocopy-derive-0.8.33.crate) = 100877
+SHA256 (ahkohd-oyo-v0.1.24_GH0.tar.gz) = 5283d39438fa71e25a096ade1c755ca80f3eb3f2adbadd7b56936e1e83f3f197
+SIZE (ahkohd-oyo-v0.1.24_GH0.tar.gz) = 3207240
diff --git a/textproc/oyo/pkg-descr b/textproc/oyo/pkg-descr
new file mode 100644
index 000000000000..3d0f688502b8
--- /dev/null
+++ b/textproc/oyo/pkg-descr
@@ -0,0 +1,13 @@
+oyo is a terminal diff viewer that combines a classic scrollable diff with a
+step-through way to review changes.
+
+This tool has different diff modes, such as a dual mode for scrolling through
+diffs or stepping incrementally, a unified mode where code transforms in one
+pane, a split  mode for side-by-side old and new versions, has an evolution
+mode with deletions fading out and a blame mode for Git annotations per line.
+
+Other features of oyo include handling hunk navigation to jump between change
+groups, multi-file support, regex search across diffs, a command palette for
+quick actions, syntax highlighting, word-level diff marking, animated steps,
+line wrapping, Git integration as a difftool, autoplay at set speeds and
+helpful keyboard bindings.
diff --git a/textproc/oyo/pkg-plist b/textproc/oyo/pkg-plist
new file mode 100644
index 000000000000..ca3aebc78c4f
--- /dev/null
+++ b/textproc/oyo/pkg-plist
@@ -0,0 +1,27 @@
+bin/oy
+bin/oy-profile
+%%PORTDOCS%%%%DOCSDIR%%/DEBUG.md
+%%PORTDOCS%%%%DOCSDIR%%/DIFF_PREVIEWS.md
+%%PORTDOCS%%%%DOCSDIR%%/DIFF_VIEWER.md
+%%PORTDOCS%%%%DOCSDIR%%/PERF.md
+%%PORTDOCS%%%%DOCSDIR%%/THEME.md
+%%PORTDOCS%%%%DOCSDIR%%/assets/align_lines_false.png
+%%PORTDOCS%%%%DOCSDIR%%/assets/align_lines_true.png
+%%PORTDOCS%%%%DOCSDIR%%/assets/bg_false_gutter_signs_false.png
+%%PORTDOCS%%%%DOCSDIR%%/assets/bg_true_gutter_signs_false.png
+%%PORTDOCS%%%%DOCSDIR%%/assets/diff_extent_marker_diff.png
+%%PORTDOCS%%%%DOCSDIR%%/assets/diff_fg_theme_bg_false_hi_text.png
+%%PORTDOCS%%%%DOCSDIR%%/assets/extent_marker_scope_hunk.png
+%%PORTDOCS%%%%DOCSDIR%%/assets/extent_marker_scope_progress.png
+%%PORTDOCS%%%%DOCSDIR%%/assets/fg_syntax_bg_false_hi_none.png
+%%PORTDOCS%%%%DOCSDIR%%/assets/fg_syntax_bg_false_hi_text.png
+%%PORTDOCS%%%%DOCSDIR%%/assets/fg_syntax_bg_false_hi_word.png
+%%PORTDOCS%%%%DOCSDIR%%/assets/fg_syntax_bg_true_hi_none.png
+%%PORTDOCS%%%%DOCSDIR%%/assets/fg_syntax_bg_true_hi_text.png
+%%PORTDOCS%%%%DOCSDIR%%/assets/fg_syntax_bg_true_hi_word.png
+%%PORTDOCS%%%%DOCSDIR%%/assets/fg_theme_bg_false_hi_none.png
+%%PORTDOCS%%%%DOCSDIR%%/assets/fg_theme_bg_false_hi_word.png
+%%PORTDOCS%%%%DOCSDIR%%/assets/fg_theme_bg_true_hi_none.png
+%%PORTDOCS%%%%DOCSDIR%%/assets/fg_theme_bg_true_hi_text.png
+%%PORTDOCS%%%%DOCSDIR%%/assets/fg_theme_bg_true_word.png
+%%PORTDOCS%%%%DOCSDIR%%/assets/ui_syntax_off.png


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69a16c14.31a3e.51375040>