Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 21 Feb 2026 08:26:44 +0000
From:      Hiroki Tagato <tagattie@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: e922dafa095a - main - deskutils/joplin-desktop: Add port: Note taking and to-do application with synchronisation capabilities
Message-ID:  <69996c44.45eb5.7cb5f9bb@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by tagattie:

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

commit e922dafa095a2f5debb517a93d89c0e84921a76b
Author:     Hiroki Tagato <tagattie@FreeBSD.org>
AuthorDate: 2026-02-21 08:25:15 +0000
Commit:     Hiroki Tagato <tagattie@FreeBSD.org>
CommitDate: 2026-02-21 08:26:31 +0000

    deskutils/joplin-desktop: Add port: Note taking and to-do application with synchronisation capabilities
    
    Joplin is a free, open source note taking and to-do application, which
    can handle a large number of notes organised into notebooks. The notes
    are searchable, can be copied, tagged and modified either from the
    applications directly or from your own text editor. The notes are in
    Markdown format.
    
    WWW: https://joplinapp.org
---
 deskutils/Makefile                                 |     1 +
 deskutils/joplin-desktop/Makefile                  |   175 +
 deskutils/joplin-desktop/Makefile.crates           |   367 +
 deskutils/joplin-desktop/distinfo                  |   751 +
 .../files/app-clipper/package-lock.json            |  7700 +++
 .../joplin-desktop/files/app-clipper/package.json  |    35 +
 .../io.github.jackgruber.backup/package-lock.json  | 26047 +++++++++
 .../io.github.jackgruber.backup/package.json       |    78 +
 .../joplin-desktop/files/joplin-desktop.desktop    |    11 +
 deskutils/joplin-desktop/files/joplin-desktop.in   |    13 +
 .../.yarn/joplin-empty-package/README.md           |    10 +
 .../.yarn/joplin-empty-package/package.json        |    10 +
 .../app-builder-lib-npm-24.13.3-86a66c0bf3.patch   |    90 +
 .../.yarn/patches/depd-npm-1.1.2-b0c8414da7.patch  |    36 +
 .../.yarn/patches/depd-npm-2.0.0-b6c51a4b43.patch  |    35 +
 .../patches/eslint-npm-8.39.0-d92bace04d.patch     |    15 +
 .../patches/nanoid-npm-3.3.7-98824ba130.patch      |    12 +
 .../pdfjs-dist-npm-3.11.174-67f2fee6d6.patch       |    31 +
 .../react-native-camera-npm-4.2.1-24b2600a7e.patch |    20 +
 .../react-native-npm-0.79.2-9db13eddfe.patch       |   205 +
 .../react-native-paper-npm-5.13.1-f153e542e2.patch |    50 +
 ...t-native-popup-menu-npm-0.17.0-8b745d88dd.patch |    64 +
 ...ative-sqlite-storage-npm-6.0.1-8369d747bd.patch |    37 +
 .../rn-fetch-blob-npm-0.12.0-cf02e3c544.patch      |   118 +
 .../packagejsons/.yarn/releases/yarn-4.9.2.cjs     |   942 +
 .../joplin-desktop/files/packagejsons/.yarnrc.yml  |    35 +
 .../joplin-desktop/files/packagejsons/package.json |   128 +
 .../packagejsons/packages/app-cli/package.json     |    83 +
 .../tests/support/plugins/clipboard/package.json   |    27 +
 .../codemirror5-and-codemirror6/package.json       |    31 +
 .../tests/support/plugins/codemirror6/package.json |    32 +
 .../plugins/codemirror_content_script/package.json |    31 +
 .../support/plugins/content_script/package.json    |    34 +
 .../tests/support/plugins/dialog/package.json      |    31 +
 .../plugins/editor_context_menu/package.json       |    31 +
 .../tests/support/plugins/events/package.json      |    31 +
 .../support/plugins/external_assets/package.json   |    30 +
 .../tests/support/plugins/imaging/package.json     |    31 +
 .../tests/support/plugins/jpl_test/package.json    |    31 +
 .../tests/support/plugins/json_export/package.json |    31 +
 .../tests/support/plugins/load_css/package.json    |    27 +
 .../tests/support/plugins/menu/package.json        |    31 +
 .../support/plugins/multi_selection/package.json   |    31 +
 .../support/plugins/nativeModule/package.json      |    30 +
 .../plugins/note_list_renderer/package.json        |    30 +
 .../support/plugins/post_messages/package.json     |    30 +
 .../support/plugins/register_command/package.json  |    31 +
 .../support/plugins/selected_text/package.json     |    31 +
 .../tests/support/plugins/settings/package.json    |    31 +
 .../tests/support/plugins/toast/package.json       |    31 +
 .../app-cli/tests/support/plugins/toc/package.json |    34 +
 .../tests/support/plugins/user_data/package.json   |    30 +
 .../plugins/withExternalModules/package.json       |    34 +
 .../tests/support/plugins/worker/package.json      |    38 +
 .../packagejsons/packages/app-clipper/package.json |    12 +
 .../packages/app-clipper/popup/package.json        |    35 +
 .../packagejsons/packages/app-desktop/package.json |   217 +
 .../packagejsons/packages/app-mobile/package.json  |   169 +
 .../utils/polyfills/crypto-polyfill/package.json   |     5 +
 .../packages/default-plugins/package.json          |    26 +
 .../packagejsons/packages/doc-builder/package.json |    53 +
 .../packagejsons/packages/editor/package.json      |    64 +
 .../packages/fork-htmlparser2/package.json         |    68 +
 .../packagejsons/packages/fork-sax/package.json    |    22 +
 .../packagejsons/packages/fork-uslug/package.json  |    50 +
 .../packages/generate-plugin-doc/package.json      |    13 +
 .../packages/generator-joplin/package.json         |    41 +
 .../packagejsons/packages/htmlpack/package.json    |    41 +
 .../files/packagejsons/packages/lib/package.json   |   106 +
 .../packages/onenote-converter/package.json        |    21 +
 .../packagejsons/packages/pdf-viewer/package.json  |    55 +
 .../packages/plugin-repo-cli/package.json          |    41 +
 .../packages/plugins/ToggleSidebars/package.json   |    30 +
 .../packagejsons/packages/plugins/package.json     |     7 +
 .../react-native-alarm-notification/package.json   |    20 +
 .../packages/react-native-saf-x/package.json       |    58 +
 .../packagejsons/packages/renderer/package.json    |    61 +
 .../packagejsons/packages/server/package.json      |    88 +
 .../files/packagejsons/packages/tools/package.json |    71 +
 .../packagejsons/packages/transcribe/package.json  |    47 +
 .../packages/turndown-plugin-gfm/package.json      |    45 +
 .../packagejsons/packages/turndown/package.json    |    51 +
 .../files/packagejsons/packages/utils/package.json |    61 +
 .../joplin-desktop/files/packagejsons/yarn.lock    | 54295 +++++++++++++++++++
 ...atch-packages_app-desktop_ElectronAppWrapper.ts |    11 +
 ...ackages_app-desktop_gui_Sidebar_styles_index.ts |    11 +
 .../patch-packages_app-desktop_tools_copy7Zip.ts   |    10 +
 ...packages_default-plugins_buildDefaultPlugins.ts |    71 +
 ...packages_lib_models_settings_builtInMetadata.ts |    11 +
 .../patch-packages_lib_services_SettingUtils.ts    |    11 +
 ...-packages_lib_services_contextkey_contextkey.ts |    34 +
 ...ices_keychain_KeychainServiceDriver.electron.ts |    20 +
 ...ote-converter_node__modules_wasm-pack_binary.js |    13 +
 ...es_turndown_node__modules_rollup_dist_native.js |    13 +
 .../patch-rollup_rust_bindings__napi_Cargo.toml    |    11 +
 deskutils/joplin-desktop/pkg-descr                 |     5 +
 deskutils/joplin-desktop/pkg-plist                 |    59 +
 97 files changed, 94062 insertions(+)

diff --git a/deskutils/Makefile b/deskutils/Makefile
index 6a74b4987633..eb8e88e459f4 100644
--- a/deskutils/Makefile
+++ b/deskutils/Makefile
@@ -132,6 +132,7 @@
     SUBDIR += itinerary
     SUBDIR += jjclient
     SUBDIR += jlj
+    SUBDIR += joplin-desktop
     SUBDIR += jot
     SUBDIR += just
     SUBDIR += kaddressbook
diff --git a/deskutils/joplin-desktop/Makefile b/deskutils/joplin-desktop/Makefile
new file mode 100644
index 000000000000..f0f812da13f7
--- /dev/null
+++ b/deskutils/joplin-desktop/Makefile
@@ -0,0 +1,175 @@
+PORTNAME=	joplin
+DISTVERSIONPREFIX=	v
+DISTVERSION=	3.5.12
+CATEGORIES=	deskutils
+PKGNAMESUFFIX=	-desktop
+DISTFILES=	${DEFAULT_PLUGINS_NODE_MODULES_FILE}:prefetch \
+		${APP_CLIPPER_NODE_MODULES_FILE}:prefetch
+
+MAINTAINER=	tagattie@FreeBSD.org
+COMMENT=	Note taking and to-do application with synchronisation capabilities
+WWW=		https://joplinapp.org
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+FETCH_DEPENDS=	npm${NODEJS_SUFFIX}>0:www/npm${NODEJS_SUFFIX}
+BUILD_DEPENDS=	7zz:archivers/7-zip \
+		git:devel/git \
+		rsync:net/rsync \
+		npm${NODEJS_SUFFIX}>0:www/npm${NODEJS_SUFFIX}
+LIB_DEPENDS=	libvips.so:graphics/vips \
+		libsecret-1.so:security/libsecret
+
+USES=		cargo electron:39 gmake localbase:ldflags nodejs:22,build \
+		python:build
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	laurent22
+GH_TUPLE=	rollup:rollup:v4.9.1:rollup/rollup \
+		rustwasm:wasm-pack:v0.13.1:wasm_pack/wasm-pack
+# See ${WRKSRC}/packages/default-plugins/pluginRepositories.json for GH_TUPLEs for default plugins
+GH_TUPLE+=	JackGruber:joplin-plugin-backup:2c3da7056e7ac39c86c2051a4fdb99d9534dd0a1:joplin_plugin_backup/packages/default-plugins/plugin-sources/io.github.jackgruber.backup
+
+CARGO_CARGOTOML_ROLLUP=	${WRKSRC}/rollup/rust/Cargo.toml
+CARGO_CARGOLOCK_ROLLUP=	${WRKSRC}/rollup/rust/Cargo.lock
+CARGO_CARGOTOML_WASM_PACK=	${WRKSRC}/wasm-pack/Cargo.toml
+CARGO_CARGOLOCK_WASM_PACK=	${WRKSRC}/wasm-pack/Cargo.lock
+CARGO_CARGOTOML=	${CARGO_CARGOTOML_ROLLUP}
+CARGO_CARGOLOCK=	${CARGO_CARGOLOCK_ROLLUP}
+CARGO_CARGOLOCKS=	${CARGO_CARGOLOCK_ROLLUP} \
+			${CARGO_CARGOLOCK_WASM_PACK}
+CARGO_BUILD=	no
+CARGO_INSTALL=	no
+CARGO_TEST=	no
+
+BINARY_ALIAS=	python3=${PYTHON_CMD}
+SUB_FILES=	${PORTNAME}${PKGNAMESUFFIX}
+
+BUILD_WRKSRC=	${WRKSRC}/packages/app-desktop
+TEST_WRKSRC=	${WRKSRC}/packages/app-desktop
+
+PORTDOCS=	README.md SECURITY.md
+
+OPTIONS_DEFINE=	DOCS
+
+USE_ELECTRON=	npm:yarn4 appbuilder prefetch extract build:builder
+
+DEFAULT_PLUGINS_NODE_MODULES_FILE=	${PORTNAME}${PKGNAMESUFFIX}-${DISTVERSION}-default-plugins-node-modules${EXTRACT_SUFX}
+APP_CLIPPER_NODE_MODULES_FILE=		${PORTNAME}${PKGNAMESUFFIX}-${DISTVERSION}-app-clipper-node-modules${EXTRACT_SUFX}
+
+pre-fetch:
+	@if [ ! -f ${DISTDIR}/${DEFAULT_PLUGINS_NODE_MODULES_FILE} ]; then \
+		${ECHO_MSG} "===>  Prefetching and archiving node modules for default plugins"; \
+		${MKDIR} ${WRKDIR}/node-modules-cache; \
+		${CP} -R ${FILESDIR}/default-plugins/* ${WRKDIR}/node-modules-cache; \
+		for dir in `${FIND} ${FILESDIR}/default-plugins -type d -depth 1 -print | ${SED} -e 's|${FILESDIR}/default-plugins||'`; do \
+			cd ${WRKDIR}/node-modules-cache/$${dir} && \
+			${SETENV} HOME=${WRKDIR} XDG_CACHE_HOME=${WRKDIR}/.cache \
+				npm ci --ignore-scripts --no-progress --no-audit --no-fund --no-update-notifier --loglevel=error; \
+			${RM} package.json package-lock.json; \
+		done; \
+		cd ${WRKDIR} && \
+		${SETENV} SCRIPTSDIR=${SCRIPTSDIR} WRKDIR=${WRKDIR} \
+			${SH} ${SCRIPTSDIR}/electron-create-mtree.sh node-modules-cache > \
+			node-modules-cache.mtree && \
+		${SETENV} LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 \
+			${TAR} -cz --options 'gzip:!timestamp' \
+			-f ${DISTDIR}/${DEFAULT_PLUGINS_NODE_MODULES_FILE} @node-modules-cache.mtree; \
+		${RM} -r ${WRKDIR}/node-modules-cache; \
+	fi
+	@if [ ! -f ${DISTDIR}/${APP_CLIPPER_NODE_MODULES_FILE} ]; then \
+		${ECHO_MSG} "===>  Prefetching and archiving node modules for app-clipper"; \
+		${MKDIR} ${WRKDIR}/node-modules-cache-app-clipper; \
+		${CP} -R ${FILESDIR}/app-clipper/* ${WRKDIR}/node-modules-cache-app-clipper; \
+		cd ${WRKDIR}/node-modules-cache-app-clipper && \
+		${SETENV} HOME=${WRKDIR} XDG_CACHE_HOME=${WRKDIR}/.cache \
+			npm ci --ignore-scripts --no-progress --no-audit --no-fund --no-update-notifier --loglevel=error && \
+		${RM} package.json package-lock.json; \
+		cd ${WRKDIR} && \
+		${SETENV} SCRIPTSDIR=${SCRIPTSDIR} WRKDIR=${WRKDIR} \
+			${SH} ${SCRIPTSDIR}/electron-create-mtree.sh node-modules-cache-app-clipper > \
+			node-modules-cache-app-clipper.mtree && \
+		${SETENV} LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 \
+			${TAR} -cz --options 'gzip:!timestamp' \
+			-f ${DISTDIR}/${APP_CLIPPER_NODE_MODULES_FILE} @node-modules-cache-app-clipper.mtree; \
+		${RM} -r ${WRKDIR}/node-modules-cache-app-clipper; \
+	fi
+
+post-extract:
+	@${ECHO_MSG} "===>  Moving prefetched node modules for default plugins to ${WRKSRC}"
+	@for dir in `${FIND} ${WRKDIR}/node-modules-cache -type d -depth 1 -print | ${SED} -e 's|${WRKDIR}/node-modules-cache||'`; do \
+		${MV} ${WRKDIR}/node-modules-cache/$${dir}/node_modules \
+			${WRKSRC}/packages/default-plugins/plugin-sources/$${dir}; \
+	done
+	@${ECHO_MSG} "===>  Moving prefetched node modules for app-clipper to ${WRKSRC}"
+	@${MV} ${WRKDIR}/node-modules-cache-app-clipper/node_modules \
+		${WRKSRC}/packages/app-clipper/popup
+
+post-configure:
+	@${ECHO_MSG} "===>   Updating Cargo.lock for ${CARGO_CARGOTOML_WASM_PACK}"
+	@${CARGO_CARGO_RUN} update --manifest-path ${CARGO_CARGOTOML_WASM_PACK} \
+		--verbose --verbose ${CARGO_UPDATE_ARGS}
+
+pre-build:
+	cd ${WRKSRC}/rollup/rust && \
+	${SETENV} ${MAKE_ENV} ${CARGO_ENV} ${CARGO} build \
+		--manifest-path ${CARGO_CARGOTOML_ROLLUP} \
+		--release --verbose --verbose
+	${CP} ${CARGO_TARGET_DIR}/*/libbindings_napi.so \
+		${WRKSRC}/packages/turndown/node_modules/rollup/dist/rollup.freebsd-${ELECTRON_ARCH}.node
+	cd ${WRKSRC}/wasm-pack && \
+	${SETENV} ${MAKE_ENV} ${CARGO_ENV} ${CARGO} build \
+		--manifest-path ${CARGO_CARGOTOML_WASM_PACK} \
+		--release --verbose --verbose
+	@${MKDIR} ${WRKSRC}/packages/onenote-converter/node_modules/binary-install/node_modules/.bin
+	${CP} ${CARGO_TARGET_DIR}/*/wasm-pack \
+		${WRKSRC}/packages/onenote-converter/node_modules/binary-install/node_modules/.bin
+	@${MKDIR} ${WRKSRC}/packages/app-desktop/node_modules/7zip-bin/freebsd/${ELECTRON_ARCH}
+	${CP} ${LOCALBASE}/bin/7zz \
+		${WRKSRC}/packages/app-desktop/node_modules/7zip-bin/freebsd/${ELECTRON_ARCH}/7za
+	cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} yarn exec gulp build
+	cd ${BUILD_WRKSRC} && \
+	${SETENV} ${MAKE_ENV} ${ELECTRON_REBUILD_ENV} yarn run electronRebuild
+	cd ${BUILD_WRKSRC} && \
+	${SETENV} ${MAKE_ENV} ${ELECTRON_REBUILD_ENV} yarn exec gulp before-dist
+	# dirty hack to avoid "EACCES: permission denied" error during electron-builder execution
+	@${RM} ${WRKDIR}/.bin/python3
+	@${CP} ${PYTHON_CMD} ${WRKDIR}/.bin/python3
+	@${CHMOD} u+w ${WRKDIR}/.bin/python3
+
+do-install:
+	${INSTALL_SCRIPT} ${WRKDIR}/${PORTNAME}${PKGNAMESUFFIX} ${STAGEDIR}${PREFIX}/bin
+	${INSTALL_DATA} ${FILESDIR}/${PORTNAME}${PKGNAMESUFFIX}.desktop ${STAGEDIR}${DESKTOPDIR}
+.for size in 16 24 32 48 72 96 128 144 256 512 1024
+	@${MKDIR} ${STAGEDIR}${PREFIX}/share/icons/hicolor/${size}x${size}/apps
+	${INSTALL_DATA} ${BUILD_WRKSRC}/build/icons/${size}x${size}.png \
+		${STAGEDIR}${PREFIX}/share/icons/hicolor/${size}x${size}/apps/${PORTNAME}.png
+.endfor
+	@${MKDIR} ${STAGEDIR}${DATADIR}
+	cd ${BUILD_WRKSRC}/dist/${ELECTRON_BUILDER_APP_OUT_DIR} && \
+		${COPYTREE_SHARE} resources ${STAGEDIR}${DATADIR}
+	${FIND} ${STAGEDIR}${DATADIR}/resources -type f -exec ${FILE} {} ';' | \
+		${GREP} 'ELF.*FreeBSD' | ${AWK} -F ': ' '{print $$1}' | ${XARGS} ${STRIP_CMD}
+
+do-install-DOCS-on:
+	@${MKDIR} ${STAGEDIR}${DOCSDIR}
+	${INSTALL_MAN} ${PORTDOCS:S|^|${WRKSRC}/|} ${STAGEDIR}${DOCSDIR}
+
+do-test:
+	cd ${TEST_WRKSRC} && ${SETENV} ${TEST_ENV} yarn run test
+
+#
+# targets for port maintainer(s)
+#
+cargo-crates-from-multiple-lockfiles: extract
+	@for lf in ${CARGO_CARGOLOCKS}; do \
+		${_CARGO_AWK} ${SCRIPTSDIR}/cargo-crates.awk $${lf}; \
+	done | \
+	${SED} -E 's/^CARGO_CRATES=\t+/\t\t/; s/ \\$$//' | \
+	${SORT} | \
+	uniq | \
+	${SED} -e '1s/^\t\t/CARGO_CRATES=\t/; s/$$/ \\/' | \
+	${SED} -e '$$s/ \\//'
+
+.include <bsd.port.mk>
diff --git a/deskutils/joplin-desktop/Makefile.crates b/deskutils/joplin-desktop/Makefile.crates
new file mode 100644
index 000000000000..9a4928d60cb3
--- /dev/null
+++ b/deskutils/joplin-desktop/Makefile.crates
@@ -0,0 +1,367 @@
+CARGO_CRATES=	Inflector-0.11.4 \
+		addr2line-0.24.2 \
+		adler2-2.0.0 \
+		aes-0.8.4 \
+		ahash-0.8.6 \
+		aho-corasick-1.1.2 \
+		aho-corasick-1.1.3 \
+		android-tzdata-0.1.1 \
+		android_system_properties-0.1.5 \
+		anstream-0.6.17 \
+		anstyle-1.0.9 \
+		anstyle-parse-0.2.6 \
+		anstyle-query-1.1.2 \
+		anstyle-wincon-3.0.6 \
+		anyhow-1.0.75 \
+		anyhow-1.0.91 \
+		arbitrary-1.3.2 \
+		arrayvec-0.7.4 \
+		assert_cmd-2.0.16 \
+		ast_node-0.9.6 \
+		autocfg-1.1.0 \
+		autocfg-1.4.0 \
+		backtrace-0.3.74 \
+		base64-0.21.5 \
+		base64-0.22.1 \
+		better_scoped_tls-0.1.1 \
+		binary-install-0.4.1 \
+		bitflags-1.3.2 \
+		bitflags-2.4.1 \
+		bitflags-2.6.0 \
+		block-buffer-0.10.4 \
+		bstr-1.10.0 \
+		bumpalo-3.14.0 \
+		bumpalo-3.16.0 \
+		byteorder-1.5.0 \
+		bzip2-0.4.4 \
+		bzip2-sys-0.1.11+1.0.8 \
+		camino-1.1.9 \
+		cargo-platform-0.1.8 \
+		cargo_metadata-0.15.4 \
+		cc-1.0.83 \
+		cc-1.1.31 \
+		cfg-if-1.0.0 \
+		chrono-0.4.38 \
+		cipher-0.4.4 \
+		clap-4.5.20 \
+		clap_builder-4.5.20 \
+		clap_derive-4.5.18 \
+		clap_lex-0.7.2 \
+		colorchoice-1.0.3 \
+		console-0.15.8 \
+		constant_time_eq-0.3.1 \
+		convert_case-0.6.0 \
+		core-foundation-sys-0.8.7 \
+		cpufeatures-0.2.14 \
+		crc-3.2.1 \
+		crc-catalog-2.4.0 \
+		crc32fast-1.4.2 \
+		crossbeam-utils-0.8.20 \
+		crypto-common-0.1.6 \
+		ctor-0.2.6 \
+		cty-0.2.2 \
+		dashmap-5.5.3 \
+		data-encoding-2.5.0 \
+		debugid-0.8.0 \
+		deflate64-0.1.9 \
+		deranged-0.3.11 \
+		derive_arbitrary-1.3.2 \
+		dialoguer-0.10.4 \
+		difflib-0.4.0 \
+		digest-0.10.7 \
+		dirs-next-2.0.0 \
+		dirs-sys-next-0.1.2 \
+		displaydoc-0.2.5 \
+		doc-comment-0.3.3 \
+		either-1.13.0 \
+		either-1.9.0 \
+		encode_unicode-0.3.6 \
+		env_logger-0.10.2 \
+		equivalent-1.0.1 \
+		errno-0.3.9 \
+		fastrand-2.1.1 \
+		filetime-0.2.25 \
+		fixedbitset-0.4.2 \
+		flate2-1.0.34 \
+		float-cmp-0.9.0 \
+		form_urlencoded-1.2.1 \
+		from_variant-0.1.7 \
+		fs4-0.6.6 \
+		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-sink-0.3.31 \
+		futures-task-0.3.31 \
+		futures-util-0.3.31 \
+		generic-array-0.14.7 \
+		getrandom-0.2.11 \
+		getrandom-0.2.15 \
+		gimli-0.31.1 \
+		glob-0.3.1 \
+		hashbrown-0.14.3 \
+		hashbrown-0.14.5 \
+		hashbrown-0.15.0 \
+		heck-0.5.0 \
+		hermit-abi-0.3.3 \
+		hex-0.4.3 \
+		hmac-0.12.1 \
+		home-0.5.9 \
+		hstr-0.2.6 \
+		human-panic-1.2.3 \
+		iana-time-zone-0.1.61 \
+		iana-time-zone-haiku-0.1.2 \
+		idna-0.5.0 \
+		if_chain-1.0.2 \
+		indexmap-2.1.0 \
+		indexmap-2.6.0 \
+		inout-0.1.3 \
+		is-macro-0.3.3 \
+		is_executable-0.1.2 \
+		is_terminal_polyfill-1.70.1 \
+		itoa-1.0.10 \
+		itoa-1.0.11 \
+		jobserver-0.1.32 \
+		js-sys-0.3.66 \
+		js-sys-0.3.72 \
+		lazy_static-1.4.0 \
+		lazy_static-1.5.0 \
+		libc-0.2.151 \
+		libc-0.2.161 \
+		libloading-0.8.1 \
+		libredox-0.1.3 \
+		linux-raw-sys-0.4.14 \
+		lock_api-0.4.11 \
+		lock_api-0.4.12 \
+		lockfree-object-pool-0.1.6 \
+		log-0.4.20 \
+		log-0.4.22 \
+		lzma-rs-0.3.0 \
+		memchr-2.6.4 \
+		memchr-2.7.4 \
+		mimalloc-rust-0.2.1 \
+		mimalloc-rust-sys-1.7.9-source \
+		miniz_oxide-0.8.0 \
+		napi-2.14.1 \
+		napi-build-2.1.0 \
+		napi-derive-2.14.4 \
+		napi-derive-backend-1.0.57 \
+		napi-sys-2.3.0 \
+		new_debug_unreachable-1.0.4 \
+		normalize-line-endings-0.3.0 \
+		num-bigint-0.4.4 \
+		num-conv-0.1.0 \
+		num-integer-0.1.45 \
+		num-traits-0.2.17 \
+		num-traits-0.2.19 \
+		num_cpus-1.16.0 \
+		object-0.36.5 \
+		once_cell-1.19.0 \
+		once_cell-1.20.2 \
+		os_info-3.8.2 \
+		parking_lot-0.12.1 \
+		parking_lot-0.12.3 \
+		parking_lot_core-0.9.10 \
+		parking_lot_core-0.9.9 \
+		path-clean-1.0.1 \
+		pathdiff-0.2.1 \
+		pbkdf2-0.12.2 \
+		percent-encoding-2.3.1 \
+		petgraph-0.6.4 \
+		phf-0.11.2 \
+		phf_generator-0.11.2 \
+		phf_macros-0.11.2 \
+		phf_shared-0.11.2 \
+		pin-project-lite-0.2.13 \
+		pin-project-lite-0.2.15 \
+		pin-utils-0.1.0 \
+		pkg-config-0.3.31 \
+		pmutil-0.6.1 \
+		powerfmt-0.2.0 \
+		ppv-lite86-0.2.20 \
+		predicates-3.1.2 \
+		predicates-core-1.0.8 \
+		predicates-tree-1.0.11 \
+		proc-macro2-1.0.70 \
+		proc-macro2-1.0.89 \
+		psm-0.1.21 \
+		quote-1.0.33 \
+		quote-1.0.37 \
+		radix_fmt-1.0.0 \
+		rand-0.8.5 \
+		rand_chacha-0.3.1 \
+		rand_core-0.6.4 \
+		redox_syscall-0.4.1 \
+		redox_syscall-0.5.7 \
+		redox_users-0.4.6 \
+		regex-1.10.2 \
+		regex-1.11.1 \
+		regex-automata-0.4.3 \
+		regex-automata-0.4.8 \
+		regex-syntax-0.8.2 \
+		regex-syntax-0.8.5 \
+		ring-0.17.8 \
+		rustc-demangle-0.1.24 \
+		rustc-hash-1.1.0 \
+		rustc_version-0.2.3 \
+		rustix-0.38.38 \
+		rustls-0.23.16 \
+		rustls-pki-types-1.10.0 \
+		rustls-webpki-0.102.8 \
+		ryu-1.0.16 \
+		ryu-1.0.18 \
+		ryu-js-1.0.0 \
+		same-file-1.0.6 \
+		scoped-tls-1.0.1 \
+		scopeguard-1.2.0 \
+		semver-0.9.0 \
+		semver-1.0.20 \
+		semver-1.0.23 \
+		semver-parser-0.7.0 \
+		serde-1.0.193 \
+		serde-1.0.214 \
+		serde_derive-1.0.193 \
+		serde_derive-1.0.214 \
+		serde_ignored-0.1.10 \
+		serde_json-1.0.108 \
+		serde_json-1.0.132 \
+		serde_spanned-0.6.8 \
+		serial_test-2.0.0 \
+		serial_test_derive-2.0.0 \
+		sha1-0.10.6 \
+		shell-words-1.1.0 \
+		shlex-1.3.0 \
+		simd-adler32-0.3.7 \
+		siphasher-0.3.11 \
+		slab-0.4.9 \
+		smallvec-1.11.2 \
+		smallvec-1.13.2 \
+		smartstring-1.0.1 \
+		socks-0.3.4 \
+		sourcemap-6.4.1 \
+		spin-0.9.8 \
+		stacker-0.1.15 \
+		static_assertions-1.1.0 \
+		string_enum-0.4.2 \
+		strsim-0.10.0 \
+		strsim-0.11.1 \
+		subtle-2.6.1 \
+		swc_atoms-0.6.5 \
+		swc_cached-0.3.18 \
+		swc_common-0.33.12 \
+		swc_compiler_base-0.4.0 \
+		swc_config-0.1.9 \
+		swc_config_macro-0.1.3 \
+		swc_ecma_ast-0.110.15 \
+		swc_ecma_codegen-0.146.44 \
+		swc_ecma_codegen_macros-0.7.4 \
+		swc_ecma_minifier-0.190.0 \
+		swc_ecma_parser-0.141.33 \
+		swc_ecma_transforms_base-0.135.0 \
+		swc_ecma_transforms_macros-0.5.4 \
+		swc_ecma_transforms_optimization-0.196.0 \
+		swc_ecma_usage_analyzer-0.21.0 \
+		swc_ecma_utils-0.125.0 \
+		swc_ecma_visit-0.96.15 \
+		swc_eq_ignore_macros-0.1.3 \
+		swc_fast_graph-0.21.13 \
+		swc_macros_common-0.3.9 \
+		swc_timer-0.21.14 \
+		swc_visit-0.5.8 \
+		swc_visit_macros-0.5.9 \
+		syn-2.0.41 \
+		syn-2.0.85 \
+		tar-0.4.42 \
+		tempfile-3.13.0 \
+		termtree-0.4.1 \
+		thiserror-1.0.65 \
+		thiserror-impl-1.0.65 \
+		time-0.3.36 \
+		time-core-0.1.2 \
+		tinyvec-1.6.0 \
+		tinyvec-1.8.0 \
+		tinyvec_macros-0.1.1 \
+		toml-0.7.8 \
+		toml-0.8.19 \
+		toml_datetime-0.6.8 \
+		toml_edit-0.19.15 \
+		toml_edit-0.22.22 \
+		tracing-0.1.40 \
+		tracing-attributes-0.1.27 \
+		tracing-core-0.1.32 \
+		typed-arena-2.0.2 \
+		typenum-1.17.0 \
+		unicode-bidi-0.3.14 \
+		unicode-bidi-0.3.17 \
+		unicode-id-0.3.4 \
+		unicode-ident-1.0.12 \
+		unicode-ident-1.0.13 \
+		unicode-normalization-0.1.22 \
+		unicode-normalization-0.1.24 \
+		unicode-segmentation-1.10.1 \
+		unicode-width-0.1.11 \
+		unicode-width-0.1.14 \
+		untrusted-0.9.0 \
+		ureq-2.10.1 \
+		url-2.5.0 \
+		url-2.5.2 \
+		utf8parse-0.2.2 \
+		uuid-1.11.0 \
+		uuid-1.6.1 \
+		version_check-0.9.4 \
+		version_check-0.9.5 \
+		wait-timeout-0.2.0 \
+		walkdir-2.5.0 \
+		wasi-0.11.0+wasi-snapshot-preview1 \
+		wasm-bindgen-0.2.89 \
+		wasm-bindgen-0.2.95 \
+		wasm-bindgen-backend-0.2.89 \
+		wasm-bindgen-backend-0.2.95 \
+		wasm-bindgen-macro-0.2.89 \
+		wasm-bindgen-macro-0.2.95 \
+		wasm-bindgen-macro-support-0.2.89 \
+		wasm-bindgen-macro-support-0.2.95 \
+		wasm-bindgen-shared-0.2.89 \
+		wasm-bindgen-shared-0.2.95 \
+		webpki-roots-0.26.6 \
+		which-4.4.2 \
+		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.52.0 \
+		windows-sys-0.48.0 \
+		windows-sys-0.52.0 \
+		windows-sys-0.59.0 \
+		windows-targets-0.48.5 \
+		windows-targets-0.52.6 \
+		windows_aarch64_gnullvm-0.48.5 \
+		windows_aarch64_gnullvm-0.52.6 \
+		windows_aarch64_msvc-0.48.5 \
+		windows_aarch64_msvc-0.52.6 \
+		windows_i686_gnu-0.48.5 \
+		windows_i686_gnu-0.52.6 \
+		windows_i686_gnullvm-0.52.6 \
+		windows_i686_msvc-0.48.5 \
+		windows_i686_msvc-0.52.6 \
+		windows_x86_64_gnu-0.48.5 \
+		windows_x86_64_gnu-0.52.6 \
+		windows_x86_64_gnullvm-0.48.5 \
+		windows_x86_64_gnullvm-0.52.6 \
+		windows_x86_64_msvc-0.48.5 \
+		windows_x86_64_msvc-0.52.6 \
+		winnow-0.5.40 \
+		xattr-1.3.1 \
+		xxhash-rust-0.8.7 \
+		zerocopy-0.7.31 \
+		zerocopy-0.7.35 \
+		zerocopy-derive-0.7.31 \
+		zerocopy-derive-0.7.35 \
+		zeroize-1.8.1 \
+		zeroize_derive-1.4.2 \
+		zip-2.2.0 \
+		zopfli-0.8.1 \
+		zstd-0.13.2 \
+		zstd-safe-7.2.1 \
+		zstd-sys-2.0.13+zstd.1.5.6
diff --git a/deskutils/joplin-desktop/distinfo b/deskutils/joplin-desktop/distinfo
new file mode 100644
index 000000000000..44cae5e271d5
--- /dev/null
+++ b/deskutils/joplin-desktop/distinfo
@@ -0,0 +1,751 @@
+TIMESTAMP = 1768828688
+SHA256 (joplin-desktop-3.5.12-default-plugins-node-modules.tar.gz) = 063585740fe4e5e75c2ef911c29d5979be8c4c78bdcc668ec647e9ae3f1e0d0f
+SIZE (joplin-desktop-3.5.12-default-plugins-node-modules.tar.gz) = 76625897
+SHA256 (joplin-desktop-3.5.12-app-clipper-node-modules.tar.gz) = d15f189048d5233189e683abb8d90eb348b448532d5a508466abd1b48f420512
+SIZE (joplin-desktop-3.5.12-app-clipper-node-modules.tar.gz) = 10193568
+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.0.crate) = 512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627
+SIZE (rust/crates/adler2-2.0.0.crate) = 13529
+SHA256 (rust/crates/aes-0.8.4.crate) = b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0
+SIZE (rust/crates/aes-0.8.4.crate) = 124812
+SHA256 (rust/crates/ahash-0.8.6.crate) = 91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a
+SIZE (rust/crates/ahash-0.8.6.crate) = 42780
+SHA256 (rust/crates/aho-corasick-1.1.2.crate) = b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0
+SIZE (rust/crates/aho-corasick-1.1.2.crate) = 183136
+SHA256 (rust/crates/aho-corasick-1.1.3.crate) = 8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916
+SIZE (rust/crates/aho-corasick-1.1.3.crate) = 183311
+SHA256 (rust/crates/android-tzdata-0.1.1.crate) = e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0
+SIZE (rust/crates/android-tzdata-0.1.1.crate) = 7674
+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/anstream-0.6.17.crate) = 23a1e53f0f5d86382dafe1cf314783b2044280f406e7e1506368220ad11b1338
+SIZE (rust/crates/anstream-0.6.17.crate) = 29445
+SHA256 (rust/crates/anstyle-1.0.9.crate) = 8365de52b16c035ff4fcafe0092ba9390540e3e352870ac09933bebcaa2c8c56
+SIZE (rust/crates/anstyle-1.0.9.crate) = 15770
+SHA256 (rust/crates/anstyle-parse-0.2.6.crate) = 3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9
+SIZE (rust/crates/anstyle-parse-0.2.6.crate) = 22343
+SHA256 (rust/crates/anstyle-query-1.1.2.crate) = 79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c
+SIZE (rust/crates/anstyle-query-1.1.2.crate) = 9969
+SHA256 (rust/crates/anstyle-wincon-3.0.6.crate) = 2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125
+SIZE (rust/crates/anstyle-wincon-3.0.6.crate) = 12271
+SHA256 (rust/crates/anyhow-1.0.75.crate) = a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6
+SIZE (rust/crates/anyhow-1.0.75.crate) = 43901
+SHA256 (rust/crates/anyhow-1.0.91.crate) = c042108f3ed77fd83760a5fd79b53be043192bb3b9dba91d8c574c0ada7850c8
+SIZE (rust/crates/anyhow-1.0.91.crate) = 47348
+SHA256 (rust/crates/arbitrary-1.3.2.crate) = 7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110
+SIZE (rust/crates/arbitrary-1.3.2.crate) = 32037
+SHA256 (rust/crates/arrayvec-0.7.4.crate) = 96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711
+SIZE (rust/crates/arrayvec-0.7.4.crate) = 29856
+SHA256 (rust/crates/assert_cmd-2.0.16.crate) = dc1835b7f27878de8525dc71410b5a31cdcc5f230aed5ba5df968e09c201b23d
+SIZE (rust/crates/assert_cmd-2.0.16.crate) = 26554
+SHA256 (rust/crates/ast_node-0.9.6.crate) = c3e3e06ec6ac7d893a0db7127d91063ad7d9da8988f8a1a256f03729e6eec026
+SIZE (rust/crates/ast_node-0.9.6.crate) = 7991
+SHA256 (rust/crates/autocfg-1.1.0.crate) = d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa
+SIZE (rust/crates/autocfg-1.1.0.crate) = 13272
+SHA256 (rust/crates/autocfg-1.4.0.crate) = ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26
+SIZE (rust/crates/autocfg-1.4.0.crate) = 17712
+SHA256 (rust/crates/backtrace-0.3.74.crate) = 8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a
+SIZE (rust/crates/backtrace-0.3.74.crate) = 88516
+SHA256 (rust/crates/base64-0.21.5.crate) = 35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9
+SIZE (rust/crates/base64-0.21.5.crate) = 77134
+SHA256 (rust/crates/base64-0.22.1.crate) = 72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6
+SIZE (rust/crates/base64-0.22.1.crate) = 81597
+SHA256 (rust/crates/better_scoped_tls-0.1.1.crate) = 794edcc9b3fb07bb4aecaa11f093fd45663b4feadb782d68303a2268bc2701de
+SIZE (rust/crates/better_scoped_tls-0.1.1.crate) = 1874
+SHA256 (rust/crates/binary-install-0.4.1.crate) = 5252e41a4ed7657f79827123f232443077984ec55c540adf48e8fe67b6ec0763
+SIZE (rust/crates/binary-install-0.4.1.crate) = 16525
+SHA256 (rust/crates/bitflags-1.3.2.crate) = bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a
+SIZE (rust/crates/bitflags-1.3.2.crate) = 23021
+SHA256 (rust/crates/bitflags-2.4.1.crate) = 327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07
+SIZE (rust/crates/bitflags-2.4.1.crate) = 37043
+SHA256 (rust/crates/bitflags-2.6.0.crate) = b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de
+SIZE (rust/crates/bitflags-2.6.0.crate) = 45357
+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.10.0.crate) = 40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c
+SIZE (rust/crates/bstr-1.10.0.crate) = 380426
+SHA256 (rust/crates/bumpalo-3.14.0.crate) = 7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec
+SIZE (rust/crates/bumpalo-3.14.0.crate) = 82400
+SHA256 (rust/crates/bumpalo-3.16.0.crate) = 79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c
+SIZE (rust/crates/bumpalo-3.16.0.crate) = 85677
+SHA256 (rust/crates/byteorder-1.5.0.crate) = 1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b
+SIZE (rust/crates/byteorder-1.5.0.crate) = 23288
+SHA256 (rust/crates/bzip2-0.4.4.crate) = bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8
+SIZE (rust/crates/bzip2-0.4.4.crate) = 34197
+SHA256 (rust/crates/bzip2-sys-0.1.11+1.0.8.crate) = 736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc
+SIZE (rust/crates/bzip2-sys-0.1.11+1.0.8.crate) = 633444
+SHA256 (rust/crates/camino-1.1.9.crate) = 8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3
+SIZE (rust/crates/camino-1.1.9.crate) = 37552
+SHA256 (rust/crates/cargo-platform-0.1.8.crate) = 24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc
+SIZE (rust/crates/cargo-platform-0.1.8.crate) = 11813
+SHA256 (rust/crates/cargo_metadata-0.15.4.crate) = eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a
+SIZE (rust/crates/cargo_metadata-0.15.4.crate) = 19993
+SHA256 (rust/crates/cc-1.0.83.crate) = f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0
+SIZE (rust/crates/cc-1.0.83.crate) = 68343
+SHA256 (rust/crates/cc-1.1.31.crate) = c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f
+SIZE (rust/crates/cc-1.1.31.crate) = 84637
+SHA256 (rust/crates/cfg-if-1.0.0.crate) = baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd
+SIZE (rust/crates/cfg-if-1.0.0.crate) = 7934
+SHA256 (rust/crates/chrono-0.4.38.crate) = a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401
+SIZE (rust/crates/chrono-0.4.38.crate) = 220559
+SHA256 (rust/crates/cipher-0.4.4.crate) = 773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad
+SIZE (rust/crates/cipher-0.4.4.crate) = 19073
+SHA256 (rust/crates/clap-4.5.20.crate) = b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8
+SIZE (rust/crates/clap-4.5.20.crate) = 56376
+SHA256 (rust/crates/clap_builder-4.5.20.crate) = 19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54
+SIZE (rust/crates/clap_builder-4.5.20.crate) = 163812
+SHA256 (rust/crates/clap_derive-4.5.18.crate) = 4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab
+SIZE (rust/crates/clap_derive-4.5.18.crate) = 30131
+SHA256 (rust/crates/clap_lex-0.7.2.crate) = 1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97
+SIZE (rust/crates/clap_lex-0.7.2.crate) = 12805
+SHA256 (rust/crates/colorchoice-1.0.3.crate) = 5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990
+SIZE (rust/crates/colorchoice-1.0.3.crate) = 7923
+SHA256 (rust/crates/console-0.15.8.crate) = 0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb
+SIZE (rust/crates/console-0.15.8.crate) = 36364
+SHA256 (rust/crates/constant_time_eq-0.3.1.crate) = 7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6
+SIZE (rust/crates/constant_time_eq-0.3.1.crate) = 11561
+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-sys-0.8.7.crate) = 773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b
+SIZE (rust/crates/core-foundation-sys-0.8.7.crate) = 37712
+SHA256 (rust/crates/cpufeatures-0.2.14.crate) = 608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0
+SIZE (rust/crates/cpufeatures-0.2.14.crate) = 13165
+SHA256 (rust/crates/crc-3.2.1.crate) = 69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636
+SIZE (rust/crates/crc-3.2.1.crate) = 15070
+SHA256 (rust/crates/crc-catalog-2.4.0.crate) = 19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5
+SIZE (rust/crates/crc-catalog-2.4.0.crate) = 10155
+SHA256 (rust/crates/crc32fast-1.4.2.crate) = a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3
+SIZE (rust/crates/crc32fast-1.4.2.crate) = 38491
+SHA256 (rust/crates/crossbeam-utils-0.8.20.crate) = 22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80
+SIZE (rust/crates/crossbeam-utils-0.8.20.crate) = 42487
+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.2.6.crate) = 30d2b3721e861707777e3195b0158f950ae6dc4a27e4d02ff9f67e3eb3de199e
+SIZE (rust/crates/ctor-0.2.6.crate) = 11034
+SHA256 (rust/crates/cty-0.2.2.crate) = b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35
+SIZE (rust/crates/cty-0.2.2.crate) = 7230
+SHA256 (rust/crates/dashmap-5.5.3.crate) = 978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856
+SIZE (rust/crates/dashmap-5.5.3.crate) = 24061
+SHA256 (rust/crates/data-encoding-2.5.0.crate) = 7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5
+SIZE (rust/crates/data-encoding-2.5.0.crate) = 20632
+SHA256 (rust/crates/debugid-0.8.0.crate) = bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d
+SIZE (rust/crates/debugid-0.8.0.crate) = 12757
+SHA256 (rust/crates/deflate64-0.1.9.crate) = da692b8d1080ea3045efaab14434d40468c3d8657e42abddfffca87b428f4c1b
+SIZE (rust/crates/deflate64-0.1.9.crate) = 15104
+SHA256 (rust/crates/deranged-0.3.11.crate) = b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4
+SIZE (rust/crates/deranged-0.3.11.crate) = 18043
+SHA256 (rust/crates/derive_arbitrary-1.3.2.crate) = 67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611
+SIZE (rust/crates/derive_arbitrary-1.3.2.crate) = 10614
+SHA256 (rust/crates/dialoguer-0.10.4.crate) = 59c6f2989294b9a498d3ad5491a79c6deb604617378e1cdc4bfc1c1361fe2f87
+SIZE (rust/crates/dialoguer-0.10.4.crate) = 29928
+SHA256 (rust/crates/difflib-0.4.0.crate) = 6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8
+SIZE (rust/crates/difflib-0.4.0.crate) = 7638
+SHA256 (rust/crates/digest-0.10.7.crate) = 9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292
+SIZE (rust/crates/digest-0.10.7.crate) = 19557
+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-next-0.1.2.crate) = 4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d
+SIZE (rust/crates/dirs-sys-next-0.1.2.crate) = 10681
+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/either-1.13.0.crate) = 60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0
+SIZE (rust/crates/either-1.13.0.crate) = 19169
+SHA256 (rust/crates/either-1.9.0.crate) = a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07
+SIZE (rust/crates/either-1.9.0.crate) = 16660
+SHA256 (rust/crates/encode_unicode-0.3.6.crate) = a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f
+SIZE (rust/crates/encode_unicode-0.3.6.crate) = 45741
+SHA256 (rust/crates/env_logger-0.10.2.crate) = 4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580
+SIZE (rust/crates/env_logger-0.10.2.crate) = 36402
+SHA256 (rust/crates/equivalent-1.0.1.crate) = 5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5
+SIZE (rust/crates/equivalent-1.0.1.crate) = 6615
+SHA256 (rust/crates/errno-0.3.9.crate) = 534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba
+SIZE (rust/crates/errno-0.3.9.crate) = 10690
+SHA256 (rust/crates/fastrand-2.1.1.crate) = e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6
+SIZE (rust/crates/fastrand-2.1.1.crate) = 14983
+SHA256 (rust/crates/filetime-0.2.25.crate) = 35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586
+SIZE (rust/crates/filetime-0.2.25.crate) = 14940
+SHA256 (rust/crates/fixedbitset-0.4.2.crate) = 0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80
+SIZE (rust/crates/fixedbitset-0.4.2.crate) = 15954
+SHA256 (rust/crates/flate2-1.0.34.crate) = a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0
+SIZE (rust/crates/flate2-1.0.34.crate) = 109174
+SHA256 (rust/crates/float-cmp-0.9.0.crate) = 98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4
+SIZE (rust/crates/float-cmp-0.9.0.crate) = 10102
+SHA256 (rust/crates/form_urlencoded-1.2.1.crate) = e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456
+SIZE (rust/crates/form_urlencoded-1.2.1.crate) = 8969
+SHA256 (rust/crates/from_variant-0.1.7.crate) = 3a0b11eeb173ce52f84ebd943d42e58813a2ebb78a6a3ff0a243b71c5199cd7b
+SIZE (rust/crates/from_variant-0.1.7.crate) = 1716
+SHA256 (rust/crates/fs4-0.6.6.crate) = 2eeb4ed9e12f43b7fa0baae3f9cdda28352770132ef2e09a23760c29cae8bd47
+SIZE (rust/crates/fs4-0.6.6.crate) = 17750
+SHA256 (rust/crates/futures-0.3.31.crate) = 65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876
+SIZE (rust/crates/futures-0.3.31.crate) = 54953
+SHA256 (rust/crates/futures-channel-0.3.31.crate) = 2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10
+SIZE (rust/crates/futures-channel-0.3.31.crate) = 31971
+SHA256 (rust/crates/futures-core-0.3.31.crate) = 05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e
+SIZE (rust/crates/futures-core-0.3.31.crate) = 14318
+SHA256 (rust/crates/futures-executor-0.3.31.crate) = 1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f
+SIZE (rust/crates/futures-executor-0.3.31.crate) = 17965
+SHA256 (rust/crates/futures-io-0.3.31.crate) = 9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6
+SIZE (rust/crates/futures-io-0.3.31.crate) = 9047
+SHA256 (rust/crates/futures-sink-0.3.31.crate) = e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7
+SIZE (rust/crates/futures-sink-0.3.31.crate) = 7958
+SHA256 (rust/crates/futures-task-0.3.31.crate) = f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988
+SIZE (rust/crates/futures-task-0.3.31.crate) = 11217
+SHA256 (rust/crates/futures-util-0.3.31.crate) = 9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81
+SIZE (rust/crates/futures-util-0.3.31.crate) = 162124
+SHA256 (rust/crates/generic-array-0.14.7.crate) = 85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a
+SIZE (rust/crates/generic-array-0.14.7.crate) = 15950
+SHA256 (rust/crates/getrandom-0.2.11.crate) = fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f
+SIZE (rust/crates/getrandom-0.2.11.crate) = 35391
+SHA256 (rust/crates/getrandom-0.2.15.crate) = c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7
+SIZE (rust/crates/getrandom-0.2.15.crate) = 37163
+SHA256 (rust/crates/gimli-0.31.1.crate) = 07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f
+SIZE (rust/crates/gimli-0.31.1.crate) = 279515
+SHA256 (rust/crates/glob-0.3.1.crate) = d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b
+SIZE (rust/crates/glob-0.3.1.crate) = 18880
+SHA256 (rust/crates/hashbrown-0.14.3.crate) = 290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604
+SIZE (rust/crates/hashbrown-0.14.3.crate) = 141425
+SHA256 (rust/crates/hashbrown-0.14.5.crate) = e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1
+SIZE (rust/crates/hashbrown-0.14.5.crate) = 141498
+SHA256 (rust/crates/hashbrown-0.15.0.crate) = 1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb
+SIZE (rust/crates/hashbrown-0.15.0.crate) = 136460
+SHA256 (rust/crates/heck-0.5.0.crate) = 2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea
+SIZE (rust/crates/heck-0.5.0.crate) = 11517
+SHA256 (rust/crates/hermit-abi-0.3.3.crate) = d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7
+SIZE (rust/crates/hermit-abi-0.3.3.crate) = 14253
+SHA256 (rust/crates/hex-0.4.3.crate) = 7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70
+SIZE (rust/crates/hex-0.4.3.crate) = 13299
+SHA256 (rust/crates/hmac-0.12.1.crate) = 6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e
+SIZE (rust/crates/hmac-0.12.1.crate) = 42657
+SHA256 (rust/crates/home-0.5.9.crate) = e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5
+SIZE (rust/crates/home-0.5.9.crate) = 8760
+SHA256 (rust/crates/hstr-0.2.6.crate) = de90d3db62411eb62eddabe402d706ac4970f7ac8d088c05f11069cad9be9857
+SIZE (rust/crates/hstr-0.2.6.crate) = 17433
+SHA256 (rust/crates/human-panic-1.2.3.crate) = c4f016c89920bbb30951a8405ecacbb4540db5524313b9445736e7e1855cf370
+SIZE (rust/crates/human-panic-1.2.3.crate) = 11443
+SHA256 (rust/crates/iana-time-zone-0.1.61.crate) = 235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220
+SIZE (rust/crates/iana-time-zone-0.1.61.crate) = 27685
+SHA256 (rust/crates/iana-time-zone-haiku-0.1.2.crate) = f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f
+SIZE (rust/crates/iana-time-zone-haiku-0.1.2.crate) = 7185
+SHA256 (rust/crates/idna-0.5.0.crate) = 634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6
+SIZE (rust/crates/idna-0.5.0.crate) = 271940
+SHA256 (rust/crates/if_chain-1.0.2.crate) = cb56e1aa765b4b4f3aadfab769793b7087bb03a4ea4920644a6d238e2df5b9ed
+SIZE (rust/crates/if_chain-1.0.2.crate) = 8062
+SHA256 (rust/crates/indexmap-2.1.0.crate) = d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f
+SIZE (rust/crates/indexmap-2.1.0.crate) = 68224
+SHA256 (rust/crates/indexmap-2.6.0.crate) = 707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da
+SIZE (rust/crates/indexmap-2.6.0.crate) = 85204
+SHA256 (rust/crates/inout-0.1.3.crate) = a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5
+SIZE (rust/crates/inout-0.1.3.crate) = 10743
+SHA256 (rust/crates/is-macro-0.3.3.crate) = 97707cce574453d050d7c53194bdd88f6e5e53d7c94d294f63f2511308af9867
+SIZE (rust/crates/is-macro-0.3.3.crate) = 5722
+SHA256 (rust/crates/is_executable-0.1.2.crate) = 302d553b8abc8187beb7d663e34c065ac4570b273bc9511a50e940e99409c577
+SIZE (rust/crates/is_executable-0.1.2.crate) = 9131
+SHA256 (rust/crates/is_terminal_polyfill-1.70.1.crate) = 7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf
+SIZE (rust/crates/is_terminal_polyfill-1.70.1.crate) = 7492
+SHA256 (rust/crates/itoa-1.0.10.crate) = b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c
+SIZE (rust/crates/itoa-1.0.10.crate) = 10534
+SHA256 (rust/crates/itoa-1.0.11.crate) = 49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b
+SIZE (rust/crates/itoa-1.0.11.crate) = 10563
+SHA256 (rust/crates/jobserver-0.1.32.crate) = 48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0
+SIZE (rust/crates/jobserver-0.1.32.crate) = 27549
+SHA256 (rust/crates/js-sys-0.3.66.crate) = cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca
+SIZE (rust/crates/js-sys-0.3.66.crate) = 80765
+SHA256 (rust/crates/js-sys-0.3.72.crate) = 6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9
+SIZE (rust/crates/js-sys-0.3.72.crate) = 54096
+SHA256 (rust/crates/lazy_static-1.4.0.crate) = e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646
+SIZE (rust/crates/lazy_static-1.4.0.crate) = 10443
+SHA256 (rust/crates/lazy_static-1.5.0.crate) = bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe
+SIZE (rust/crates/lazy_static-1.5.0.crate) = 14025
+SHA256 (rust/crates/libc-0.2.151.crate) = 302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4
+SIZE (rust/crates/libc-0.2.151.crate) = 736640
+SHA256 (rust/crates/libc-0.2.161.crate) = 8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1
+SIZE (rust/crates/libc-0.2.161.crate) = 765389
+SHA256 (rust/crates/libloading-0.8.1.crate) = c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161
+SIZE (rust/crates/libloading-0.8.1.crate) = 27893
+SHA256 (rust/crates/libredox-0.1.3.crate) = c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d
+SIZE (rust/crates/libredox-0.1.3.crate) = 6068
+SHA256 (rust/crates/linux-raw-sys-0.4.14.crate) = 78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89
+SIZE (rust/crates/linux-raw-sys-0.4.14.crate) = 1826665
+SHA256 (rust/crates/lock_api-0.4.11.crate) = 3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45
+SIZE (rust/crates/lock_api-0.4.11.crate) = 27487
+SHA256 (rust/crates/lock_api-0.4.12.crate) = 07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17
+SIZE (rust/crates/lock_api-0.4.12.crate) = 27591
+SHA256 (rust/crates/lockfree-object-pool-0.1.6.crate) = 9374ef4228402d4b7e403e5838cb880d9ee663314b0a900d5a6aabf0c213552e
+SIZE (rust/crates/lockfree-object-pool-0.1.6.crate) = 12309
+SHA256 (rust/crates/log-0.4.20.crate) = b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f
+SIZE (rust/crates/log-0.4.20.crate) = 38307
+SHA256 (rust/crates/log-0.4.22.crate) = a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24
+SIZE (rust/crates/log-0.4.22.crate) = 44027
+SHA256 (rust/crates/lzma-rs-0.3.0.crate) = 297e814c836ae64db86b36cf2a557ba54368d03f6afcd7d947c266692f71115e
+SIZE (rust/crates/lzma-rs-0.3.0.crate) = 29080
+SHA256 (rust/crates/memchr-2.6.4.crate) = f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167
+SIZE (rust/crates/memchr-2.6.4.crate) = 94439
+SHA256 (rust/crates/memchr-2.7.4.crate) = 78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3
+SIZE (rust/crates/memchr-2.7.4.crate) = 96670
+SHA256 (rust/crates/mimalloc-rust-0.2.1.crate) = 5eb726c8298efb4010b2c46d8050e4be36cf807b9d9e98cb112f830914fc9bbe
+SIZE (rust/crates/mimalloc-rust-0.2.1.crate) = 5327
+SHA256 (rust/crates/mimalloc-rust-sys-1.7.9-source.crate) = 6413e13241a9809f291568133eca6694572cf528c1a6175502d090adce5dd5db
+SIZE (rust/crates/mimalloc-rust-sys-1.7.9-source.crate) = 134952
+SHA256 (rust/crates/miniz_oxide-0.8.0.crate) = e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1
+SIZE (rust/crates/miniz_oxide-0.8.0.crate) = 56343
+SHA256 (rust/crates/napi-2.14.1.crate) = 1133249c46e92da921bafc8aba4912bf84d6c475f7625183772ed2d0844dc3a7
*** 93781 LINES SKIPPED ***


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69996c44.45eb5.7cb5f9bb>