git: dadf3c6d4326 - main - misc/codex: add port: Lightweight coding agent that runs in your terminal

From: Hiroki Tagato <tagattie_at_FreeBSD.org>
Date: Fri, 26 Sep 2025 08:03:53 UTC
The branch main has been updated by tagattie:

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

commit dadf3c6d43268c5f4987798308c90e53614c4c66
Author:     Hiroki Tagato <tagattie@FreeBSD.org>
AuthorDate: 2025-09-26 08:02:31 +0000
Commit:     Hiroki Tagato <tagattie@FreeBSD.org>
CommitDate: 2025-09-26 08:03:42 +0000

    misc/codex: add port: Lightweight coding agent that runs in your terminal
    
    Pair with a lightweight coding agent in your terminal.
    
    Our open-source local coding agent that runs in your command line
    interface. Pair with it to write, edit, and understand code.
    
    WWW: https://openai.com/codex
    WWW: https://github.com/openai/codex
---
 misc/Makefile                                      |    1 +
 misc/codex/Makefile                                |   69 ++
 misc/codex/Makefile.crates                         |  564 ++++++++++
 misc/codex/distinfo                                | 1131 ++++++++++++++++++++
 .../files/patch-codex-rs_exec_tests_suite_mod.rs   |    8 +
 misc/codex/pkg-descr                               |    4 +
 6 files changed, 1777 insertions(+)

diff --git a/misc/Makefile b/misc/Makefile
index 20ba46048e49..e378074a4271 100644
--- a/misc/Makefile
+++ b/misc/Makefile
@@ -56,6 +56,7 @@
     SUBDIR += cloc
     SUBDIR += clpbar
     SUBDIR += code2prompt
+    SUBDIR += codex
     SUBDIR += colortail
     SUBDIR += coloursum
     SUBDIR += colwide
diff --git a/misc/codex/Makefile b/misc/codex/Makefile
new file mode 100644
index 000000000000..b4435a465289
--- /dev/null
+++ b/misc/codex/Makefile
@@ -0,0 +1,69 @@
+PORTNAME=	codex
+DISTVERSIONPREFIX=	rust-v
+DISTVERSION=	0.41.0
+CATEGORIES=	misc devel
+
+MAINTAINER=	tagattie@FreeBSD.org
+COMMENT=	Lightweight coding agent that runs in your terminal
+WWW=		https://openai.com/codex \
+		https://github.com/openai/codex
+
+LICENSE=	APACHE20
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+LIB_DEPENDS=	libonig.so:devel/oniguruma
+RUN_DEPENDS=	rg:textproc/ripgrep
+
+USES=		cargo ssl
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	openai
+
+CARGO_CARGOTOML=	${BUILD_WRKSRC}/Cargo.toml
+CARGO_CARGOLOCK=	${BUILD_WRKSRC}/Cargo.lock
+CARGO_BUILD_ARGS=	--bin ${PORTNAME}
+CARGO_INSTALL_PATH=	codex-rs
+CARGO_TEST_ARGS=	--all-features
+CARGO_ENV=		OPENSSL_NO_VENDOR=1
+
+BUILD_WRKSRC=	${WRKSRC}/codex-rs
+
+PLIST_FILES=	bin/${PORTNAME}
+PORTDOCS=	README.md config.md
+
+OPTIONS_DEFINE=		COMPLETIONS DOCS
+OPTIONS_DEFAULT=	COMPLETIONS
+
+COMPLETIONS_DESC=	Build and/or install shell completions
+
+COMPLETIONS_PLIST_FILES=etc/bash_completion.d/${PORTNAME} \
+			share/fish/completions/${PORTNAME}.fish \
+			share/zsh/site-functions/_${PORTNAME}
+
+post-build-COMPLETIONS-on:
+	@${MKDIR} ${WRKSRC}/completions
+.for sh in bash fish zsh
+	${CARGO_TARGET_DIR}/*/${PORTNAME} completion ${sh} > \
+		${WRKSRC}/completions/${PORTNAME}.${sh}
+.endfor
+
+do-install:
+	${INSTALL_PROGRAM} ${CARGO_TARGET_DIR}/*/${PORTNAME} \
+		${STAGEDIR}${PREFIX}/bin
+
+do-install-COMPLETIONS-on:
+	@${MKDIR} ${STAGEDIR}${PREFIX}/etc/bash_completion.d \
+		${STAGEDIR}${PREFIX}/share/fish/completions \
+		${STAGEDIR}${PREFIX}/share/zsh/site-functions
+	${INSTALL_DATA} ${WRKSRC}/completions/${PORTNAME}.bash \
+		${STAGEDIR}${PREFIX}/etc/bash_completion.d/${PORTNAME}
+	${INSTALL_DATA} ${WRKSRC}/completions/${PORTNAME}.fish \
+		${STAGEDIR}${PREFIX}/share/fish/completions/${PORTNAME}.fish
+	${INSTALL_DATA} ${WRKSRC}/completions/${PORTNAME}.zsh \
+		${STAGEDIR}${PREFIX}/share/zsh/site-functions/_${PORTNAME}
+
+do-install-DOCS-on:
+	@${MKDIR} ${STAGEDIR}${DOCSDIR}
+	${INSTALL_MAN} ${PORTDOCS:S|^|${BUILD_WRKSRC}/|} ${STAGEDIR}${DOCSDIR}
+
+.include <bsd.port.mk>
diff --git a/misc/codex/Makefile.crates b/misc/codex/Makefile.crates
new file mode 100644
index 000000000000..eb0e00d11445
--- /dev/null
+++ b/misc/codex/Makefile.crates
@@ -0,0 +1,564 @@
+CARGO_CRATES=	Inflector-0.11.4 \
+		addr2line-0.24.2 \
+		adler2-2.0.1 \
+		ahash-0.8.12 \
+		aho-corasick-1.1.3 \
+		allocative-0.3.4 \
+		allocative_derive-0.3.3 \
+		allocator-api2-0.2.21 \
+		android_system_properties-0.1.5 \
+		annotate-snippets-0.9.2 \
+		ansi-to-tui-7.0.0 \
+		anstream-0.6.19 \
+		anstyle-1.0.11 \
+		anstyle-parse-0.2.7 \
+		anstyle-query-1.1.3 \
+		anstyle-wincon-3.0.9 \
+		anyhow-1.0.99 \
+		arboard-3.6.0 \
+		arrayvec-0.7.6 \
+		ascii-1.1.0 \
+		ascii-canvas-3.0.0 \
+		askama-0.12.1 \
+		askama_derive-0.12.5 \
+		askama_escape-0.10.3 \
+		askama_parser-0.2.1 \
+		assert-json-diff-2.0.2 \
+		assert_cmd-2.0.17 \
+		async-channel-2.5.0 \
+		async-stream-0.3.6 \
+		async-stream-impl-0.3.6 \
+		async-trait-0.1.89 \
+		atomic-waker-1.1.2 \
+		autocfg-1.5.0 \
+		backtrace-0.3.75 \
+		base64-0.22.1 \
+		basic-toml-0.1.10 \
+		beef-0.5.2 \
+		bit-set-0.5.3 \
+		bit-vec-0.6.3 \
+		bitflags-1.3.2 \
+		bitflags-2.9.1 \
+		block-buffer-0.10.4 \
+		bstr-1.12.0 \
+		bumpalo-3.19.0 \
+		bytemuck-1.23.1 \
+		byteorder-1.5.0 \
+		byteorder-lite-0.1.0 \
+		bytes-1.10.1 \
+		cassowary-0.3.0 \
+		castaway-0.2.4 \
+		cc-1.2.30 \
+		cesu8-1.1.0 \
+		cfg-if-1.0.1 \
+		cfg_aliases-0.1.1 \
+		chrono-0.4.42 \
+		chunked_transfer-1.5.0 \
+		clap-4.5.47 \
+		clap_builder-4.5.47 \
+		clap_complete-4.5.57 \
+		clap_derive-4.5.47 \
+		clap_lex-0.7.5 \
+		clipboard-win-5.4.1 \
+		cmp_any-0.8.1 \
+		color-eyre-0.6.5 \
+		color-spantrace-0.3.0 \
+		colorchoice-1.0.4 \
+		combine-4.6.7 \
+		compact_str-0.8.1 \
+		concurrent-queue-2.5.0 \
+		console-0.15.11 \
+		convert_case-0.6.0 \
+		core-foundation-0.9.4 \
+		core-foundation-0.10.1 \
+		core-foundation-sys-0.8.7 \
+		cpufeatures-0.2.17 \
+		crc32fast-1.5.0 \
+		crossbeam-channel-0.5.15 \
+		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 \
+		crypto-common-0.1.6 \
+		ctor-0.1.26 \
+		darling-0.20.11 \
+		darling_core-0.20.11 \
+		darling_macro-0.20.11 \
+		deadpool-0.12.3 \
+		deadpool-runtime-0.1.4 \
+		debugserver-types-0.5.0 \
+		deranged-0.5.4 \
+		derivative-2.2.0 \
+		derive_more-1.0.0 \
+		derive_more-2.0.1 \
+		derive_more-impl-1.0.0 \
+		derive_more-impl-2.0.1 \
+		diff-0.1.13 \
+		difflib-0.4.0 \
+		diffy-0.4.2 \
+		digest-0.10.7 \
+		dirs-6.0.0 \
+		dirs-next-2.0.0 \
+		dirs-sys-0.5.0 \
+		dirs-sys-next-0.1.2 \
+		dispatch2-0.3.0 \
+		display_container-0.9.0 \
+		displaydoc-0.2.5 \
+		doc-comment-0.3.3 \
+		dotenvy-0.15.7 \
+		downcast-rs-1.2.1 \
+		dupe-0.9.1 \
+		dupe_derive-0.9.1 \
+		dyn-clone-1.0.19 \
+		either-1.15.0 \
+		ena-0.14.3 \
+		encode_unicode-1.0.0 \
+		encoding_rs-0.8.35 \
+		endian-type-0.1.2 \
+		enumflags2-0.7.12 \
+		enumflags2_derive-0.7.12 \
+		env-flags-0.1.1 \
+		env_filter-0.1.3 \
+		env_logger-0.11.8 \
+		equivalent-1.0.2 \
+		erased-serde-0.3.31 \
+		errno-0.3.13 \
+		error-code-3.3.2 \
+		event-listener-5.4.0 \
+		event-listener-strategy-0.5.4 \
+		eventsource-stream-0.2.3 \
+		eyre-0.6.12 \
+		fastrand-2.3.0 \
+		fax-0.2.6 \
+		fax_derive-0.2.0 \
+		fd-lock-4.0.4 \
+		fdeflate-0.3.7 \
+		filedescriptor-0.8.3 \
+		fixed_decimal-0.7.0 \
+		fixedbitset-0.4.2 \
+		flate2-1.1.2 \
+		float-cmp-0.10.0 \
+		fnv-1.0.7 \
+		foldhash-0.1.5 \
+		foreign-types-0.3.2 \
+		foreign-types-shared-0.1.1 \
+		form_urlencoded-1.2.1 \
+		futures-0.3.31 \
+		futures-channel-0.3.31 \
+		futures-core-0.3.31 \
+		futures-executor-0.3.31 \
+		futures-io-0.3.31 \
+		futures-macro-0.3.31 \
+		futures-sink-0.3.31 \
+		futures-task-0.3.31 \
+		futures-util-0.3.31 \
+		fxhash-0.2.1 \
+		generic-array-0.14.7 \
+		gethostname-0.4.3 \
+		getopts-0.2.23 \
+		getrandom-0.2.16 \
+		getrandom-0.3.3 \
+		gimli-0.31.1 \
+		globset-0.4.16 \
+		h2-0.4.11 \
+		half-2.6.0 \
+		hashbrown-0.12.3 \
+		hashbrown-0.14.5 \
+		hashbrown-0.15.4 \
+		heck-0.5.0 \
+		hermit-abi-0.5.2 \
+		hex-0.4.3 \
+		home-0.5.11 \
+		http-1.3.1 \
+		http-body-1.0.1 \
+		http-body-util-0.1.3 \
+		httparse-1.10.1 \
+		httpdate-1.0.3 \
+		humansize-2.1.3 \
+		hyper-1.7.0 \
+		hyper-rustls-0.27.7 \
+		hyper-tls-0.6.0 \
+		hyper-util-0.1.16 \
+		iana-time-zone-0.1.63 \
+		iana-time-zone-haiku-0.1.2 \
+		icu_collections-2.0.0 \
+		icu_decimal-2.0.0 \
+		icu_decimal_data-2.0.0 \
+		icu_locale-2.0.0 \
+		icu_locale_core-2.0.0 \
+		icu_locale_data-2.0.0 \
+		icu_normalizer-2.0.0 \
+		icu_normalizer_data-2.0.0 \
+		icu_properties-2.0.1 \
+		icu_properties_data-2.0.1 \
+		icu_provider-2.0.0 \
+		ident_case-1.0.1 \
+		idna-1.0.3 \
+		idna_adapter-1.2.1 \
+		ignore-0.4.23 \
+		image-0.25.8 \
+		indenter-0.3.3 \
+		indexmap-1.9.3 \
+		indexmap-2.10.0 \
+		indoc-2.0.6 \
+		insta-1.43.2 \
+		instability-0.3.9 \
+		inventory-0.3.20 \
+		io-uring-0.7.9 \
+		ipnet-2.11.0 \
+		iri-string-0.7.8 \
+		is-terminal-0.4.16 \
+		is_ci-1.2.0 \
+		is_terminal_polyfill-1.70.1 \
+		itertools-0.10.5 \
+		itertools-0.13.0 \
+		itertools-0.14.0 \
+		itoa-1.0.15 \
+		jiff-0.2.15 \
+		jiff-static-0.2.15 \
+		jni-0.21.1 \
+		jni-sys-0.3.0 \
+		js-sys-0.3.77 \
+		lalrpop-0.19.12 \
+		lalrpop-util-0.19.12 \
+		landlock-0.4.2 \
+		lazy_static-1.5.0 \
+		libc-0.2.175 \
+		libm-0.2.15 \
+		libredox-0.1.6 \
+		linux-raw-sys-0.4.15 \
+		linux-raw-sys-0.9.4 \
+		litemap-0.8.0 \
+		lock_api-0.4.13 \
+		log-0.4.28 \
+		logos-0.12.1 \
+		logos-derive-0.12.1 \
+		lru-0.12.5 \
+		lsp-types-0.94.1 \
+		maplit-1.0.2 \
+		matchers-0.2.0 \
+		memchr-2.7.5 \
+		memoffset-0.6.5 \
+		mime-0.3.17 \
+		mime_guess-2.0.5 \
+		minimal-lexical-0.2.1 \
+		miniz_oxide-0.8.9 \
+		mio-1.0.4 \
+		moxcms-0.7.5 \
+		multimap-0.10.1 \
+		native-tls-0.2.14 \
+		ndk-context-0.1.1 \
+		new_debug_unreachable-1.0.6 \
+		nibble_vec-0.1.0 \
+		nix-0.28.0 \
+		nom-7.1.3 \
+		normalize-line-endings-0.3.0 \
+		nu-ansi-term-0.50.1 \
+		nucleo-matcher-0.3.1 \
+		num-bigint-0.4.6 \
+		num-conv-0.1.0 \
+		num-integer-0.1.46 \
+		num-traits-0.2.19 \
+		num_cpus-1.17.0 \
+		num_threads-0.1.7 \
+		objc2-0.6.2 \
+		objc2-app-kit-0.3.1 \
+		objc2-core-foundation-0.3.1 \
+		objc2-core-graphics-0.3.1 \
+		objc2-encode-4.1.0 \
+		objc2-foundation-0.3.1 \
+		objc2-io-surface-0.3.1 \
+		object-0.36.7 \
+		once_cell-1.21.3 \
+		once_cell_polyfill-1.70.1 \
+		openssl-0.10.73 \
+		openssl-macros-0.1.1 \
+		openssl-probe-0.1.6 \
+		openssl-src-300.5.1+3.5.1 \
+		openssl-sys-0.9.109 \
+		option-ext-0.2.0 \
+		os_info-3.12.0 \
+		owo-colors-4.2.2 \
+		parking-2.2.1 \
+		parking_lot-0.12.4 \
+		parking_lot_core-0.9.11 \
+		paste-1.0.15 \
+		path-absolutize-3.1.1 \
+		path-clean-1.0.1 \
+		path-dedot-3.1.1 \
+		pathdiff-0.2.3 \
+		percent-encoding-2.3.1 \
+		petgraph-0.6.5 \
+		phf_shared-0.11.3 \
+		pin-project-lite-0.2.16 \
+		pin-utils-0.1.0 \
+		pkg-config-0.3.32 \
+		plist-1.7.4 \
+		png-0.18.0 \
+		portable-atomic-1.11.1 \
+		portable-atomic-util-0.2.4 \
+		portable-pty-0.9.0 \
+		potential_utf-0.1.2 \
+		powerfmt-0.2.0 \
+		ppv-lite86-0.2.21 \
+		precomputed-hash-0.1.1 \
+		predicates-3.1.3 \
+		predicates-core-1.0.9 \
+		predicates-tree-1.0.12 \
+		pretty_assertions-1.4.1 \
+		proc-macro2-1.0.95 \
+		pulldown-cmark-0.10.3 \
+		pulldown-cmark-escape-0.10.1 \
+		pxfm-0.1.23 \
+		quick-error-2.0.1 \
+		quick-xml-0.38.0 \
+		quote-1.0.40 \
+		r-efi-5.3.0 \
+		radix_trie-0.2.1 \
+		rand-0.9.2 \
+		rand_chacha-0.9.0 \
+		rand_core-0.9.3 \
+		redox_syscall-0.5.15 \
+		redox_users-0.4.6 \
+		redox_users-0.5.0 \
+		ref-cast-1.0.24 \
+		ref-cast-impl-1.0.24 \
+		regex-1.11.1 \
+		regex-automata-0.4.9 \
+		regex-lite-0.1.7 \
+		regex-syntax-0.6.29 \
+		regex-syntax-0.8.5 \
+		reqwest-0.12.23 \
+		ring-0.17.14 \
+		rustc-demangle-0.1.25 \
+		rustix-0.38.44 \
+		rustix-1.0.8 \
+		rustls-0.23.29 \
+		rustls-pki-types-1.12.0 \
+		rustls-webpki-0.103.4 \
+		rustversion-1.0.21 \
+		rustyline-14.0.0 \
+		ryu-1.0.20 \
+		same-file-1.0.6 \
+		schannel-0.1.27 \
+		schemafy-0.5.2 \
+		schemafy_core-0.5.2 \
+		schemafy_lib-0.5.2 \
+		schemars-0.8.22 \
+		schemars-0.9.0 \
+		schemars-1.0.4 \
+		schemars_derive-0.8.22 \
+		scopeguard-1.2.0 \
+		seccompiler-0.5.0 \
+		security-framework-2.11.1 \
+		security-framework-sys-2.14.0 \
+		serde-1.0.226 \
+		serde_core-1.0.226 \
+		serde_derive-1.0.226 \
+		serde_derive_internals-0.29.1 \
+		serde_json-1.0.145 \
+		serde_repr-0.1.20 \
+		serde_spanned-1.0.0 \
+		serde_urlencoded-0.7.1 \
+		serde_with-3.14.0 \
+		serde_with_macros-3.14.0 \
+		serial2-0.2.31 \
+		sha1-0.10.6 \
+		sha2-0.10.9 \
+		sharded-slab-0.1.7 \
+		shared_library-0.1.9 \
+		shell-words-1.1.0 \
+		shlex-1.3.0 \
+		signal-hook-0.3.18 \
+		signal-hook-mio-0.2.4 \
+		signal-hook-registry-1.4.5 \
+		simd-adler32-0.3.7 \
+		simdutf8-0.1.5 \
+		similar-2.7.0 \
+		siphasher-1.0.1 \
+		slab-0.4.11 \
+		smallvec-1.15.1 \
+		smawk-0.3.2 \
+		socket2-0.6.0 \
+		stable_deref_trait-1.2.0 \
+		starlark-0.13.0 \
+		starlark_derive-0.13.0 \
+		starlark_map-0.13.0 \
+		starlark_syntax-0.13.0 \
+		static_assertions-1.1.0 \
+		streaming-iterator-0.1.9 \
+		string_cache-0.8.9 \
+		strsim-0.10.0 \
+		strsim-0.11.1 \
+		strum-0.26.3 \
+		strum-0.27.2 \
+		strum_macros-0.26.4 \
+		strum_macros-0.27.2 \
+		subtle-2.6.1 \
+		supports-color-3.0.2 \
+		syn-1.0.109 \
+		syn-2.0.104 \
+		sync_wrapper-1.0.2 \
+		synstructure-0.13.2 \
+		sys-locale-0.3.2 \
+		system-configuration-0.6.1 \
+		system-configuration-sys-0.6.0 \
+		tempfile-3.23.0 \
+		term-0.7.0 \
+		termcolor-1.4.1 \
+		terminal_size-0.4.2 \
+		termtree-0.5.1 \
+		textwrap-0.11.0 \
+		textwrap-0.16.2 \
+		thiserror-1.0.69 \
+		thiserror-2.0.16 \
+		thiserror-impl-1.0.69 \
+		thiserror-impl-2.0.16 \
+		thread_local-1.1.9 \
+		tiff-0.10.3 \
+		time-0.3.44 \
+		time-core-0.1.6 \
+		time-macros-0.2.24 \
+		tiny-keccak-2.0.2 \
+		tiny_http-0.12.0 \
+		tinystr-0.8.1 \
+		tokio-1.47.1 \
+		tokio-macros-2.5.0 \
+		tokio-native-tls-0.3.1 \
+		tokio-rustls-0.26.2 \
+		tokio-stream-0.1.17 \
+		tokio-test-0.4.4 \
+		tokio-util-0.7.16 \
+		toml-0.9.5 \
+		toml_datetime-0.7.0 \
+		toml_edit-0.23.4 \
+		toml_parser-1.0.2 \
+		toml_writer-1.0.2 \
+		tower-0.5.2 \
+		tower-http-0.6.6 \
+		tower-layer-0.3.3 \
+		tower-service-0.3.3 \
+		tracing-0.1.41 \
+		tracing-appender-0.2.3 \
+		tracing-attributes-0.1.30 \
+		tracing-core-0.1.34 \
+		tracing-error-0.2.1 \
+		tracing-log-0.2.0 \
+		tracing-subscriber-0.3.20 \
+		tree-sitter-0.25.9 \
+		tree-sitter-bash-0.25.0 \
+		tree-sitter-language-0.1.5 \
+		try-lock-0.2.5 \
+		ts-rs-11.0.1 \
+		ts-rs-macros-11.0.1 \
+		typenum-1.18.0 \
+		unicase-2.8.1 \
+		unicode-ident-1.0.18 \
+		unicode-linebreak-0.1.5 \
+		unicode-segmentation-1.12.0 \
+		unicode-truncate-1.1.0 \
+		unicode-width-0.1.14 \
+		unicode-width-0.2.1 \
+		unicode-xid-0.2.6 \
+		untrusted-0.9.0 \
+		url-2.5.4 \
+		urlencoding-2.1.3 \
+		utf8_iter-1.0.4 \
+		utf8parse-0.2.2 \
+		uuid-1.18.1 \
+		valuable-0.1.1 \
+		vcpkg-0.2.15 \
+		version_check-0.9.5 \
+		vt100-0.16.2 \
+		vte-0.15.0 \
+		wait-timeout-0.2.1 \
+		walkdir-2.5.0 \
+		want-0.3.1 \
+		wasi-0.11.1+wasi-snapshot-preview1 \
+		wasi-0.14.2+wasi-0.2.4 \
+		wasm-bindgen-0.2.100 \
+		wasm-bindgen-backend-0.2.100 \
+		wasm-bindgen-futures-0.4.50 \
+		wasm-bindgen-macro-0.2.100 \
+		wasm-bindgen-macro-support-0.2.100 \
+		wasm-bindgen-shared-0.2.100 \
+		wasm-streams-0.4.2 \
+		web-sys-0.3.77 \
+		webbrowser-1.0.5 \
+		weezl-0.1.10 \
+		which-6.0.3 \
+		wildmatch-2.5.0 \
+		winapi-0.3.9 \
+		winapi-i686-pc-windows-gnu-0.4.0 \
+		winapi-util-0.1.9 \
+		winapi-x86_64-pc-windows-gnu-0.4.0 \
+		windows-core-0.61.2 \
+		windows-implement-0.60.0 \
+		windows-interface-0.59.1 \
+		windows-link-0.1.3 \
+		windows-link-0.2.0 \
+		windows-registry-0.5.3 \
+		windows-result-0.3.4 \
+		windows-strings-0.4.2 \
+		windows-sys-0.45.0 \
+		windows-sys-0.52.0 \
+		windows-sys-0.59.0 \
+		windows-sys-0.60.2 \
+		windows-targets-0.42.2 \
+		windows-targets-0.48.5 \
+		windows-targets-0.52.6 \
+		windows-targets-0.53.2 \
+		windows_aarch64_gnullvm-0.42.2 \
+		windows_aarch64_gnullvm-0.48.5 \
+		windows_aarch64_gnullvm-0.52.6 \
+		windows_aarch64_gnullvm-0.53.0 \
+		windows_aarch64_msvc-0.42.2 \
+		windows_aarch64_msvc-0.48.5 \
+		windows_aarch64_msvc-0.52.6 \
+		windows_aarch64_msvc-0.53.0 \
+		windows_i686_gnu-0.42.2 \
+		windows_i686_gnu-0.48.5 \
+		windows_i686_gnu-0.52.6 \
+		windows_i686_gnu-0.53.0 \
+		windows_i686_gnullvm-0.52.6 \
+		windows_i686_gnullvm-0.53.0 \
+		windows_i686_msvc-0.42.2 \
+		windows_i686_msvc-0.48.5 \
+		windows_i686_msvc-0.52.6 \
+		windows_i686_msvc-0.53.0 \
+		windows_x86_64_gnu-0.42.2 \
+		windows_x86_64_gnu-0.48.5 \
+		windows_x86_64_gnu-0.52.6 \
+		windows_x86_64_gnu-0.53.0 \
+		windows_x86_64_gnullvm-0.42.2 \
+		windows_x86_64_gnullvm-0.48.5 \
+		windows_x86_64_gnullvm-0.52.6 \
+		windows_x86_64_gnullvm-0.53.0 \
+		windows_x86_64_msvc-0.42.2 \
+		windows_x86_64_msvc-0.48.5 \
+		windows_x86_64_msvc-0.52.6 \
+		windows_x86_64_msvc-0.53.0 \
+		winnow-0.7.12 \
+		winreg-0.10.1 \
+		winsafe-0.0.19 \
+		wiremock-0.6.5 \
+		wit-bindgen-rt-0.39.0 \
+		writeable-0.6.1 \
+		x11rb-0.13.1 \
+		x11rb-protocol-0.13.1 \
+		yansi-1.0.1 \
+		yoke-0.8.0 \
+		yoke-derive-0.8.0 \
+		zerocopy-0.8.26 \
+		zerocopy-derive-0.8.26 \
+		zerofrom-0.1.6 \
+		zerofrom-derive-0.1.6 \
+		zeroize-1.8.1 \
+		zerotrie-0.2.2 \
+		zerovec-0.11.2 \
+		zerovec-derive-0.11.1 \
+		zune-core-0.4.12 \
+		zune-jpeg-0.4.19 \
+		ratatui@git+https://github.com/nornagon/ratatui?branch=nornagon-v0.29.0-patch\#9b2ad1298408c45918ee9f8241a6f95498cdbed2
diff --git a/misc/codex/distinfo b/misc/codex/distinfo
new file mode 100644
index 000000000000..5a49245005d4
--- /dev/null
+++ b/misc/codex/distinfo
@@ -0,0 +1,1131 @@
+TIMESTAMP = 1758850925
+SHA256 (rust/crates/Inflector-0.11.4.crate) = fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3
+SIZE (rust/crates/Inflector-0.11.4.crate) = 17438
+SHA256 (rust/crates/addr2line-0.24.2.crate) = dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1
+SIZE (rust/crates/addr2line-0.24.2.crate) = 39015
+SHA256 (rust/crates/adler2-2.0.1.crate) = 320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa
+SIZE (rust/crates/adler2-2.0.1.crate) = 13366
+SHA256 (rust/crates/ahash-0.8.12.crate) = 5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75
+SIZE (rust/crates/ahash-0.8.12.crate) = 43413
+SHA256 (rust/crates/aho-corasick-1.1.3.crate) = 8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916
+SIZE (rust/crates/aho-corasick-1.1.3.crate) = 183311
+SHA256 (rust/crates/allocative-0.3.4.crate) = 8fac2ce611db8b8cee9b2aa886ca03c924e9da5e5295d0dbd0526e5d0b0710f7
+SIZE (rust/crates/allocative-0.3.4.crate) = 27263
+SHA256 (rust/crates/allocative_derive-0.3.3.crate) = fe233a377643e0fc1a56421d7c90acdec45c291b30345eb9f08e8d0ddce5a4ab
+SIZE (rust/crates/allocative_derive-0.3.3.crate) = 3896
+SHA256 (rust/crates/allocator-api2-0.2.21.crate) = 683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923
+SIZE (rust/crates/allocator-api2-0.2.21.crate) = 63622
+SHA256 (rust/crates/android_system_properties-0.1.5.crate) = 819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311
+SIZE (rust/crates/android_system_properties-0.1.5.crate) = 5243
+SHA256 (rust/crates/annotate-snippets-0.9.2.crate) = ccaf7e9dfbb6ab22c82e473cd1a8a7bd313c19a5b7e40970f3d89ef5a5c9e81e
+SIZE (rust/crates/annotate-snippets-0.9.2.crate) = 32065
+SHA256 (rust/crates/ansi-to-tui-7.0.0.crate) = 67555e1f1ece39d737e28c8a017721287753af3f93225e4a445b29ccb0f5912c
+SIZE (rust/crates/ansi-to-tui-7.0.0.crate) = 27300
+SHA256 (rust/crates/anstream-0.6.19.crate) = 301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933
+SIZE (rust/crates/anstream-0.6.19.crate) = 28767
+SHA256 (rust/crates/anstyle-1.0.11.crate) = 862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd
+SIZE (rust/crates/anstyle-1.0.11.crate) = 15880
+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.3.crate) = 6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9
+SIZE (rust/crates/anstyle-query-1.1.3.crate) = 10190
+SHA256 (rust/crates/anstyle-wincon-3.0.9.crate) = 403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882
+SIZE (rust/crates/anstyle-wincon-3.0.9.crate) = 12561
+SHA256 (rust/crates/anyhow-1.0.99.crate) = b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100
+SIZE (rust/crates/anyhow-1.0.99.crate) = 53809
+SHA256 (rust/crates/arboard-3.6.0.crate) = 55f533f8e0af236ffe5eb979b99381df3258853f00ba2e44b6e1955292c75227
+SIZE (rust/crates/arboard-3.6.0.crate) = 52701
+SHA256 (rust/crates/arrayvec-0.7.6.crate) = 7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50
+SIZE (rust/crates/arrayvec-0.7.6.crate) = 31237
+SHA256 (rust/crates/ascii-1.1.0.crate) = d92bec98840b8f03a5ff5413de5293bfcd8bf96467cf5452609f939ec6f5de16
+SIZE (rust/crates/ascii-1.1.0.crate) = 36075
+SHA256 (rust/crates/ascii-canvas-3.0.0.crate) = 8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6
+SIZE (rust/crates/ascii-canvas-3.0.0.crate) = 10575
+SHA256 (rust/crates/askama-0.12.1.crate) = b79091df18a97caea757e28cd2d5fda49c6cd4bd01ddffd7ff01ace0c0ad2c28
+SIZE (rust/crates/askama-0.12.1.crate) = 16976
+SHA256 (rust/crates/askama_derive-0.12.5.crate) = 19fe8d6cb13c4714962c072ea496f3392015f0989b1a2847bb4b2d9effd71d83
+SIZE (rust/crates/askama_derive-0.12.5.crate) = 31218
+SHA256 (rust/crates/askama_escape-0.10.3.crate) = 619743e34b5ba4e9703bba34deac3427c72507c7159f5fd030aea8cac0cfe341
+SIZE (rust/crates/askama_escape-0.10.3.crate) = 8875
+SHA256 (rust/crates/askama_parser-0.2.1.crate) = acb1161c6b64d1c3d83108213c2a2533a342ac225aabd0bda218278c2ddb00c0
+SIZE (rust/crates/askama_parser-0.2.1.crate) = 20707
+SHA256 (rust/crates/assert-json-diff-2.0.2.crate) = 47e4f2b81832e72834d7518d8487a0396a28cc408186a2e8854c0f98011faf12
+SIZE (rust/crates/assert-json-diff-2.0.2.crate) = 10874
+SHA256 (rust/crates/assert_cmd-2.0.17.crate) = 2bd389a4b2970a01282ee455294913c0a43724daedcd1a24c3eb0ec1c1320b66
+SIZE (rust/crates/assert_cmd-2.0.17.crate) = 26914
+SHA256 (rust/crates/async-channel-2.5.0.crate) = 924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2
+SIZE (rust/crates/async-channel-2.5.0.crate) = 18624
+SHA256 (rust/crates/async-stream-0.3.6.crate) = 0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476
+SIZE (rust/crates/async-stream-0.3.6.crate) = 13823
+SHA256 (rust/crates/async-stream-impl-0.3.6.crate) = c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d
+SIZE (rust/crates/async-stream-impl-0.3.6.crate) = 4312
+SHA256 (rust/crates/async-trait-0.1.89.crate) = 9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb
+SIZE (rust/crates/async-trait-0.1.89.crate) = 32171
+SHA256 (rust/crates/atomic-waker-1.1.2.crate) = 1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0
+SIZE (rust/crates/atomic-waker-1.1.2.crate) = 12422
+SHA256 (rust/crates/autocfg-1.5.0.crate) = c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8
+SIZE (rust/crates/autocfg-1.5.0.crate) = 18729
+SHA256 (rust/crates/backtrace-0.3.75.crate) = 6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002
+SIZE (rust/crates/backtrace-0.3.75.crate) = 92665
+SHA256 (rust/crates/base64-0.22.1.crate) = 72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6
+SIZE (rust/crates/base64-0.22.1.crate) = 81597
+SHA256 (rust/crates/basic-toml-0.1.10.crate) = ba62675e8242a4c4e806d12f11d136e626e6c8361d6b829310732241652a178a
+SIZE (rust/crates/basic-toml-0.1.10.crate) = 50648
+SHA256 (rust/crates/beef-0.5.2.crate) = 3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1
+SIZE (rust/crates/beef-0.5.2.crate) = 15275
+SHA256 (rust/crates/bit-set-0.5.3.crate) = 0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1
+SIZE (rust/crates/bit-set-0.5.3.crate) = 14470
+SHA256 (rust/crates/bit-vec-0.6.3.crate) = 349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb
+SIZE (rust/crates/bit-vec-0.6.3.crate) = 19927
+SHA256 (rust/crates/bitflags-1.3.2.crate) = bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a
+SIZE (rust/crates/bitflags-1.3.2.crate) = 23021
+SHA256 (rust/crates/bitflags-2.9.1.crate) = 1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967
+SIZE (rust/crates/bitflags-2.9.1.crate) = 47913
+SHA256 (rust/crates/block-buffer-0.10.4.crate) = 3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71
+SIZE (rust/crates/block-buffer-0.10.4.crate) = 10538
+SHA256 (rust/crates/bstr-1.12.0.crate) = 234113d19d0d7d613b40e86fb654acf958910802bcceab913a4f9e7cda03b1a4
+SIZE (rust/crates/bstr-1.12.0.crate) = 351557
+SHA256 (rust/crates/bumpalo-3.19.0.crate) = 46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43
+SIZE (rust/crates/bumpalo-3.19.0.crate) = 96414
+SHA256 (rust/crates/bytemuck-1.23.1.crate) = 5c76a5792e44e4abe34d3abf15636779261d45a7450612059293d1d2cfc63422
+SIZE (rust/crates/bytemuck-1.23.1.crate) = 52585
+SHA256 (rust/crates/byteorder-1.5.0.crate) = 1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b
+SIZE (rust/crates/byteorder-1.5.0.crate) = 23288
+SHA256 (rust/crates/byteorder-lite-0.1.0.crate) = 8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495
+SIZE (rust/crates/byteorder-lite-0.1.0.crate) = 15909
+SHA256 (rust/crates/bytes-1.10.1.crate) = d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a
+SIZE (rust/crates/bytes-1.10.1.crate) = 76779
+SHA256 (rust/crates/cassowary-0.3.0.crate) = df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53
+SIZE (rust/crates/cassowary-0.3.0.crate) = 22876
+SHA256 (rust/crates/castaway-0.2.4.crate) = dec551ab6e7578819132c713a93c022a05d60159dc86e7a7050223577484c55a
+SIZE (rust/crates/castaway-0.2.4.crate) = 12546
+SHA256 (rust/crates/cc-1.2.30.crate) = deec109607ca693028562ed836a5f1c4b8bd77755c4e132fc5ce11b0b6211ae7
+SIZE (rust/crates/cc-1.2.30.crate) = 108550
+SHA256 (rust/crates/cesu8-1.1.0.crate) = 6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c
+SIZE (rust/crates/cesu8-1.1.0.crate) = 10555
+SHA256 (rust/crates/cfg-if-1.0.1.crate) = 9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268
+SIZE (rust/crates/cfg-if-1.0.1.crate) = 8683
+SHA256 (rust/crates/cfg_aliases-0.1.1.crate) = fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e
+SIZE (rust/crates/cfg_aliases-0.1.1.crate) = 6009
+SHA256 (rust/crates/chrono-0.4.42.crate) = 145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2
+SIZE (rust/crates/chrono-0.4.42.crate) = 238174
+SHA256 (rust/crates/chunked_transfer-1.5.0.crate) = 6e4de3bc4ea267985becf712dc6d9eed8b04c953b3fcfb339ebc87acd9804901
+SIZE (rust/crates/chunked_transfer-1.5.0.crate) = 9779
+SHA256 (rust/crates/clap-4.5.47.crate) = 7eac00902d9d136acd712710d71823fb8ac8004ca445a89e73a41d45aa712931
+SIZE (rust/crates/clap-4.5.47.crate) = 58354
+SHA256 (rust/crates/clap_builder-4.5.47.crate) = 2ad9bbf750e73b5884fb8a211a9424a1906c1e156724260fdae972f31d70e1d6
+SIZE (rust/crates/clap_builder-4.5.47.crate) = 170016
+SHA256 (rust/crates/clap_complete-4.5.57.crate) = 4d9501bd3f5f09f7bbee01da9a511073ed30a80cd7a509f1214bb74eadea71ad
+SIZE (rust/crates/clap_complete-4.5.57.crate) = 48637
+SHA256 (rust/crates/clap_derive-4.5.47.crate) = bbfd7eae0b0f1a6e63d4b13c9c478de77c2eb546fba158ad50b4203dc24b9f9c
+SIZE (rust/crates/clap_derive-4.5.47.crate) = 33550
+SHA256 (rust/crates/clap_lex-0.7.5.crate) = b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675
+SIZE (rust/crates/clap_lex-0.7.5.crate) = 13469
+SHA256 (rust/crates/clipboard-win-5.4.1.crate) = bde03770d3df201d4fb868f2c9c59e66a3e4e2bd06692a0fe701e7103c7e84d4
+SIZE (rust/crates/clipboard-win-5.4.1.crate) = 20994
+SHA256 (rust/crates/cmp_any-0.8.1.crate) = e9b18233253483ce2f65329a24072ec414db782531bdbb7d0bbc4bd2ce6b7e21
+SIZE (rust/crates/cmp_any-0.8.1.crate) = 6508
+SHA256 (rust/crates/color-eyre-0.6.5.crate) = e5920befb47832a6d61ee3a3a846565cfa39b331331e68a3b1d1116630f2f26d
+SIZE (rust/crates/color-eyre-0.6.5.crate) = 636255
+SHA256 (rust/crates/color-spantrace-0.3.0.crate) = b8b88ea9df13354b55bc7234ebcce36e6ef896aca2e42a15de9e10edce01b427
+SIZE (rust/crates/color-spantrace-0.3.0.crate) = 12884
+SHA256 (rust/crates/colorchoice-1.0.4.crate) = b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75
+SIZE (rust/crates/colorchoice-1.0.4.crate) = 8196
+SHA256 (rust/crates/combine-4.6.7.crate) = ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd
+SIZE (rust/crates/combine-4.6.7.crate) = 134808
+SHA256 (rust/crates/compact_str-0.8.1.crate) = 3b79c4069c6cad78e2e0cdfcbd26275770669fb39fd308a752dc110e83b9af32
+SIZE (rust/crates/compact_str-0.8.1.crate) = 71371
+SHA256 (rust/crates/concurrent-queue-2.5.0.crate) = 4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973
+SIZE (rust/crates/concurrent-queue-2.5.0.crate) = 22654
+SHA256 (rust/crates/console-0.15.11.crate) = 054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8
+SIZE (rust/crates/console-0.15.11.crate) = 37822
+SHA256 (rust/crates/convert_case-0.6.0.crate) = ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca
+SIZE (rust/crates/convert_case-0.6.0.crate) = 18675
+SHA256 (rust/crates/core-foundation-0.9.4.crate) = 91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f
+SIZE (rust/crates/core-foundation-0.9.4.crate) = 27743
+SHA256 (rust/crates/core-foundation-0.10.1.crate) = b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6
+SIZE (rust/crates/core-foundation-0.10.1.crate) = 28886
+SHA256 (rust/crates/core-foundation-sys-0.8.7.crate) = 773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b
+SIZE (rust/crates/core-foundation-sys-0.8.7.crate) = 37712
+SHA256 (rust/crates/cpufeatures-0.2.17.crate) = 59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280
+SIZE (rust/crates/cpufeatures-0.2.17.crate) = 13466
+SHA256 (rust/crates/crc32fast-1.5.0.crate) = 9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511
+SIZE (rust/crates/crc32fast-1.5.0.crate) = 40723
+SHA256 (rust/crates/crossbeam-channel-0.5.15.crate) = 82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2
+SIZE (rust/crates/crossbeam-channel-0.5.15.crate) = 92716
+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/crypto-common-0.1.6.crate) = 1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3
+SIZE (rust/crates/crypto-common-0.1.6.crate) = 8760
+SHA256 (rust/crates/ctor-0.1.26.crate) = 6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096
+SIZE (rust/crates/ctor-0.1.26.crate) = 10803
+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/deadpool-0.12.3.crate) = 0be2b1d1d6ec8d846f05e137292d0b89133caf95ef33695424c09568bdd39b1b
+SIZE (rust/crates/deadpool-0.12.3.crate) = 45380
+SHA256 (rust/crates/deadpool-runtime-0.1.4.crate) = 092966b41edc516079bdf31ec78a2e0588d1d0c08f78b91d8307215928642b2b
+SIZE (rust/crates/deadpool-runtime-0.1.4.crate) = 7664
+SHA256 (rust/crates/debugserver-types-0.5.0.crate) = 2bf6834a70ed14e8e4e41882df27190bea150f1f6ecf461f1033f8739cd8af4a
+SIZE (rust/crates/debugserver-types-0.5.0.crate) = 18075
+SHA256 (rust/crates/deranged-0.5.4.crate) = a41953f86f8a05768a6cda24def994fd2f424b04ec5c719cf89989779f199071
+SIZE (rust/crates/deranged-0.5.4.crate) = 24461
+SHA256 (rust/crates/derivative-2.2.0.crate) = fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b
+SIZE (rust/crates/derivative-2.2.0.crate) = 48076
+SHA256 (rust/crates/derive_more-1.0.0.crate) = 4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05
+SIZE (rust/crates/derive_more-1.0.0.crate) = 64854
+SHA256 (rust/crates/derive_more-2.0.1.crate) = 093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678
+SIZE (rust/crates/derive_more-2.0.1.crate) = 70127
+SHA256 (rust/crates/derive_more-impl-1.0.0.crate) = cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22
+SIZE (rust/crates/derive_more-impl-1.0.0.crate) = 76182
+SHA256 (rust/crates/derive_more-impl-2.0.1.crate) = bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3
+SIZE (rust/crates/derive_more-impl-2.0.1.crate) = 78233
+SHA256 (rust/crates/diff-0.1.13.crate) = 56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8
+SIZE (rust/crates/diff-0.1.13.crate) = 46216
+SHA256 (rust/crates/difflib-0.4.0.crate) = 6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8
+SIZE (rust/crates/difflib-0.4.0.crate) = 7638
+SHA256 (rust/crates/diffy-0.4.2.crate) = b545b8c50194bdd008283985ab0b31dba153cfd5b3066a92770634fbc0d7d291
+SIZE (rust/crates/diffy-0.4.2.crate) = 37945
+SHA256 (rust/crates/digest-0.10.7.crate) = 9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292
+SIZE (rust/crates/digest-0.10.7.crate) = 19557
+SHA256 (rust/crates/dirs-6.0.0.crate) = c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e
+SIZE (rust/crates/dirs-6.0.0.crate) = 14190
+SHA256 (rust/crates/dirs-next-2.0.0.crate) = b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1
+SIZE (rust/crates/dirs-next-2.0.0.crate) = 11689
+SHA256 (rust/crates/dirs-sys-0.5.0.crate) = e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab
+SIZE (rust/crates/dirs-sys-0.5.0.crate) = 10157
+SHA256 (rust/crates/dirs-sys-next-0.1.2.crate) = 4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d
+SIZE (rust/crates/dirs-sys-next-0.1.2.crate) = 10681
+SHA256 (rust/crates/dispatch2-0.3.0.crate) = 89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec
+SIZE (rust/crates/dispatch2-0.3.0.crate) = 54606
+SHA256 (rust/crates/display_container-0.9.0.crate) = 0a110a75c96bedec8e65823dea00a1d710288b7a369d95fd8a0f5127639466fa
+SIZE (rust/crates/display_container-0.9.0.crate) = 3530
+SHA256 (rust/crates/displaydoc-0.2.5.crate) = 97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0
+SIZE (rust/crates/displaydoc-0.2.5.crate) = 24219
+SHA256 (rust/crates/doc-comment-0.3.3.crate) = fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10
+SIZE (rust/crates/doc-comment-0.3.3.crate) = 4123
+SHA256 (rust/crates/dotenvy-0.15.7.crate) = 1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b
+SIZE (rust/crates/dotenvy-0.15.7.crate) = 20293
+SHA256 (rust/crates/downcast-rs-1.2.1.crate) = 75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2
+SIZE (rust/crates/downcast-rs-1.2.1.crate) = 11821
+SHA256 (rust/crates/dupe-0.9.1.crate) = 6ed2bc011db9c93fbc2b6cdb341a53737a55bafb46dbb74cf6764fc33a2fbf9c
+SIZE (rust/crates/dupe-0.9.1.crate) = 7525
+SHA256 (rust/crates/dupe_derive-0.9.1.crate) = 83e195b4945e88836d826124af44fdcb262ec01ef94d44f14f4fb5103f19892a
+SIZE (rust/crates/dupe_derive-0.9.1.crate) = 7574
+SHA256 (rust/crates/dyn-clone-1.0.19.crate) = 1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005
+SIZE (rust/crates/dyn-clone-1.0.19.crate) = 12896
+SHA256 (rust/crates/either-1.15.0.crate) = 48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719
+SIZE (rust/crates/either-1.15.0.crate) = 20114
+SHA256 (rust/crates/ena-0.14.3.crate) = 3d248bdd43ce613d87415282f69b9bb99d947d290b10962dd6c56233312c2ad5
+SIZE (rust/crates/ena-0.14.3.crate) = 22986
+SHA256 (rust/crates/encode_unicode-1.0.0.crate) = 34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0
+SIZE (rust/crates/encode_unicode-1.0.0.crate) = 56986
+SHA256 (rust/crates/encoding_rs-0.8.35.crate) = 75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3
+SIZE (rust/crates/encoding_rs-0.8.35.crate) = 1381050
+SHA256 (rust/crates/endian-type-0.1.2.crate) = c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d
+SIZE (rust/crates/endian-type-0.1.2.crate) = 2340
+SHA256 (rust/crates/enumflags2-0.7.12.crate) = 1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef
+SIZE (rust/crates/enumflags2-0.7.12.crate) = 17544
+SHA256 (rust/crates/enumflags2_derive-0.7.12.crate) = 67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827
+SIZE (rust/crates/enumflags2_derive-0.7.12.crate) = 8573
+SHA256 (rust/crates/env-flags-0.1.1.crate) = dbfd0e7fc632dec5e6c9396a27bc9f9975b4e039720e1fd3e34021d3ce28c415
+SIZE (rust/crates/env-flags-0.1.1.crate) = 7251
+SHA256 (rust/crates/env_filter-0.1.3.crate) = 186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0
+SIZE (rust/crates/env_filter-0.1.3.crate) = 15191
+SHA256 (rust/crates/env_logger-0.11.8.crate) = 13c863f0904021b108aa8b2f55046443e6b1ebde8fd4a15c399893aae4fa069f
+SIZE (rust/crates/env_logger-0.11.8.crate) = 32538
+SHA256 (rust/crates/equivalent-1.0.2.crate) = 877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f
+SIZE (rust/crates/equivalent-1.0.2.crate) = 7419
+SHA256 (rust/crates/erased-serde-0.3.31.crate) = 6c138974f9d5e7fe373eb04df7cae98833802ae4b11c24ac7039a21d5af4b26c
+SIZE (rust/crates/erased-serde-0.3.31.crate) = 24182
+SHA256 (rust/crates/errno-0.3.13.crate) = 778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad
+SIZE (rust/crates/errno-0.3.13.crate) = 12449
+SHA256 (rust/crates/error-code-3.3.2.crate) = dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59
+SIZE (rust/crates/error-code-3.3.2.crate) = 8516
+SHA256 (rust/crates/event-listener-5.4.0.crate) = 3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae
+SIZE (rust/crates/event-listener-5.4.0.crate) = 43452
+SHA256 (rust/crates/event-listener-strategy-0.5.4.crate) = 8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93
+SIZE (rust/crates/event-listener-strategy-0.5.4.crate) = 16179
+SHA256 (rust/crates/eventsource-stream-0.2.3.crate) = 74fef4569247a5f429d9156b9d0a2599914385dd189c539334c625d8099d90ab
+SIZE (rust/crates/eventsource-stream-0.2.3.crate) = 15033
+SHA256 (rust/crates/eyre-0.6.12.crate) = 7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec
+SIZE (rust/crates/eyre-0.6.12.crate) = 45330
+SHA256 (rust/crates/fastrand-2.3.0.crate) = 37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be
+SIZE (rust/crates/fastrand-2.3.0.crate) = 15076
+SHA256 (rust/crates/fax-0.2.6.crate) = f05de7d48f37cd6730705cbca900770cab77a89f413d23e100ad7fad7795a0ab
+SIZE (rust/crates/fax-0.2.6.crate) = 13279
+SHA256 (rust/crates/fax_derive-0.2.0.crate) = a0aca10fb742cb43f9e7bb8467c91aa9bcb8e3ffbc6a6f7389bb93ffc920577d
+SIZE (rust/crates/fax_derive-0.2.0.crate) = 4442
+SHA256 (rust/crates/fd-lock-4.0.4.crate) = 0ce92ff622d6dadf7349484f42c93271a0d49b7cc4d466a936405bacbe10aa78
+SIZE (rust/crates/fd-lock-4.0.4.crate) = 15522
+SHA256 (rust/crates/fdeflate-0.3.7.crate) = 1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c
+SIZE (rust/crates/fdeflate-0.3.7.crate) = 27188
+SHA256 (rust/crates/filedescriptor-0.8.3.crate) = e40758ed24c9b2eeb76c35fb0aebc66c626084edd827e07e1552279814c6682d
+SIZE (rust/crates/filedescriptor-0.8.3.crate) = 12635
+SHA256 (rust/crates/fixed_decimal-0.7.0.crate) = 35943d22b2f19c0cb198ecf915910a8158e94541c89dcc63300d7799d46c2c5e
+SIZE (rust/crates/fixed_decimal-0.7.0.crate) = 48669
+SHA256 (rust/crates/fixedbitset-0.4.2.crate) = 0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80
+SIZE (rust/crates/fixedbitset-0.4.2.crate) = 15954
+SHA256 (rust/crates/flate2-1.1.2.crate) = 4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d
+SIZE (rust/crates/flate2-1.1.2.crate) = 76495
+SHA256 (rust/crates/float-cmp-0.10.0.crate) = b09cf3155332e944990140d967ff5eceb70df778b34f77d8075db46e4704e6d8
+SIZE (rust/crates/float-cmp-0.10.0.crate) = 10702
+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/foreign-types-0.3.2.crate) = f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1
+SIZE (rust/crates/foreign-types-0.3.2.crate) = 7504
+SHA256 (rust/crates/foreign-types-shared-0.1.1.crate) = 00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b
+SIZE (rust/crates/foreign-types-shared-0.1.1.crate) = 5672
+SHA256 (rust/crates/form_urlencoded-1.2.1.crate) = e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456
+SIZE (rust/crates/form_urlencoded-1.2.1.crate) = 8969
*** 860 LINES SKIPPED ***