summaryrefslogtreecommitdiff
path: root/textproc
diff options
context:
space:
mode:
Diffstat (limited to 'textproc')
-rw-r--r--textproc/Makefile6
-rw-r--r--textproc/R-cran-commonmark/Makefile2
-rw-r--r--textproc/R-cran-commonmark/distinfo6
-rw-r--r--textproc/apache-solr/Makefile2
-rw-r--r--textproc/apache-solr/distinfo6
-rw-r--r--textproc/apache-xmlbeans/Makefile3
-rw-r--r--textproc/catdoc/Makefile2
-rw-r--r--textproc/consul-template/Makefile1
-rw-r--r--textproc/csvq/Makefile2
-rw-r--r--textproc/dict/Makefile3
-rw-r--r--textproc/dictem/Makefile5
-rw-r--r--textproc/dictfmt/Makefile3
-rw-r--r--textproc/fzf/Makefile3
-rw-r--r--textproc/fzf/distinfo10
-rw-r--r--textproc/gh-grep/Makefile2
-rw-r--r--textproc/git-chglog/Makefile2
-rw-r--r--textproc/go-md2man/Makefile2
-rw-r--r--textproc/go-transifex-client/Makefile2
-rw-r--r--textproc/go-yq/Makefile1
-rw-r--r--textproc/gojq/Makefile2
-rw-r--r--textproc/gron/Makefile2
-rw-r--r--textproc/harper/Makefile2
-rw-r--r--textproc/harper/Makefile.crates8
-rw-r--r--textproc/harper/distinfo22
-rw-r--r--textproc/highlight/Makefile2
-rw-r--r--textproc/htmltest/Makefile2
-rw-r--r--textproc/itstool/Makefile21
-rw-r--r--textproc/jid/Makefile2
-rw-r--r--textproc/kdiff3/Makefile2
-rw-r--r--textproc/kdiff3/distinfo6
-rw-r--r--textproc/kepubify/Makefile2
-rw-r--r--textproc/libucl/Makefile4
-rw-r--r--textproc/libxml2/Makefile2
-rw-r--r--textproc/libxml2/files/patch-libxml2-config.cmake.in10
-rw-r--r--textproc/libxslt/Makefile3
-rw-r--r--textproc/markdownfmt/Makefile2
-rw-r--r--textproc/md2roff/Makefile2
-rw-r--r--textproc/mdtt/Makefile20
-rw-r--r--textproc/mdtt/distinfo5
-rw-r--r--textproc/mdtt/pkg-descr10
-rw-r--r--textproc/miller/Makefile2
-rw-r--r--textproc/minify/Makefile2
-rw-r--r--textproc/minixmlto/Makefile3
-rw-r--r--textproc/nerdlog/Makefile1
-rw-r--r--textproc/opensearch-dashboards/Makefile2
-rw-r--r--textproc/opensearch-dashboards/distinfo6
-rw-r--r--textproc/opensearch/Makefile2
-rw-r--r--textproc/opensearch/distinfo6
-rw-r--r--textproc/otree/Makefile179
-rw-r--r--textproc/otree/distinfo319
-rw-r--r--textproc/otree/pkg-descr4
-rw-r--r--textproc/ov/Makefile2
-rw-r--r--textproc/p5-BibTeX-Parser/Makefile2
-rw-r--r--textproc/p5-BibTeX-Parser/distinfo6
-rw-r--r--textproc/p5-BibTeX-Parser/files/patch-lib_BibTeX_Parser_Author.pm11
-rw-r--r--textproc/p5-BibTeX-Parser/files/patch-lib_BibTeX_Parser_Entry.pm11
-rw-r--r--textproc/peco/Makefile2
-rw-r--r--textproc/pup/Makefile2
-rw-r--r--textproc/py-cyclonedx-python-lib/Makefile16
-rw-r--r--textproc/py-cyclonedx-python-lib/distinfo6
-rw-r--r--textproc/py-dict2xml/Makefile2
-rw-r--r--textproc/py-dict2xml/distinfo6
-rw-r--r--textproc/py-emeraldtree/Makefile2
-rw-r--r--textproc/py-gi-docgen/Makefile3
-rw-r--r--textproc/py-gi-docgen/distinfo6
-rw-r--r--textproc/py-jinjanator-plugins/Makefile24
-rw-r--r--textproc/py-jinjanator-plugins/distinfo3
-rw-r--r--textproc/py-jinjanator-plugins/pkg-descr3
-rw-r--r--textproc/py-jinjanator/Makefile27
-rw-r--r--textproc/py-jinjanator/distinfo3
-rw-r--r--textproc/py-jinjanator/files/patch-pyproject.toml11
-rw-r--r--textproc/py-jinjanator/pkg-descr3
-rw-r--r--textproc/py-license-expression/Makefile2
-rw-r--r--textproc/py-license-expression/distinfo6
-rw-r--r--textproc/py-petl/Makefile2
-rw-r--r--textproc/py-petl/distinfo6
-rw-r--r--textproc/rubygem-amatch/Makefile2
-rw-r--r--textproc/rubygem-amatch/distinfo6
-rw-r--r--textproc/rubygem-cucumber-gherkin/Makefile4
-rw-r--r--textproc/rubygem-cucumber-gherkin/distinfo6
-rw-r--r--textproc/rubygem-cucumber-gherkin30/Makefile3
-rw-r--r--textproc/rubygem-cucumber-html-formatter/Makefile4
-rw-r--r--textproc/rubygem-cucumber-html-formatter/distinfo6
-rw-r--r--textproc/saxon-he/Makefile26
-rw-r--r--textproc/saxon-he/distinfo6
-rw-r--r--textproc/saxon-he/files/saxon.sh.in12
-rw-r--r--textproc/sift/Makefile2
-rw-r--r--textproc/television/Makefile2
-rw-r--r--textproc/textnote/Makefile2
-rw-r--r--textproc/textql/Makefile2
-rw-r--r--textproc/tkdiff/Makefile4
-rw-r--r--textproc/tkdiff/distinfo6
-rw-r--r--textproc/tkdiff/pkg-descr2
-rw-r--r--textproc/trdsql/Makefile2
-rw-r--r--textproc/uni/Makefile2
-rw-r--r--textproc/up/Makefile2
-rw-r--r--textproc/vale/Makefile1
-rw-r--r--textproc/vgrep/Makefile2
-rw-r--r--textproc/xmlto/Makefile29
-rw-r--r--textproc/xxdiff-scripts/Makefile20
-rw-r--r--textproc/xxdiff-scripts/pkg-descr13
-rw-r--r--textproc/xxdiff/Makefile45
-rw-r--r--textproc/xxdiff/Makefile.master10
-rw-r--r--textproc/xxdiff/distinfo3
-rw-r--r--textproc/xxdiff/pkg-descr20
-rw-r--r--textproc/yamlfmt/Makefile1
106 files changed, 971 insertions, 161 deletions
diff --git a/textproc/Makefile b/textproc/Makefile
index cd5de1cc450d..b64174d1af74 100644
--- a/textproc/Makefile
+++ b/textproc/Makefile
@@ -473,6 +473,7 @@
SUBDIR += mdbook-linkcheck
SUBDIR += mdbook-mermaid
SUBDIR += mdq
+ SUBDIR += mdtt
SUBDIR += meilisearch
SUBDIR += meld
SUBDIR += metauml
@@ -532,6 +533,7 @@
SUBDIR += opensp
SUBDIR += openvanilla-framework
SUBDIR += or-aspell
+ SUBDIR += otree
SUBDIR += ov
SUBDIR += ox-gfm.el
SUBDIR += p5-AI-Categorizer
@@ -1420,6 +1422,8 @@
SUBDIR += py-jarowinkler
SUBDIR += py-jc
SUBDIR += py-jinja2-cli
+ SUBDIR += py-jinjanator
+ SUBDIR += py-jinjanator-plugins
SUBDIR += py-jiter
SUBDIR += py-jq
SUBDIR += py-json2html
@@ -2193,6 +2197,8 @@
SUBDIR += xstream
SUBDIR += xsv-rs
SUBDIR += xwindiff
+ SUBDIR += xxdiff
+ SUBDIR += xxdiff-scripts
SUBDIR += y2l
SUBDIR += yali
SUBDIR += yaml-mode.el
diff --git a/textproc/R-cran-commonmark/Makefile b/textproc/R-cran-commonmark/Makefile
index b7295f177e20..3fa94504f56e 100644
--- a/textproc/R-cran-commonmark/Makefile
+++ b/textproc/R-cran-commonmark/Makefile
@@ -1,5 +1,5 @@
PORTNAME= commonmark
-DISTVERSION= 1.9.5
+DISTVERSION= 2.0.0
CATEGORIES= textproc
DISTNAME= ${PORTNAME}_${DISTVERSION}
diff --git a/textproc/R-cran-commonmark/distinfo b/textproc/R-cran-commonmark/distinfo
index e73d20a7ab83..a6e8cfb6688f 100644
--- a/textproc/R-cran-commonmark/distinfo
+++ b/textproc/R-cran-commonmark/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1742391323
-SHA256 (commonmark_1.9.5.tar.gz) = fabf96f916e17f8209875ba5e89a91005b0cf7614a565982191cfebbdb7d4d65
-SIZE (commonmark_1.9.5.tar.gz) = 145876
+TIMESTAMP = 1752182138
+SHA256 (commonmark_2.0.0.tar.gz) = 7f47d7f9f4ff5d1e2a73a69f6e233d2ddbafae97944ddf664a6000aa94936904
+SIZE (commonmark_2.0.0.tar.gz) = 147234
diff --git a/textproc/apache-solr/Makefile b/textproc/apache-solr/Makefile
index bbec074736f6..f62cf0efb88a 100644
--- a/textproc/apache-solr/Makefile
+++ b/textproc/apache-solr/Makefile
@@ -1,5 +1,5 @@
PORTNAME= apache-solr
-PORTVERSION= 9.8.0
+PORTVERSION= 9.8.1
PORTEPOCH= 1
CATEGORIES= textproc java
MASTER_SITES= https://archive.apache.org/dist/solr/solr/${PORTVERSION}/
diff --git a/textproc/apache-solr/distinfo b/textproc/apache-solr/distinfo
index 9ed57663b3a3..55dca738cb97 100644
--- a/textproc/apache-solr/distinfo
+++ b/textproc/apache-solr/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1738905266
-SHA256 (solr-9.8.0.tgz) = 9948dcf798c196b834c4cbb420d1ea5995479431669d266c33d46548b67e69e1
-SIZE (solr-9.8.0.tgz) = 386095370
+TIMESTAMP = 1752211421
+SHA256 (solr-9.8.1.tgz) = a789110131bc8cb71b0233d528e4fa5ffa566bab05bc72f280a8cc9275bd9e3e
+SIZE (solr-9.8.1.tgz) = 386100122
diff --git a/textproc/apache-xmlbeans/Makefile b/textproc/apache-xmlbeans/Makefile
index 3db35cd1b265..1f89a0952ad0 100644
--- a/textproc/apache-xmlbeans/Makefile
+++ b/textproc/apache-xmlbeans/Makefile
@@ -1,5 +1,6 @@
PORTNAME= xmlbeans
DISTVERSION= 5.3.0 # Do not upgrade without checking compatibility with math/R-cran-XLConnect
+PORTREVISION= 1
CATEGORIES= textproc java
MASTER_SITES= https://archive.apache.org/dist/poi/xmlbeans/release/bin/
PKGNAMEPREFIX= apache-
@@ -32,7 +33,7 @@ PORTEXAMPLES= *
OPTIONS_DEFINE= DOCS EXAMPLES SAXON
OPTIONS_DEFAULT= SAXON
SAXON_DESC= Saxon XQuery processor for full XQuery and XPath support
-SAXON_RUN_DEPENDS= saxon-he=12.6:textproc/saxon-he
+SAXON_RUN_DEPENDS= saxon-he>=12:textproc/saxon-he
pre-configure:
${REINPLACE_CMD} -e 's|%%JAVAJARDIR%%|${JAVAJARDIR}|' \
diff --git a/textproc/catdoc/Makefile b/textproc/catdoc/Makefile
index 32bbb77c08a5..7f47cc0eff1a 100644
--- a/textproc/catdoc/Makefile
+++ b/textproc/catdoc/Makefile
@@ -5,7 +5,7 @@ CATEGORIES= textproc
MASTER_SITES= http://ftp.wagner.pp.ru/pub/catdoc/ \
https://mirror.amdmi3.ru/distfiles/
-MAINTAINER= amdmi3@FreeBSD.org
+MAINTAINER= ports@FreeBSD.org
COMMENT= MS Word/Excel converter to plain ASCII or TeX. TK viewer included
WWW= https://www.wagner.pp.ru/~vitus/software/catdoc/
diff --git a/textproc/consul-template/Makefile b/textproc/consul-template/Makefile
index fa35bbac4a15..08bddb4e071f 100644
--- a/textproc/consul-template/Makefile
+++ b/textproc/consul-template/Makefile
@@ -1,6 +1,7 @@
PORTNAME= consul-template
DISTVERSIONPREFIX= v
DISTVERSION= 0.41.0
+PORTREVISION= 1
CATEGORIES= textproc
MAINTAINER= bofh@FreeBSD.org
diff --git a/textproc/csvq/Makefile b/textproc/csvq/Makefile
index 614329b110b2..b7c336f784f8 100644
--- a/textproc/csvq/Makefile
+++ b/textproc/csvq/Makefile
@@ -1,7 +1,7 @@
PORTNAME= csvq
DISTVERSIONPREFIX= v
DISTVERSION= 1.18.1
-PORTREVISION= 14
+PORTREVISION= 15
CATEGORIES= textproc
MAINTAINER= lcook@FreeBSD.org
diff --git a/textproc/dict/Makefile b/textproc/dict/Makefile
index 5b3b59b2b437..17b4d6bb11ba 100644
--- a/textproc/dict/Makefile
+++ b/textproc/dict/Makefile
@@ -12,9 +12,6 @@ WWW= https://www.dict.org/ \
LICENSE= GPLv2
LICENSE_FILE= ${WRKSRC}/COPYING
-DEPRECATED= Depends on expiring devel/libmaa
-EXPIRATION_DATE=2025-09-30
-
LIB_DEPENDS= libmaa.so:devel/libmaa
USES= bison gmake libtool:build localbase
diff --git a/textproc/dictem/Makefile b/textproc/dictem/Makefile
index 0052c6bc35a3..52699ceabc6e 100644
--- a/textproc/dictem/Makefile
+++ b/textproc/dictem/Makefile
@@ -11,13 +11,12 @@ WWW= https://sourceforge.net/projects/dictem/
LICENSE= GPLv2
-DEPRECATED= Depends on expiring textproc/dict
-EXPIRATION_DATE=2025-09-30
-
RUN_DEPENDS= ${LOCALBASE}/bin/dict:textproc/dict
USES= emacs
+NO_ARCH= yes
+
SRC_EL= dictem.el dictem-lingvo-dsl.el dictem-elisp.el
.for f in ${SRC_EL}
diff --git a/textproc/dictfmt/Makefile b/textproc/dictfmt/Makefile
index b27f6da8650d..8e5ae6a1baf3 100644
--- a/textproc/dictfmt/Makefile
+++ b/textproc/dictfmt/Makefile
@@ -12,9 +12,6 @@ WWW= https://www.dict.org/ \
LICENSE= GPLv2
LICENSE_FILE= ${WRKSRC}/COPYING
-DEPRECATED= Depends on expiring devel/libmaa
-EXPIRATION_DATE=2025-09-30
-
LIB_DEPENDS= libmaa.so:devel/libmaa
USES= gmake libtool:build localbase
diff --git a/textproc/fzf/Makefile b/textproc/fzf/Makefile
index 6fd2152ad5ba..728167ad466d 100644
--- a/textproc/fzf/Makefile
+++ b/textproc/fzf/Makefile
@@ -1,6 +1,7 @@
PORTNAME= fzf
DISTVERSIONPREFIX= v
-DISTVERSION= 0.63.0
+DISTVERSION= 0.64.0
+PORTREVISION= 1
CATEGORIES= textproc
MASTER_SITES= https://raw.githubusercontent.com/${GH_ACCOUNT}/${GH_PROJECT}/${DISTVERSIONFULL}/:gomod
DISTFILES= go.mod:gomod
diff --git a/textproc/fzf/distinfo b/textproc/fzf/distinfo
index 3cc698c05587..832840e62489 100644
--- a/textproc/fzf/distinfo
+++ b/textproc/fzf/distinfo
@@ -1,5 +1,5 @@
-TIMESTAMP = 1751268614
-SHA256 (go/textproc_fzf/junegunn-fzf-v0.63.0_GH0/go.mod) = 6cc838db5cb7817cbb9522b55c9715ab6f543a0eaf3b5178cd9db42bd60640ae
-SIZE (go/textproc_fzf/junegunn-fzf-v0.63.0_GH0/go.mod) = 527
-SHA256 (go/textproc_fzf/junegunn-fzf-v0.63.0_GH0/junegunn-fzf-v0.63.0_GH0.tar.gz) = f83287152726c5da0ea63ccbf83a0cd09ef8ac828976415b724c07337ed054b0
-SIZE (go/textproc_fzf/junegunn-fzf-v0.63.0_GH0/junegunn-fzf-v0.63.0_GH0.tar.gz) = 344206
+TIMESTAMP = 1751877958
+SHA256 (go/textproc_fzf/junegunn-fzf-v0.64.0_GH0/go.mod) = 6cc838db5cb7817cbb9522b55c9715ab6f543a0eaf3b5178cd9db42bd60640ae
+SIZE (go/textproc_fzf/junegunn-fzf-v0.64.0_GH0/go.mod) = 527
+SHA256 (go/textproc_fzf/junegunn-fzf-v0.64.0_GH0/junegunn-fzf-v0.64.0_GH0.tar.gz) = e990529375a75e9be03b58b6a136573b9fd1189c1223aaa760e47fcb94812172
+SIZE (go/textproc_fzf/junegunn-fzf-v0.64.0_GH0/junegunn-fzf-v0.64.0_GH0.tar.gz) = 346041
diff --git a/textproc/gh-grep/Makefile b/textproc/gh-grep/Makefile
index edd9a30ba405..35f2ebacf3dc 100644
--- a/textproc/gh-grep/Makefile
+++ b/textproc/gh-grep/Makefile
@@ -1,7 +1,7 @@
PORTNAME= gh-grep
DISTVERSIONPREFIX= v
DISTVERSION= 1.2.3
-PORTREVISION= 4
+PORTREVISION= 5
CATEGORIES= textproc
MAINTAINER= lcook@FreeBSD.org
diff --git a/textproc/git-chglog/Makefile b/textproc/git-chglog/Makefile
index 35b7387bcda7..53a463dc84c6 100644
--- a/textproc/git-chglog/Makefile
+++ b/textproc/git-chglog/Makefile
@@ -1,7 +1,7 @@
PORTNAME= git-chglog
DISTVERSIONPREFIX= v
DISTVERSION= 0.15.4
-PORTREVISION= 15
+PORTREVISION= 16
CATEGORIES= textproc
MAINTAINER= lcook@FreeBSD.org
diff --git a/textproc/go-md2man/Makefile b/textproc/go-md2man/Makefile
index 2042b1b99bc6..1396d813fb1d 100644
--- a/textproc/go-md2man/Makefile
+++ b/textproc/go-md2man/Makefile
@@ -1,7 +1,7 @@
PORTNAME= go-md2man
DISTVERSIONPREFIX= v
DISTVERSION= 2.0.4
-PORTREVISION= 4
+PORTREVISION= 5
CATEGORIES= textproc
MAINTAINER= mateusz@serveraptor.com
diff --git a/textproc/go-transifex-client/Makefile b/textproc/go-transifex-client/Makefile
index 73ec933e22ca..dd92aafc793c 100644
--- a/textproc/go-transifex-client/Makefile
+++ b/textproc/go-transifex-client/Makefile
@@ -1,7 +1,7 @@
PORTNAME= transifex-client
DISTVERSIONPREFIX= v
DISTVERSION= 1.6.10
-PORTREVISION= 13
+PORTREVISION= 14
CATEGORIES= textproc
PKGNAMEPREFIX= go-
diff --git a/textproc/go-yq/Makefile b/textproc/go-yq/Makefile
index ca893c964758..bd7ec0db6b5c 100644
--- a/textproc/go-yq/Makefile
+++ b/textproc/go-yq/Makefile
@@ -1,6 +1,7 @@
PORTNAME= go-yq
DISTVERSIONPREFIX= v
DISTVERSION= 4.45.4
+PORTREVISION= 1
CATEGORIES= textproc
MAINTAINER= timp87@gmail.com
diff --git a/textproc/gojq/Makefile b/textproc/gojq/Makefile
index fb803738c3ce..a98d3a50f886 100644
--- a/textproc/gojq/Makefile
+++ b/textproc/gojq/Makefile
@@ -1,7 +1,7 @@
PORTNAME= gojq
DISTVERSIONPREFIX= v
DISTVERSION= 0.12.17
-PORTREVISION= 4
+PORTREVISION= 5
CATEGORIES= textproc
MAINTAINER= nork@FreeBSD.org
diff --git a/textproc/gron/Makefile b/textproc/gron/Makefile
index 3a736b9cb818..81f669a42893 100644
--- a/textproc/gron/Makefile
+++ b/textproc/gron/Makefile
@@ -1,7 +1,7 @@
PORTNAME= gron
PORTVERSION= 0.7.1
DISTVERSIONPREFIX= v
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= textproc
MAINTAINER= zi@FreeBSD.org
diff --git a/textproc/harper/Makefile b/textproc/harper/Makefile
index 1849e4ec014b..01d4a12a576d 100644
--- a/textproc/harper/Makefile
+++ b/textproc/harper/Makefile
@@ -1,6 +1,6 @@
PORTNAME= harper
DISTVERSIONPREFIX= v
-DISTVERSION= 0.47.0
+DISTVERSION= 0.49.0
CATEGORIES= textproc
MAINTAINER= ashish@FreeBSD.org
diff --git a/textproc/harper/Makefile.crates b/textproc/harper/Makefile.crates
index 6b1b3a613c87..582b2478a650 100644
--- a/textproc/harper/Makefile.crates
+++ b/textproc/harper/Makefile.crates
@@ -110,6 +110,7 @@ CARGO_CRATES= addr2line-0.24.2 \
idna-1.0.3 \
idna_adapter-1.2.1 \
indexmap-2.10.0 \
+ io-uring-0.7.8 \
ipnet-2.11.0 \
iri-string-0.7.8 \
is-docker-0.2.0 \
@@ -128,7 +129,7 @@ CARGO_CRATES= addr2line-0.24.2 \
litemap-0.8.0 \
lock_api-0.4.13 \
log-0.4.27 \
- lru-0.15.0 \
+ lru-0.16.0 \
lru-slab-0.1.2 \
lsp-types-0.97.0 \
mac-0.1.1 \
@@ -189,7 +190,7 @@ CARGO_CRATES= addr2line-0.24.2 \
regex-1.11.1 \
regex-automata-0.4.9 \
regex-syntax-0.8.5 \
- reqwest-0.12.20 \
+ reqwest-0.12.22 \
resolve-path-0.1.0 \
ring-0.17.14 \
rs-conllu-0.3.0 \
@@ -237,7 +238,7 @@ CARGO_CRATES= addr2line-0.24.2 \
tinytemplate-1.2.1 \
tinyvec-1.9.0 \
tinyvec_macros-0.1.1 \
- tokio-1.45.1 \
+ tokio-1.46.1 \
tokio-macros-2.5.0 \
tokio-rustls-0.26.2 \
tokio-util-0.7.15 \
@@ -260,6 +261,7 @@ CARGO_CRATES= addr2line-0.24.2 \
tree-sitter-bash-0.25.0 \
tree-sitter-c-0.24.1 \
tree-sitter-c-sharp-0.23.1 \
+ tree-sitter-clojure-0.1.0 \
tree-sitter-cmake-0.7.1 \
tree-sitter-cpp-0.23.4 \
tree-sitter-go-0.23.4 \
diff --git a/textproc/harper/distinfo b/textproc/harper/distinfo
index e49dc753130e..6fee75a79979 100644
--- a/textproc/harper/distinfo
+++ b/textproc/harper/distinfo
@@ -1,4 +1,4 @@
-TIMESTAMP = 1751400865
+TIMESTAMP = 1752094888
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
@@ -223,6 +223,8 @@ SHA256 (rust/crates/idna_adapter-1.2.1.crate) = 3acae9609540aa318d1bc588455225fb
SIZE (rust/crates/idna_adapter-1.2.1.crate) = 10389
SHA256 (rust/crates/indexmap-2.10.0.crate) = fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661
SIZE (rust/crates/indexmap-2.10.0.crate) = 95836
+SHA256 (rust/crates/io-uring-0.7.8.crate) = b86e202f00093dcba4275d4636b93ef9dd75d025ae560d2521b45ea28ab49013
+SIZE (rust/crates/io-uring-0.7.8.crate) = 94958
SHA256 (rust/crates/ipnet-2.11.0.crate) = 469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130
SIZE (rust/crates/ipnet-2.11.0.crate) = 29718
SHA256 (rust/crates/iri-string-0.7.8.crate) = dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2
@@ -259,8 +261,8 @@ SHA256 (rust/crates/lock_api-0.4.13.crate) = 96936507f153605bddfcda068dd804796c8
SIZE (rust/crates/lock_api-0.4.13.crate) = 28565
SHA256 (rust/crates/log-0.4.27.crate) = 13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94
SIZE (rust/crates/log-0.4.27.crate) = 48120
-SHA256 (rust/crates/lru-0.15.0.crate) = 0281c2e25e62316a5c9d98f2d2e9e95a37841afdaf4383c177dbb5c1dfab0568
-SIZE (rust/crates/lru-0.15.0.crate) = 16499
+SHA256 (rust/crates/lru-0.16.0.crate) = 86ea4e65087ff52f3862caff188d489f1fab49a0cb09e01b2e3f1a617b10aaed
+SIZE (rust/crates/lru-0.16.0.crate) = 16517
SHA256 (rust/crates/lru-slab-0.1.2.crate) = 112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154
SIZE (rust/crates/lru-slab-0.1.2.crate) = 9090
SHA256 (rust/crates/lsp-types-0.97.0.crate) = 53353550a17c04ac46c585feb189c2db82154fc84b79c7a66c96c2c644f66071
@@ -381,8 +383,8 @@ SHA256 (rust/crates/regex-automata-0.4.9.crate) = 809e8dc61f6de73b46c85f4c964863
SIZE (rust/crates/regex-automata-0.4.9.crate) = 618525
SHA256 (rust/crates/regex-syntax-0.8.5.crate) = 2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c
SIZE (rust/crates/regex-syntax-0.8.5.crate) = 357541
-SHA256 (rust/crates/reqwest-0.12.20.crate) = eabf4c97d9130e2bf606614eb937e86edac8292eaa6f422f995d7e8de1eb1813
-SIZE (rust/crates/reqwest-0.12.20.crate) = 199843
+SHA256 (rust/crates/reqwest-0.12.22.crate) = cbc931937e6ca3a06e3b6c0aa7841849b160a90351d6ab467a8b9b9959767531
+SIZE (rust/crates/reqwest-0.12.22.crate) = 200283
SHA256 (rust/crates/resolve-path-0.1.0.crate) = 321e5e41b3b192dab6f1e75b9deacb6688b4b8c5e68906a78e8f43e7c2887bb5
SIZE (rust/crates/resolve-path-0.1.0.crate) = 9129
SHA256 (rust/crates/ring-0.17.14.crate) = a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7
@@ -477,8 +479,8 @@ SHA256 (rust/crates/tinyvec-1.9.0.crate) = 09b3661f17e86524eccd4371ab0429194e0d7
SIZE (rust/crates/tinyvec-1.9.0.crate) = 54137
SHA256 (rust/crates/tinyvec_macros-0.1.1.crate) = 1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20
SIZE (rust/crates/tinyvec_macros-0.1.1.crate) = 5865
-SHA256 (rust/crates/tokio-1.45.1.crate) = 75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779
-SIZE (rust/crates/tokio-1.45.1.crate) = 811787
+SHA256 (rust/crates/tokio-1.46.1.crate) = 0cc3a2344dafbe23a245241fe8b09735b521110d30fcefbbd5feb1797ca35d17
+SIZE (rust/crates/tokio-1.46.1.crate) = 823632
SHA256 (rust/crates/tokio-macros-2.5.0.crate) = 6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8
SIZE (rust/crates/tokio-macros-2.5.0.crate) = 12617
SHA256 (rust/crates/tokio-rustls-0.26.2.crate) = 8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b
@@ -523,6 +525,8 @@ SHA256 (rust/crates/tree-sitter-c-0.24.1.crate) = 1a3aad8f0129083a59fe8596157552
SIZE (rust/crates/tree-sitter-c-0.24.1.crate) = 248206
SHA256 (rust/crates/tree-sitter-c-sharp-0.23.1.crate) = 67f06accca7b45351758663b8215089e643d53bd9a660ce0349314263737fcb0
SIZE (rust/crates/tree-sitter-c-sharp-0.23.1.crate) = 1347808
+SHA256 (rust/crates/tree-sitter-clojure-0.1.0.crate) = 4004884cc509449a1d78fa3e1f02b4e953d0a8065984445304795e72e885338c
+SIZE (rust/crates/tree-sitter-clojure-0.1.0.crate) = 77005
SHA256 (rust/crates/tree-sitter-cmake-0.7.1.crate) = 7c1b35d1dd7396d24b3e826bb0f975b915ec7e9125b989d5e9d24ebb6a08509a
SIZE (rust/crates/tree-sitter-cmake-0.7.1.crate) = 49838
SHA256 (rust/crates/tree-sitter-cpp-0.23.4.crate) = df2196ea9d47b4ab4a31b9297eaa5a5d19a0b121dceb9f118f6790ad0ab94743
@@ -725,5 +729,5 @@ SHA256 (rust/crates/zerovec-0.11.2.crate) = 4a05eb080e015ba39cc9e23bbe5e7fb04d5f
SIZE (rust/crates/zerovec-0.11.2.crate) = 124500
SHA256 (rust/crates/zerovec-derive-0.11.1.crate) = 5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f
SIZE (rust/crates/zerovec-derive-0.11.1.crate) = 21294
-SHA256 (Automattic-harper-v0.47.0_GH0.tar.gz) = ff07e01a838e335aa0b72da0d36942e1fe319624df401ae7550fbb40bcc0726c
-SIZE (Automattic-harper-v0.47.0_GH0.tar.gz) = 4119251
+SHA256 (Automattic-harper-v0.49.0_GH0.tar.gz) = 73053d6ad3e49e95316ccf866ac43ce2656177bbc01ed9ee56d7176916116cf4
+SIZE (Automattic-harper-v0.49.0_GH0.tar.gz) = 4141292
diff --git a/textproc/highlight/Makefile b/textproc/highlight/Makefile
index c21af6eea0b9..58634415df7a 100644
--- a/textproc/highlight/Makefile
+++ b/textproc/highlight/Makefile
@@ -4,7 +4,7 @@ PORTEPOCH= 3
CATEGORIES= textproc
MASTER_SITES= http://andre-simon.de/zip/
-MAINTAINER= kwm@FreeBSD.org
+MAINTAINER= ports@FreeBSD.org
COMMENT= Customizable syntax highlighter
WWW= http://andre-simon.de/
diff --git a/textproc/htmltest/Makefile b/textproc/htmltest/Makefile
index 351193c08ea5..c14495e103a9 100644
--- a/textproc/htmltest/Makefile
+++ b/textproc/htmltest/Makefile
@@ -1,7 +1,7 @@
PORTNAME= htmltest
DISTVERSIONPREFIX= v
DISTVERSION= 0.17.0
-PORTREVISION= 21
+PORTREVISION= 22
CATEGORIES= textproc
MAINTAINER= dbaio@FreeBSD.org
diff --git a/textproc/itstool/Makefile b/textproc/itstool/Makefile
index ed5fbd914450..30f5f2ed34bb 100644
--- a/textproc/itstool/Makefile
+++ b/textproc/itstool/Makefile
@@ -2,27 +2,24 @@ PORTNAME= itstool
PORTVERSION= 2.0.7
PORTREVISION= 2
CATEGORIES= textproc
-MASTER_SITES= http://files.itstool.org/itstool/
+MASTER_SITES= https://files.itstool.org/itstool/
-MAINTAINER= kwm@FreeBSD.org
-COMMENT= Make XML documents translatable through po files
-WWW= https://itstool.org/
+MAINTAINER= sunpoet@FreeBSD.org
+COMMENT= Translate XML with PO files using W3C Internationalization Tag Set rules
+WWW= https://itstool.org/ \
+ https://github.com/itstool/itstool
LICENSE= GPLv3
+LICENSE_FILE= ${WRKSRC}/COPYING.GPL3
-BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}libxml2-python>0:textproc/libxml2-python@${PY_FLAVOR}
-RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}libxml2-python>0:textproc/libxml2-python@${PY_FLAVOR}
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}libxml2-python>=0:textproc/libxml2-python@${PY_FLAVOR}
USES= python tar:bzip2
-GNU_CONFIGURE= yes
-GNU_CONFIGURE_MANPREFIX=${PREFIX}/share
-
-CONFLICTS_INSTALL= itstool22
+GNU_CONFIGURE= yes
NO_ARCH= yes
post-patch:
- @${REINPLACE_CMD} -e 's|@PYTHON@|${PYTHON_CMD}|g' \
- ${WRKSRC}/itstool.in
+ @${REINPLACE_CMD} -e 's|@PYTHON@|${PYTHON_CMD}|g' ${WRKSRC}/itstool.in
.include <bsd.port.mk>
diff --git a/textproc/jid/Makefile b/textproc/jid/Makefile
index 95eabd06cd96..07b35c6904c5 100644
--- a/textproc/jid/Makefile
+++ b/textproc/jid/Makefile
@@ -1,7 +1,7 @@
PORTNAME= jid
PORTVERSION= 0.7.6
DISTVERSIONPREFIX= v
-PORTREVISION= 26
+PORTREVISION= 27
CATEGORIES= textproc
MAINTAINER= sbz@FreeBSD.org
diff --git a/textproc/kdiff3/Makefile b/textproc/kdiff3/Makefile
index f405e5705d39..4a8945d46d17 100644
--- a/textproc/kdiff3/Makefile
+++ b/textproc/kdiff3/Makefile
@@ -1,5 +1,5 @@
PORTNAME= kdiff3
-DISTVERSION= 1.12.2
+DISTVERSION= 1.12.3
CATEGORIES= textproc kde
MASTER_SITES= KDE/stable/${PORTNAME}
diff --git a/textproc/kdiff3/distinfo b/textproc/kdiff3/distinfo
index a87e5841b319..cff12aa140e8 100644
--- a/textproc/kdiff3/distinfo
+++ b/textproc/kdiff3/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1743033132
-SHA256 (kdiff3-1.12.2.tar.xz) = 31a37cbcf9d42078a7b4845d42ac1a033a7d7232a5abaeaa028f6425bb9fa439
-SIZE (kdiff3-1.12.2.tar.xz) = 1203080
+TIMESTAMP = 1752521055
+SHA256 (kdiff3-1.12.3.tar.xz) = e22654c457881799808305529c6b596c0c9dc38b5a2ecc142ec76d46f6873f4c
+SIZE (kdiff3-1.12.3.tar.xz) = 1205812
diff --git a/textproc/kepubify/Makefile b/textproc/kepubify/Makefile
index 9f8fd1a9fd95..1714297aa1ed 100644
--- a/textproc/kepubify/Makefile
+++ b/textproc/kepubify/Makefile
@@ -1,7 +1,7 @@
PORTNAME= kepubify
DISTVERSIONPREFIX= v
DISTVERSION= 4.0.4
-PORTREVISION= 26
+PORTREVISION= 27
CATEGORIES= textproc converters
MAINTAINER= fuz@FreeBSD.org
diff --git a/textproc/libucl/Makefile b/textproc/libucl/Makefile
index 0357671e2c02..1a64e02e4659 100644
--- a/textproc/libucl/Makefile
+++ b/textproc/libucl/Makefile
@@ -1,5 +1,6 @@
PORTNAME= libucl
DISTVERSION= 0.9.2
+PORTREVISION= 1
CATEGORIES= textproc devel
# implicit-approval+: bapt dvl
@@ -19,7 +20,6 @@ GH_ACCOUNT= vstakhov
USE_LDCONFIG= yes
GNU_CONFIGURE= yes
-GNU_CONFIGURE_MANPREFIX=${PREFIX}/share
INSTALL_TARGET= install-strip
TEST_TARGET= check
@@ -27,7 +27,7 @@ TEST_TARGET= check
CONFLICTS_INSTALL= ucl
OPTIONS_DEFINE= LUA REGEX SIGNATURES URLS UTILS
-OPTIONS_DEFAULT= REGEX UTILS
+OPTIONS_DEFAULT= LUA REGEX UTILS
OPTIONS_SUB= yes
REGEX_DESC= Enable regex checking for schema
diff --git a/textproc/libxml2/Makefile b/textproc/libxml2/Makefile
index 7f2922589d85..af933570190a 100644
--- a/textproc/libxml2/Makefile
+++ b/textproc/libxml2/Makefile
@@ -1,6 +1,6 @@
PORTNAME?= libxml2
DISTVERSION= 2.14.4
-PORTREVISION?= 0
+PORTREVISION?= 1
CATEGORIES?= textproc gnome
MASTER_SITES= GNOME
DISTNAME= libxml2-${DISTVERSION}
diff --git a/textproc/libxml2/files/patch-libxml2-config.cmake.in b/textproc/libxml2/files/patch-libxml2-config.cmake.in
new file mode 100644
index 000000000000..581142a44aaf
--- /dev/null
+++ b/textproc/libxml2/files/patch-libxml2-config.cmake.in
@@ -0,0 +1,10 @@
+--- libxml2-config.cmake.in.orig 2025-07-10 08:31:10 UTC
++++ libxml2-config.cmake.in
+@@ -119,6 +119,7 @@ if(NOT LIBXML2_SHARED)
+ if(LIBXML2_WITH_HTTP)
+ list(APPEND LIBXML2_LIBRARIES ws2_32)
+ list(APPEND LIBXML2_INTERFACE_LINK_LIBRARIES "\$<LINK_ONLY:ws2_32>")
++ endif()
+ endif()
+ endif()
+
diff --git a/textproc/libxslt/Makefile b/textproc/libxslt/Makefile
index dcfd2041aefc..344606952e8f 100644
--- a/textproc/libxslt/Makefile
+++ b/textproc/libxslt/Makefile
@@ -12,6 +12,9 @@ WWW= https://gitlab.gnome.org/GNOME/libxslt/
LICENSE= MIT
LICENSE_FILE= ${WRKSRC}/Copyright
+DEPRECATED= unmaintained with multiple unfixed security vulnerabilities
+EXPIRATION_DATE=2025-09-12
+
# See note in textproc/libxml2 for why this port uses autotools
USES= cpe gmake gnome libtool localbase:ldflags pathfix pkgconfig tar:xz
CPE_VENDOR= xmlsoft
diff --git a/textproc/markdownfmt/Makefile b/textproc/markdownfmt/Makefile
index e8edc160fb66..aa38484091a3 100644
--- a/textproc/markdownfmt/Makefile
+++ b/textproc/markdownfmt/Makefile
@@ -2,7 +2,7 @@ PORTNAME= markdownfmt
DISTVERSIONPREFIX= v
DISTVERSION= 1.1-67
DISTVERSIONSUFFIX= -g3438a10
-PORTREVISION= 28
+PORTREVISION= 29
CATEGORIES= textproc
MAINTAINER= 0mp@FreeBSD.org
diff --git a/textproc/md2roff/Makefile b/textproc/md2roff/Makefile
index 862865851914..22f7a1e3bedc 100644
--- a/textproc/md2roff/Makefile
+++ b/textproc/md2roff/Makefile
@@ -2,7 +2,7 @@ PORTNAME= md2roff
DISTVERSIONPREFIX= v
DISTVERSION= 2.14.3-0.20200416233007
DISTVERSIONSUFFIX= -c4dfa597b8d5
-PORTREVISION= 12
+PORTREVISION= 13
CATEGORIES= textproc print
MAINTAINER= fuz@FreeBSD.org
diff --git a/textproc/mdtt/Makefile b/textproc/mdtt/Makefile
new file mode 100644
index 000000000000..58fffcdb1d90
--- /dev/null
+++ b/textproc/mdtt/Makefile
@@ -0,0 +1,20 @@
+PORTNAME= mdtt
+DISTVERSIONPREFIX= v
+DISTVERSION= 0.3.1
+CATEGORIES= textproc
+
+MAINTAINER= olgeni@FreeBSD.org
+COMMENT= Terminal-based markdown table editor with vim-style keybindings
+WWW= https://github.com/szktkfm/mdtt
+
+LICENSE= MIT
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+USES= go:modules
+
+GO_MODULE= github.com/szktkfm/mdtt
+GO_TARGET= ./cmd/mdtt
+
+PLIST_FILES= bin/mdtt
+
+.include <bsd.port.mk>
diff --git a/textproc/mdtt/distinfo b/textproc/mdtt/distinfo
new file mode 100644
index 000000000000..3eff87c77803
--- /dev/null
+++ b/textproc/mdtt/distinfo
@@ -0,0 +1,5 @@
+TIMESTAMP = 1752329501
+SHA256 (go/textproc_mdtt/mdtt-v0.3.1/v0.3.1.mod) = aed33d3db078416e1cc977b67d1a6acd3fa6c8a77afa8de4d4dd5a831a04180f
+SIZE (go/textproc_mdtt/mdtt-v0.3.1/v0.3.1.mod) = 1519
+SHA256 (go/textproc_mdtt/mdtt-v0.3.1/v0.3.1.zip) = e4f9fa126adad21b276bfa442a9e65243b849b3e13911b9d806eb37e27b96130
+SIZE (go/textproc_mdtt/mdtt-v0.3.1/v0.3.1.zip) = 723577
diff --git a/textproc/mdtt/pkg-descr b/textproc/mdtt/pkg-descr
new file mode 100644
index 000000000000..07fe8467a42e
--- /dev/null
+++ b/textproc/mdtt/pkg-descr
@@ -0,0 +1,10 @@
+mdtt is a terminal-based markdown table editor that makes editing markdown
+tables easier with a slick TUI (Terminal User Interface) and vim-style
+keybindings.
+
+Features:
+
+- Terminal-based interface for editing markdown tables
+- Vim-style keybindings for navigation and editing
+- Easy table creation and modification
+- Lightweight and fast
diff --git a/textproc/miller/Makefile b/textproc/miller/Makefile
index 3f5eb96af16a..fc66306604c4 100644
--- a/textproc/miller/Makefile
+++ b/textproc/miller/Makefile
@@ -1,7 +1,7 @@
PORTNAME= miller
DISTVERSIONPREFIX= v
DISTVERSION= 6.13.0
-PORTREVISION= 3
+PORTREVISION= 4
CATEGORIES= textproc
MASTER_SITES= https://raw.githubusercontent.com/johnkerl/${PORTNAME}/${DISTVERSIONFULL}/:gomod
DISTFILES= go.mod:gomod
diff --git a/textproc/minify/Makefile b/textproc/minify/Makefile
index 3b3b0cd667d7..3f72c04fddcc 100644
--- a/textproc/minify/Makefile
+++ b/textproc/minify/Makefile
@@ -1,7 +1,7 @@
PORTNAME= minify
PORTVERSION= 2.20.37
DISTVERSIONPREFIX= v
-PORTREVISION= 5
+PORTREVISION= 6
CATEGORIES= textproc www
MAINTAINER= sunpoet@FreeBSD.org
diff --git a/textproc/minixmlto/Makefile b/textproc/minixmlto/Makefile
index 0f7b3a058b33..351240e79858 100644
--- a/textproc/minixmlto/Makefile
+++ b/textproc/minixmlto/Makefile
@@ -9,6 +9,9 @@ WWW= https://github.com/bapt/minixmlto
LICENSE= BSD2CLAUSE
+DEPRECATED= Depends on vulnerable unmaintained libxslt
+EXPIRATION_DATE=2025-09-12
+
RUN_DEPENDS= docbook-xsl>0:textproc/docbook-xsl \
xsltproc:textproc/libxslt \
html2text:textproc/html2text \
diff --git a/textproc/nerdlog/Makefile b/textproc/nerdlog/Makefile
index 9942c330fbac..ac66080d13e2 100644
--- a/textproc/nerdlog/Makefile
+++ b/textproc/nerdlog/Makefile
@@ -1,6 +1,7 @@
PORTNAME= nerdlog
DISTVERSIONPREFIX= v
DISTVERSION= 1.10.0
+PORTREVISION= 1
CATEGORIES= textproc
MAINTAINER= lwhsu@FreeBSD.org
diff --git a/textproc/opensearch-dashboards/Makefile b/textproc/opensearch-dashboards/Makefile
index 8662aac5efff..becc2589adc5 100644
--- a/textproc/opensearch-dashboards/Makefile
+++ b/textproc/opensearch-dashboards/Makefile
@@ -1,5 +1,5 @@
PORTNAME= opensearch-dashboards
-DISTVERSION?= 3.0.0
+DISTVERSION?= 3.1.0
DISTVERSIONSUFFIX= -linux-x64
PORTREVISION?= 0
CATEGORIES= textproc www
diff --git a/textproc/opensearch-dashboards/distinfo b/textproc/opensearch-dashboards/distinfo
index f8ccb85afb14..5239f0912a88 100644
--- a/textproc/opensearch-dashboards/distinfo
+++ b/textproc/opensearch-dashboards/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1746618916
-SHA256 (opensearch-dashboards-3.0.0-linux-x64.tar.gz) = 8d4e826961e1d01501f7eb5f4851894d249b046c17b331018e57521f404bbe9e
-SIZE (opensearch-dashboards-3.0.0-linux-x64.tar.gz) = 382012461
+TIMESTAMP = 1752310065
+SHA256 (opensearch-dashboards-3.1.0-linux-x64.tar.gz) = d7ae01dce54d13a62cc268dfede9941331805270073cb5e3832aa8fc54c4156f
+SIZE (opensearch-dashboards-3.1.0-linux-x64.tar.gz) = 385456866
diff --git a/textproc/opensearch/Makefile b/textproc/opensearch/Makefile
index bee0179adbdc..5d892d18b277 100644
--- a/textproc/opensearch/Makefile
+++ b/textproc/opensearch/Makefile
@@ -1,5 +1,5 @@
PORTNAME= opensearch
-DISTVERSION?= 3.0.0
+DISTVERSION?= 3.1.0
DISTVERSIONSUFFIX= -linux-x64
PORTREVISION?= 0
CATEGORIES= textproc java devel
diff --git a/textproc/opensearch/distinfo b/textproc/opensearch/distinfo
index 78f252967ed2..631008869626 100644
--- a/textproc/opensearch/distinfo
+++ b/textproc/opensearch/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1746608948
-SHA256 (opensearch-3.0.0-linux-x64.tar.gz) = d98c60bf7d75b8b4257b2421dd22b89155e87be4b509da6a4e1136cf62e0b155
-SIZE (opensearch-3.0.0-linux-x64.tar.gz) = 978590132
+TIMESTAMP = 1752307580
+SHA256 (opensearch-3.1.0-linux-x64.tar.gz) = a5eb65b1fab3ff4e0befba8cf48174e8bc2daee6d85ffd5b5c4ccf5cbf427eb6
+SIZE (opensearch-3.1.0-linux-x64.tar.gz) = 1000330285
diff --git a/textproc/otree/Makefile b/textproc/otree/Makefile
new file mode 100644
index 000000000000..e028dc8e14a4
--- /dev/null
+++ b/textproc/otree/Makefile
@@ -0,0 +1,179 @@
+PORTNAME= otree
+DISTVERSIONPREFIX= v
+DISTVERSION= 0.4.0
+CATEGORIES= textproc
+
+MAINTAINER= olgeni@FreeBSD.org
+COMMENT= Command line tool to view objects (JSON/YAML/TOML) in TUI tree widget
+WWW= https://github.com/fioncat/otree
+
+LICENSE= MIT
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+USES= cargo
+USE_GITHUB= yes
+GH_ACCOUNT= fioncat
+
+CARGO_CRATES= aho-corasick-1.1.3 \
+ allocator-api2-0.2.21 \
+ anstream-0.6.18 \
+ anstyle-1.0.10 \
+ anstyle-parse-0.2.6 \
+ anstyle-query-1.1.2 \
+ anstyle-wincon-3.0.7 \
+ anyhow-1.0.97 \
+ autocfg-1.4.0 \
+ bitflags-1.3.2 \
+ bitflags-2.9.0 \
+ camino-1.1.9 \
+ cargo-platform-0.1.9 \
+ cargo_metadata-0.19.2 \
+ cassowary-0.3.0 \
+ castaway-0.2.3 \
+ cfg-if-1.0.0 \
+ clap-4.5.34 \
+ clap_builder-4.5.34 \
+ clap_derive-4.5.32 \
+ clap_lex-0.7.4 \
+ colorchoice-1.0.3 \
+ compact_str-0.8.1 \
+ core-foundation-sys-0.8.7 \
+ crossbeam-deque-0.8.6 \
+ crossbeam-epoch-0.9.18 \
+ crossbeam-utils-0.8.21 \
+ crossterm-0.28.1 \
+ crossterm_winapi-0.9.1 \
+ darling-0.20.11 \
+ darling_core-0.20.11 \
+ darling_macro-0.20.11 \
+ deranged-0.4.1 \
+ derive_builder-0.20.2 \
+ derive_builder_core-0.20.2 \
+ derive_builder_macro-0.20.2 \
+ dirs-6.0.0 \
+ dirs-sys-0.5.0 \
+ either-1.15.0 \
+ equivalent-1.0.2 \
+ errno-0.3.10 \
+ filedescriptor-0.8.3 \
+ filetime-0.2.25 \
+ fnv-1.0.7 \
+ foldhash-0.1.5 \
+ fsevent-sys-4.1.0 \
+ getrandom-0.2.15 \
+ hashbrown-0.15.2 \
+ heck-0.5.0 \
+ humansize-2.1.3 \
+ ident_case-1.0.1 \
+ indexmap-2.8.0 \
+ indoc-2.0.6 \
+ inotify-0.11.0 \
+ inotify-sys-0.1.5 \
+ instability-0.3.7 \
+ is_terminal_polyfill-1.70.1 \
+ itertools-0.13.0 \
+ itoa-1.0.15 \
+ kqueue-1.0.8 \
+ kqueue-sys-1.0.4 \
+ libc-0.2.171 \
+ libm-0.2.11 \
+ libredox-0.1.3 \
+ libyml-0.0.5 \
+ linux-raw-sys-0.4.15 \
+ lock_api-0.4.12 \
+ log-0.4.27 \
+ lru-0.12.5 \
+ memchr-2.7.4 \
+ mio-1.0.3 \
+ notify-8.0.0 \
+ notify-types-2.0.0 \
+ ntapi-0.4.1 \
+ num-conv-0.1.0 \
+ num_threads-0.1.7 \
+ once_cell-1.21.3 \
+ option-ext-0.2.0 \
+ parking_lot-0.12.3 \
+ parking_lot_core-0.9.10 \
+ paste-1.0.15 \
+ powerfmt-0.2.0 \
+ proc-macro2-1.0.94 \
+ quote-1.0.40 \
+ ratatui-0.29.0 \
+ rayon-1.10.0 \
+ rayon-core-1.12.1 \
+ redox_syscall-0.5.10 \
+ redox_users-0.5.0 \
+ regex-1.11.1 \
+ regex-automata-0.4.9 \
+ regex-syntax-0.8.5 \
+ rustc_version-0.4.1 \
+ rustix-0.38.44 \
+ rustversion-1.0.20 \
+ ryu-1.0.20 \
+ same-file-1.0.6 \
+ scopeguard-1.2.0 \
+ semver-1.0.26 \
+ serde-1.0.219 \
+ serde_derive-1.0.219 \
+ serde_json-1.0.140 \
+ serde_spanned-0.6.8 \
+ serde_yml-0.0.12 \
+ signal-hook-0.3.17 \
+ signal-hook-mio-0.2.4 \
+ signal-hook-registry-1.4.2 \
+ simple-error-0.3.1 \
+ smallvec-1.14.0 \
+ static_assertions-1.1.0 \
+ strsim-0.11.1 \
+ strum-0.26.3 \
+ strum_macros-0.26.4 \
+ syn-2.0.100 \
+ sysinfo-0.33.1 \
+ thiserror-1.0.69 \
+ thiserror-2.0.12 \
+ thiserror-impl-1.0.69 \
+ thiserror-impl-2.0.12 \
+ time-0.3.41 \
+ time-core-0.1.4 \
+ time-macros-0.2.22 \
+ toml-0.8.20 \
+ toml_datetime-0.6.8 \
+ toml_edit-0.22.24 \
+ tui-tree-widget-0.23.0 \
+ unicode-ident-1.0.18 \
+ unicode-segmentation-1.12.0 \
+ unicode-truncate-1.1.0 \
+ unicode-width-0.1.14 \
+ unicode-width-0.2.0 \
+ utf8parse-0.2.2 \
+ vergen-9.0.4 \
+ vergen-lib-0.1.6 \
+ version_check-0.9.5 \
+ walkdir-2.5.0 \
+ wasi-0.11.0+wasi-snapshot-preview1 \
+ 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-0.57.0 \
+ windows-core-0.57.0 \
+ windows-implement-0.57.0 \
+ windows-interface-0.57.0 \
+ windows-result-0.1.2 \
+ windows-sys-0.52.0 \
+ windows-sys-0.59.0 \
+ windows-targets-0.52.6 \
+ windows_aarch64_gnullvm-0.52.6 \
+ windows_aarch64_msvc-0.52.6 \
+ windows_i686_gnu-0.52.6 \
+ windows_i686_gnullvm-0.52.6 \
+ windows_i686_msvc-0.52.6 \
+ windows_x86_64_gnu-0.52.6 \
+ windows_x86_64_gnullvm-0.52.6 \
+ windows_x86_64_msvc-0.52.6 \
+ winnow-0.7.4
+
+PLIST_FILES= bin/otree
+
+.include <bsd.port.mk>
+
diff --git a/textproc/otree/distinfo b/textproc/otree/distinfo
new file mode 100644
index 000000000000..47e183c2e340
--- /dev/null
+++ b/textproc/otree/distinfo
@@ -0,0 +1,319 @@
+TIMESTAMP = 1752193391
+SHA256 (rust/crates/aho-corasick-1.1.3.crate) = 8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916
+SIZE (rust/crates/aho-corasick-1.1.3.crate) = 183311
+SHA256 (rust/crates/allocator-api2-0.2.21.crate) = 683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923
+SIZE (rust/crates/allocator-api2-0.2.21.crate) = 63622
+SHA256 (rust/crates/anstream-0.6.18.crate) = 8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b
+SIZE (rust/crates/anstream-0.6.18.crate) = 29681
+SHA256 (rust/crates/anstyle-1.0.10.crate) = 55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9
+SIZE (rust/crates/anstyle-1.0.10.crate) = 15725
+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.7.crate) = ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e
+SIZE (rust/crates/anstyle-wincon-3.0.7.crate) = 12400
+SHA256 (rust/crates/anyhow-1.0.97.crate) = dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f
+SIZE (rust/crates/anyhow-1.0.97.crate) = 52221
+SHA256 (rust/crates/autocfg-1.4.0.crate) = ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26
+SIZE (rust/crates/autocfg-1.4.0.crate) = 17712
+SHA256 (rust/crates/bitflags-1.3.2.crate) = bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a
+SIZE (rust/crates/bitflags-1.3.2.crate) = 23021
+SHA256 (rust/crates/bitflags-2.9.0.crate) = 5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd
+SIZE (rust/crates/bitflags-2.9.0.crate) = 47654
+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.9.crate) = e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea
+SIZE (rust/crates/cargo-platform-0.1.9.crate) = 12010
+SHA256 (rust/crates/cargo_metadata-0.19.2.crate) = dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba
+SIZE (rust/crates/cargo_metadata-0.19.2.crate) = 28370
+SHA256 (rust/crates/cassowary-0.3.0.crate) = df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53
+SIZE (rust/crates/cassowary-0.3.0.crate) = 22876
+SHA256 (rust/crates/castaway-0.2.3.crate) = 0abae9be0aaf9ea96a3b1b8b1b55c602ca751eba1b1500220cea4ecbafe7c0d5
+SIZE (rust/crates/castaway-0.2.3.crate) = 11509
+SHA256 (rust/crates/cfg-if-1.0.0.crate) = baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd
+SIZE (rust/crates/cfg-if-1.0.0.crate) = 7934
+SHA256 (rust/crates/clap-4.5.34.crate) = e958897981290da2a852763fe9cdb89cd36977a5d729023127095fa94d95e2ff
+SIZE (rust/crates/clap-4.5.34.crate) = 56980
+SHA256 (rust/crates/clap_builder-4.5.34.crate) = 83b0f35019843db2160b5bb19ae09b4e6411ac33fc6a712003c33e03090e2489
+SIZE (rust/crates/clap_builder-4.5.34.crate) = 168417
+SHA256 (rust/crates/clap_derive-4.5.32.crate) = 09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7
+SIZE (rust/crates/clap_derive-4.5.32.crate) = 33441
+SHA256 (rust/crates/clap_lex-0.7.4.crate) = f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6
+SIZE (rust/crates/clap_lex-0.7.4.crate) = 12858
+SHA256 (rust/crates/colorchoice-1.0.3.crate) = 5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990
+SIZE (rust/crates/colorchoice-1.0.3.crate) = 7923
+SHA256 (rust/crates/compact_str-0.8.1.crate) = 3b79c4069c6cad78e2e0cdfcbd26275770669fb39fd308a752dc110e83b9af32
+SIZE (rust/crates/compact_str-0.8.1.crate) = 71371
+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/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/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.4.1.crate) = 28cfac68e08048ae1883171632c2aef3ebc555621ae56fbccce1cbf22dd7f058
+SIZE (rust/crates/deranged-0.4.1.crate) = 23541
+SHA256 (rust/crates/derive_builder-0.20.2.crate) = 507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947
+SIZE (rust/crates/derive_builder-0.20.2.crate) = 36661
+SHA256 (rust/crates/derive_builder_core-0.20.2.crate) = 2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8
+SIZE (rust/crates/derive_builder_core-0.20.2.crate) = 31397
+SHA256 (rust/crates/derive_builder_macro-0.20.2.crate) = ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c
+SIZE (rust/crates/derive_builder_macro-0.20.2.crate) = 6360
+SHA256 (rust/crates/dirs-6.0.0.crate) = c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e
+SIZE (rust/crates/dirs-6.0.0.crate) = 14190
+SHA256 (rust/crates/dirs-sys-0.5.0.crate) = e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab
+SIZE (rust/crates/dirs-sys-0.5.0.crate) = 10157
+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.10.crate) = 33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d
+SIZE (rust/crates/errno-0.3.10.crate) = 11824
+SHA256 (rust/crates/filedescriptor-0.8.3.crate) = e40758ed24c9b2eeb76c35fb0aebc66c626084edd827e07e1552279814c6682d
+SIZE (rust/crates/filedescriptor-0.8.3.crate) = 12635
+SHA256 (rust/crates/filetime-0.2.25.crate) = 35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586
+SIZE (rust/crates/filetime-0.2.25.crate) = 14940
+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/fsevent-sys-4.1.0.crate) = 76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2
+SIZE (rust/crates/fsevent-sys-4.1.0.crate) = 4620
+SHA256 (rust/crates/getrandom-0.2.15.crate) = c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7
+SIZE (rust/crates/getrandom-0.2.15.crate) = 37163
+SHA256 (rust/crates/hashbrown-0.15.2.crate) = bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289
+SIZE (rust/crates/hashbrown-0.15.2.crate) = 138478
+SHA256 (rust/crates/heck-0.5.0.crate) = 2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea
+SIZE (rust/crates/heck-0.5.0.crate) = 11517
+SHA256 (rust/crates/humansize-2.1.3.crate) = 6cb51c9a029ddc91b07a787f1d86b53ccfa49b0e86688c946ebe8d3555685dd7
+SIZE (rust/crates/humansize-2.1.3.crate) = 11953
+SHA256 (rust/crates/ident_case-1.0.1.crate) = b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39
+SIZE (rust/crates/ident_case-1.0.1.crate) = 3492
+SHA256 (rust/crates/indexmap-2.8.0.crate) = 3954d50fe15b02142bf25d3b8bdadb634ec3948f103d04ffe3031bc8fe9d7058
+SIZE (rust/crates/indexmap-2.8.0.crate) = 89670
+SHA256 (rust/crates/indoc-2.0.6.crate) = f4c7245a08504955605670dbf141fceab975f15ca21570696aebe9d2e71576bd
+SIZE (rust/crates/indoc-2.0.6.crate) = 17164
+SHA256 (rust/crates/inotify-0.11.0.crate) = f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3
+SIZE (rust/crates/inotify-0.11.0.crate) = 26241
+SHA256 (rust/crates/inotify-sys-0.1.5.crate) = e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb
+SIZE (rust/crates/inotify-sys-0.1.5.crate) = 6965
+SHA256 (rust/crates/instability-0.3.7.crate) = 0bf9fed6d91cfb734e7476a06bde8300a1b94e217e1b523b6f0cd1a01998c71d
+SIZE (rust/crates/instability-0.3.7.crate) = 13682
+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/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/kqueue-1.0.8.crate) = 7447f1ca1b7b563588a205fe93dea8df60fd981423a768bc1c0ded35ed147d0c
+SIZE (rust/crates/kqueue-1.0.8.crate) = 12642
+SHA256 (rust/crates/kqueue-sys-1.0.4.crate) = ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b
+SIZE (rust/crates/kqueue-sys-1.0.4.crate) = 7160
+SHA256 (rust/crates/libc-0.2.171.crate) = c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6
+SIZE (rust/crates/libc-0.2.171.crate) = 785246
+SHA256 (rust/crates/libm-0.2.11.crate) = 8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa
+SIZE (rust/crates/libm-0.2.11.crate) = 111477
+SHA256 (rust/crates/libredox-0.1.3.crate) = c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d
+SIZE (rust/crates/libredox-0.1.3.crate) = 6068
+SHA256 (rust/crates/libyml-0.0.5.crate) = 3302702afa434ffa30847a83305f0a69d6abd74293b6554c18ec85c7ef30c980
+SIZE (rust/crates/libyml-0.0.5.crate) = 97931
+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.12.crate) = 07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17
+SIZE (rust/crates/lock_api-0.4.12.crate) = 27591
+SHA256 (rust/crates/log-0.4.27.crate) = 13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94
+SIZE (rust/crates/log-0.4.27.crate) = 48120
+SHA256 (rust/crates/lru-0.12.5.crate) = 234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38
+SIZE (rust/crates/lru-0.12.5.crate) = 16047
+SHA256 (rust/crates/memchr-2.7.4.crate) = 78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3
+SIZE (rust/crates/memchr-2.7.4.crate) = 96670
+SHA256 (rust/crates/mio-1.0.3.crate) = 2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd
+SIZE (rust/crates/mio-1.0.3.crate) = 103703
+SHA256 (rust/crates/notify-8.0.0.crate) = 2fee8403b3d66ac7b26aee6e40a897d85dc5ce26f44da36b8b73e987cc52e943
+SIZE (rust/crates/notify-8.0.0.crate) = 35590
+SHA256 (rust/crates/notify-types-2.0.0.crate) = 5e0826a989adedc2a244799e823aece04662b66609d96af8dff7ac6df9a8925d
+SIZE (rust/crates/notify-types-2.0.0.crate) = 14495
+SHA256 (rust/crates/ntapi-0.4.1.crate) = e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4
+SIZE (rust/crates/ntapi-0.4.1.crate) = 126552
+SHA256 (rust/crates/num-conv-0.1.0.crate) = 51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9
+SIZE (rust/crates/num-conv-0.1.0.crate) = 7444
+SHA256 (rust/crates/num_threads-0.1.7.crate) = 5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9
+SIZE (rust/crates/num_threads-0.1.7.crate) = 7455
+SHA256 (rust/crates/once_cell-1.21.3.crate) = 42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d
+SIZE (rust/crates/once_cell-1.21.3.crate) = 34534
+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.3.crate) = f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27
+SIZE (rust/crates/parking_lot-0.12.3.crate) = 41860
+SHA256 (rust/crates/parking_lot_core-0.9.10.crate) = 1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8
+SIZE (rust/crates/parking_lot_core-0.9.10.crate) = 32406
+SHA256 (rust/crates/paste-1.0.15.crate) = 57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a
+SIZE (rust/crates/paste-1.0.15.crate) = 18374
+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.94.crate) = a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84
+SIZE (rust/crates/proc-macro2-1.0.94.crate) = 52391
+SHA256 (rust/crates/quote-1.0.40.crate) = 1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d
+SIZE (rust/crates/quote-1.0.40.crate) = 31063
+SHA256 (rust/crates/ratatui-0.29.0.crate) = eabd94c2f37801c20583fc49dd5cd6b0ba68c716787c2dd6ed18571e1e63117b
+SIZE (rust/crates/ratatui-0.29.0.crate) = 543514
+SHA256 (rust/crates/rayon-1.10.0.crate) = b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa
+SIZE (rust/crates/rayon-1.10.0.crate) = 180155
+SHA256 (rust/crates/rayon-core-1.12.1.crate) = 1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2
+SIZE (rust/crates/rayon-core-1.12.1.crate) = 70701
+SHA256 (rust/crates/redox_syscall-0.5.10.crate) = 0b8c0c260b63a8219631167be35e6a988e9554dbd323f8bd08439c8ed1302bd1
+SIZE (rust/crates/redox_syscall-0.5.10.crate) = 30226
+SHA256 (rust/crates/redox_users-0.5.0.crate) = dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b
+SIZE (rust/crates/redox_users-0.5.0.crate) = 15586
+SHA256 (rust/crates/regex-1.11.1.crate) = b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191
+SIZE (rust/crates/regex-1.11.1.crate) = 254170
+SHA256 (rust/crates/regex-automata-0.4.9.crate) = 809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908
+SIZE (rust/crates/regex-automata-0.4.9.crate) = 618525
+SHA256 (rust/crates/regex-syntax-0.8.5.crate) = 2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c
+SIZE (rust/crates/regex-syntax-0.8.5.crate) = 357541
+SHA256 (rust/crates/rustc_version-0.4.1.crate) = cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92
+SIZE (rust/crates/rustc_version-0.4.1.crate) = 12245
+SHA256 (rust/crates/rustix-0.38.44.crate) = fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154
+SIZE (rust/crates/rustix-0.38.44.crate) = 379347
+SHA256 (rust/crates/rustversion-1.0.20.crate) = eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2
+SIZE (rust/crates/rustversion-1.0.20.crate) = 20666
+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/semver-1.0.26.crate) = 56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0
+SIZE (rust/crates/semver-1.0.26.crate) = 31303
+SHA256 (rust/crates/serde-1.0.219.crate) = 5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6
+SIZE (rust/crates/serde-1.0.219.crate) = 78983
+SHA256 (rust/crates/serde_derive-1.0.219.crate) = 5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00
+SIZE (rust/crates/serde_derive-1.0.219.crate) = 57798
+SHA256 (rust/crates/serde_json-1.0.140.crate) = 20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373
+SIZE (rust/crates/serde_json-1.0.140.crate) = 154852
+SHA256 (rust/crates/serde_spanned-0.6.8.crate) = 87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1
+SIZE (rust/crates/serde_spanned-0.6.8.crate) = 9330
+SHA256 (rust/crates/serde_yml-0.0.12.crate) = 59e2dd588bf1597a252c3b920e0143eb99b0f76e4e082f4c92ce34fbc9e71ddd
+SIZE (rust/crates/serde_yml-0.0.12.crate) = 125859
+SHA256 (rust/crates/signal-hook-0.3.17.crate) = 8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801
+SIZE (rust/crates/signal-hook-0.3.17.crate) = 50296
+SHA256 (rust/crates/signal-hook-mio-0.2.4.crate) = 34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd
+SIZE (rust/crates/signal-hook-mio-0.2.4.crate) = 9314
+SHA256 (rust/crates/signal-hook-registry-1.4.2.crate) = a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1
+SIZE (rust/crates/signal-hook-registry-1.4.2.crate) = 18064
+SHA256 (rust/crates/simple-error-0.3.1.crate) = 7e2accd2c41a0e920d2abd91b2badcfa1da784662f54fbc47e0e3a51f1e2e1cf
+SIZE (rust/crates/simple-error-0.3.1.crate) = 9862
+SHA256 (rust/crates/smallvec-1.14.0.crate) = 7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd
+SIZE (rust/crates/smallvec-1.14.0.crate) = 35561
+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.100.crate) = b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0
+SIZE (rust/crates/syn-2.0.100.crate) = 297947
+SHA256 (rust/crates/sysinfo-0.33.1.crate) = 4fc858248ea01b66f19d8e8a6d55f41deaf91e9d495246fd01368d99935c6c01
+SIZE (rust/crates/sysinfo-0.33.1.crate) = 197268
+SHA256 (rust/crates/thiserror-1.0.69.crate) = b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52
+SIZE (rust/crates/thiserror-1.0.69.crate) = 22198
+SHA256 (rust/crates/thiserror-2.0.12.crate) = 567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708
+SIZE (rust/crates/thiserror-2.0.12.crate) = 28693
+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.12.crate) = 7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d
+SIZE (rust/crates/thiserror-impl-2.0.12.crate) = 21141
+SHA256 (rust/crates/time-0.3.41.crate) = 8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40
+SIZE (rust/crates/time-0.3.41.crate) = 138369
+SHA256 (rust/crates/time-core-0.1.4.crate) = c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c
+SIZE (rust/crates/time-core-0.1.4.crate) = 8422
+SHA256 (rust/crates/time-macros-0.2.22.crate) = 3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49
+SIZE (rust/crates/time-macros-0.2.22.crate) = 24604
+SHA256 (rust/crates/toml-0.8.20.crate) = cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148
+SIZE (rust/crates/toml-0.8.20.crate) = 51095
+SHA256 (rust/crates/toml_datetime-0.6.8.crate) = 0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41
+SIZE (rust/crates/toml_datetime-0.6.8.crate) = 12028
+SHA256 (rust/crates/toml_edit-0.22.24.crate) = 17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474
+SIZE (rust/crates/toml_edit-0.22.24.crate) = 106399
+SHA256 (rust/crates/tui-tree-widget-0.23.0.crate) = fcc95ebc9c578c67223514d0e10a75c3b996d1f22dc93a4792475260f7c3c11e
+SIZE (rust/crates/tui-tree-widget-0.23.0.crate) = 21234
+SHA256 (rust/crates/unicode-ident-1.0.18.crate) = 5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512
+SIZE (rust/crates/unicode-ident-1.0.18.crate) = 47743
+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/vergen-9.0.4.crate) = e0d2f179f8075b805a43a2a21728a46f0cc2921b3c58695b28fa8817e103cd9a
+SIZE (rust/crates/vergen-9.0.4.crate) = 33518
+SHA256 (rust/crates/vergen-lib-0.1.6.crate) = 9b07e6010c0f3e59fcb164e0163834597da68d1f864e2b8ca49f74de01e9c166
+SIZE (rust/crates/vergen-lib-0.1.6.crate) = 20754
+SHA256 (rust/crates/version_check-0.9.5.crate) = 0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a
+SIZE (rust/crates/version_check-0.9.5.crate) = 15554
+SHA256 (rust/crates/walkdir-2.5.0.crate) = 29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b
+SIZE (rust/crates/walkdir-2.5.0.crate) = 23951
+SHA256 (rust/crates/wasi-0.11.0+wasi-snapshot-preview1.crate) = 9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423
+SIZE (rust/crates/wasi-0.11.0+wasi-snapshot-preview1.crate) = 28131
+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.9.crate) = cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb
+SIZE (rust/crates/winapi-util-0.1.9.crate) = 12464
+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-0.57.0.crate) = 12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143
+SIZE (rust/crates/windows-0.57.0.crate) = 9694564
+SHA256 (rust/crates/windows-core-0.57.0.crate) = d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d
+SIZE (rust/crates/windows-core-0.57.0.crate) = 53695
+SHA256 (rust/crates/windows-implement-0.57.0.crate) = 9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7
+SIZE (rust/crates/windows-implement-0.57.0.crate) = 10470
+SHA256 (rust/crates/windows-interface-0.57.0.crate) = 29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7
+SIZE (rust/crates/windows-interface-0.57.0.crate) = 10931
+SHA256 (rust/crates/windows-result-0.1.2.crate) = 5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8
+SIZE (rust/crates/windows-result-0.1.2.crate) = 10601
+SHA256 (rust/crates/windows-sys-0.52.0.crate) = 282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d
+SIZE (rust/crates/windows-sys-0.52.0.crate) = 2576877
+SHA256 (rust/crates/windows-sys-0.59.0.crate) = 1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b
+SIZE (rust/crates/windows-sys-0.59.0.crate) = 2387323
+SHA256 (rust/crates/windows-targets-0.52.6.crate) = 9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973
+SIZE (rust/crates/windows-targets-0.52.6.crate) = 6403
+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_msvc-0.52.6.crate) = 09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469
+SIZE (rust/crates/windows_aarch64_msvc-0.52.6.crate) = 832615
+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_gnullvm-0.52.6.crate) = 0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66
+SIZE (rust/crates/windows_i686_gnullvm-0.52.6.crate) = 475940
+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_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_gnullvm-0.52.6.crate) = 24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d
+SIZE (rust/crates/windows_x86_64_gnullvm-0.52.6.crate) = 435707
+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/winnow-0.7.4.crate) = 0e97b544156e9bebe1a0ffbc03484fc1ffe3100cbce3ffb17eac35f7cdd7ab36
+SIZE (rust/crates/winnow-0.7.4.crate) = 173588
+SHA256 (fioncat-otree-v0.4.0_GH0.tar.gz) = d1bfb69c22b667a3102a33e879175cb2a883456123fafdb5cf2fdbbf23fbab10
+SIZE (fioncat-otree-v0.4.0_GH0.tar.gz) = 184467
diff --git a/textproc/otree/pkg-descr b/textproc/otree/pkg-descr
new file mode 100644
index 000000000000..4602f36462d1
--- /dev/null
+++ b/textproc/otree/pkg-descr
@@ -0,0 +1,4 @@
+otree is a command line tool to view objects (JSON/YAML/TOML) in a
+terminal-based tree widget. It provides an interactive TUI interface
+for exploring complex nested configuration files, particularly useful
+for viewing Kubernetes YAML files and other structured data formats.
diff --git a/textproc/ov/Makefile b/textproc/ov/Makefile
index 4ed5c7f876fc..5578d7572eb2 100644
--- a/textproc/ov/Makefile
+++ b/textproc/ov/Makefile
@@ -1,7 +1,7 @@
PORTNAME= ov
DISTVERSIONPREFIX= v
DISTVERSION= 0.15.0
-PORTREVISION= 15
+PORTREVISION= 16
CATEGORIES= textproc
MAINTAINER= lcook@FreeBSD.org
diff --git a/textproc/p5-BibTeX-Parser/Makefile b/textproc/p5-BibTeX-Parser/Makefile
index 32a08239f3e1..b61a676e591a 100644
--- a/textproc/p5-BibTeX-Parser/Makefile
+++ b/textproc/p5-BibTeX-Parser/Makefile
@@ -1,5 +1,5 @@
PORTNAME= BibTeX-Parser
-PORTVERSION= 1.05
+PORTVERSION= 1.92
CATEGORIES= textproc perl5
MASTER_SITES= CPAN
MASTER_SITE_SUBDIR= CPAN:BORISV
diff --git a/textproc/p5-BibTeX-Parser/distinfo b/textproc/p5-BibTeX-Parser/distinfo
index 8120ac4f3aca..05a48bf36b99 100644
--- a/textproc/p5-BibTeX-Parser/distinfo
+++ b/textproc/p5-BibTeX-Parser/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1725380314
-SHA256 (BibTeX-Parser-1.05.tar.gz) = aeccaac35b16f27102c414219c07c3dcb2ef0e3d78d82d13f6a98b1f00d4c16f
-SIZE (BibTeX-Parser-1.05.tar.gz) = 27975
+TIMESTAMP = 1752262879
+SHA256 (BibTeX-Parser-1.92.tar.gz) = 5995391d232d75c846456eaf23c385d156bf4c0f98aa6ac7a21de4575a324763
+SIZE (BibTeX-Parser-1.92.tar.gz) = 28819
diff --git a/textproc/p5-BibTeX-Parser/files/patch-lib_BibTeX_Parser_Author.pm b/textproc/p5-BibTeX-Parser/files/patch-lib_BibTeX_Parser_Author.pm
new file mode 100644
index 000000000000..0051d3abf59e
--- /dev/null
+++ b/textproc/p5-BibTeX-Parser/files/patch-lib_BibTeX_Parser_Author.pm
@@ -0,0 +1,11 @@
+--- lib/BibTeX/Parser/Author.pm.orig 2025-07-11 19:47:50 UTC
++++ lib/BibTeX/Parser/Author.pm
+@@ -5,7 +5,7 @@ use strict;
+
+ use warnings;
+ use strict;
+-use BibTeX::Parser qw (_split_braced_string);
++use BibTeX::Parser;
+
+ use overload
+ '""' => \&to_string;
diff --git a/textproc/p5-BibTeX-Parser/files/patch-lib_BibTeX_Parser_Entry.pm b/textproc/p5-BibTeX-Parser/files/patch-lib_BibTeX_Parser_Entry.pm
new file mode 100644
index 000000000000..6da048ae52a8
--- /dev/null
+++ b/textproc/p5-BibTeX-Parser/files/patch-lib_BibTeX_Parser_Entry.pm
@@ -0,0 +1,11 @@
+--- lib/BibTeX/Parser/Entry.pm.orig 2025-07-11 19:47:56 UTC
++++ lib/BibTeX/Parser/Entry.pm
+@@ -7,7 +7,7 @@ use BibTeX::Parser::Author;
+ use strict;
+
+ use BibTeX::Parser::Author;
+-use BibTeX::Parser qw (_split_braced_string);
++use BibTeX::Parser;
+
+ sub new {
+ my ($class, $type, $key, $parse_ok, $fieldsref) = @_;
diff --git a/textproc/peco/Makefile b/textproc/peco/Makefile
index 4183f1941f8e..2564b9608bbb 100644
--- a/textproc/peco/Makefile
+++ b/textproc/peco/Makefile
@@ -1,7 +1,7 @@
PORTNAME= peco
DISTVERSIONPREFIX= v
DISTVERSION= 0.5.11
-PORTREVISION= 15
+PORTREVISION= 16
CATEGORIES= textproc
MAINTAINER= tagattie@FreeBSD.org
diff --git a/textproc/pup/Makefile b/textproc/pup/Makefile
index 9506a6686381..e0461ba76bdc 100644
--- a/textproc/pup/Makefile
+++ b/textproc/pup/Makefile
@@ -2,7 +2,7 @@ PORTNAME= pup
DISTVERSIONPREFIX= v
DISTVERSION= 0.4.0-10
DISTVERSIONSUFFIX= -g681d7bb
-PORTREVISION= 27
+PORTREVISION= 28
CATEGORIES= textproc
PATCH_SITES= https://github.com/ericchiang/pup/pull/
PATCHFILES= 107.patch:-p1 \
diff --git a/textproc/py-cyclonedx-python-lib/Makefile b/textproc/py-cyclonedx-python-lib/Makefile
index 0e87f47b2d16..3a6b59810eac 100644
--- a/textproc/py-cyclonedx-python-lib/Makefile
+++ b/textproc/py-cyclonedx-python-lib/Makefile
@@ -1,5 +1,5 @@
PORTNAME= cyclonedx-python-lib
-PORTVERSION= 10.3.0
+PORTVERSION= 10.4.1
CATEGORIES= textproc python
MASTER_SITES= PYPI \
https://github.com/CycloneDX/cyclonedx-python-lib/releases/download/v${PORTVERSION}/
@@ -29,9 +29,17 @@ JSON_VALIDATION_DESC= JSON validation
VALIDATION_DESC= JSON and XML validation
XML_VALIDATION_DESC= XML validation
-JSON_VALIDATION_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}jsonschema>=4.18<5:devel/py-jsonschema@${PY_FLAVOR}
+JSON_VALIDATION_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}jsonschema>=4.18<5:devel/py-jsonschema@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}referencing>=0.28.4:devel/py-referencing@${PY_FLAVOR}
VALIDATION_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}jsonschema>=4.18<5:devel/py-jsonschema@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}lxml>=4<7:devel/py-lxml@${PY_FLAVOR}
+ ${PYTHON_PKGNAMEPREFIX}lxml>=4<7:devel/py-lxml@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}referencing>=0.28.4:devel/py-referencing@${PY_FLAVOR}
XML_VALIDATION_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}lxml>=4<7:devel/py-lxml@${PY_FLAVOR}
-.include <bsd.port.mk>
+.include <bsd.port.pre.mk>
+
+.if ${PYTHON_REL} < 31300
+RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}typing-extensions>=4.6<5:devel/py-typing-extensions@${PY_FLAVOR}
+.endif
+
+.include <bsd.port.post.mk>
diff --git a/textproc/py-cyclonedx-python-lib/distinfo b/textproc/py-cyclonedx-python-lib/distinfo
index 886a1be1f1db..68b3e7519f6a 100644
--- a/textproc/py-cyclonedx-python-lib/distinfo
+++ b/textproc/py-cyclonedx-python-lib/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1751375063
-SHA256 (cyclonedx_python_lib-10.3.0.tar.gz) = d9f207bdddacbf5c22d50a0b4e0c878aee578e5452dae2b46f64729a438e9e05
-SIZE (cyclonedx_python_lib-10.3.0.tar.gz) = 1039738
+TIMESTAMP = 1752266168
+SHA256 (cyclonedx_python_lib-10.4.1.tar.gz) = ee017dee867ffb9b449b955161fd235a7c6245e87a5169998e10a0ce61292efb
+SIZE (cyclonedx_python_lib-10.4.1.tar.gz) = 1040510
diff --git a/textproc/py-dict2xml/Makefile b/textproc/py-dict2xml/Makefile
index 376ca82af98e..b5c60d2ed620 100644
--- a/textproc/py-dict2xml/Makefile
+++ b/textproc/py-dict2xml/Makefile
@@ -1,6 +1,6 @@
PORTNAME= dict2xml
DISTVERSIONPREFIX=release-
-DISTVERSION= 1.7.6
+DISTVERSION= 1.7.7
CATEGORIES= textproc devel python
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
diff --git a/textproc/py-dict2xml/distinfo b/textproc/py-dict2xml/distinfo
index 47e220c717db..d5689202e583 100644
--- a/textproc/py-dict2xml/distinfo
+++ b/textproc/py-dict2xml/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1723150232
-SHA256 (delfick-python-dict2xml-release-1.7.6_GH0.tar.gz) = 5064bce88904747d326405375e0600e07525443598c692eb9e64ad95c921722d
-SIZE (delfick-python-dict2xml-release-1.7.6_GH0.tar.gz) = 16953
+TIMESTAMP = 1752221490
+SHA256 (delfick-python-dict2xml-release-1.7.7_GH0.tar.gz) = fdef1d7ebf752bd3941b6d6a732522f50f9dc219061420a761a8e8b9f81d7971
+SIZE (delfick-python-dict2xml-release-1.7.7_GH0.tar.gz) = 16790
diff --git a/textproc/py-emeraldtree/Makefile b/textproc/py-emeraldtree/Makefile
index 8967e1bb2e6e..a92b81a20063 100644
--- a/textproc/py-emeraldtree/Makefile
+++ b/textproc/py-emeraldtree/Makefile
@@ -4,7 +4,7 @@ CATEGORIES= textproc python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
-MAINTAINER= bofh@FreeBSD.org
+MAINTAINER= ports@FreeBSD.org
COMMENT= Light-weight toolkit for XML processing
WWW= https://github.com/moinwiki/emeraldtree
diff --git a/textproc/py-gi-docgen/Makefile b/textproc/py-gi-docgen/Makefile
index 2fef1a14cab2..ef1f2857b104 100644
--- a/textproc/py-gi-docgen/Makefile
+++ b/textproc/py-gi-docgen/Makefile
@@ -1,6 +1,5 @@
PORTNAME= gi-docgen
-PORTVERSION= 2024.1
-PORTREVISION= 1
+PORTVERSION= 2025.4
CATEGORIES= textproc python
MASTER_SITES= GNOME
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
diff --git a/textproc/py-gi-docgen/distinfo b/textproc/py-gi-docgen/distinfo
index f201b325ed0f..dab92c066818 100644
--- a/textproc/py-gi-docgen/distinfo
+++ b/textproc/py-gi-docgen/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1730909228
-SHA256 (gi-docgen-2024.1.tar.xz) = 870c77f9620462cce49e35542a42dc1612fc858733e83dbbe248c535458aec1e
-SIZE (gi-docgen-2024.1.tar.xz) = 2002184
+TIMESTAMP = 1751553139
+SHA256 (gi-docgen-2025.4.tar.xz) = 66c865d459febdfb5e4078a88df06183620c3e91f726d1dc608d88ee3605526e
+SIZE (gi-docgen-2025.4.tar.xz) = 2003576
diff --git a/textproc/py-jinjanator-plugins/Makefile b/textproc/py-jinjanator-plugins/Makefile
new file mode 100644
index 000000000000..b1dcf5562cef
--- /dev/null
+++ b/textproc/py-jinjanator-plugins/Makefile
@@ -0,0 +1,24 @@
+PORTNAME= jinjanator-plugins
+DISTVERSION= 24.2.0
+CATEGORIES= textproc python
+MASTER_SITES= PYPI
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+DISTNAME= ${PORTNAME:S/-/_/g}-${DISTVERSION}
+
+MAINTAINER= otis@FreeBSD.org
+COMMENT= Plugins toolkit for jinjanator tool
+WWW= https://github.com/kpfleming/jinjanator-plugins
+
+LICENSE= APACHE20
+
+BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}hatch-fancy-pypi-readme>=0:devel/py-hatch-fancy-pypi-readme@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}hatch-vcs>=0:devel/py-hatch-vcs@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}hatchling>=0:devel/py-hatchling@${PY_FLAVOR}
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}attrs>0:devel/py-attrs@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}pluggy>0:devel/py-pluggy@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}typing-extensions>0:devel/py-typing-extensions@${PY_FLAVOR}
+
+USES= python
+USE_PYTHON= autoplist concurrent pep517
+
+.include <bsd.port.mk>
diff --git a/textproc/py-jinjanator-plugins/distinfo b/textproc/py-jinjanator-plugins/distinfo
new file mode 100644
index 000000000000..5fc09b94d771
--- /dev/null
+++ b/textproc/py-jinjanator-plugins/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1752142398
+SHA256 (jinjanator_plugins-24.2.0.tar.gz) = 5fa8eecb6d9fbef5e7947b3820da4bd7b2ef3f102721e42382de5e71e52b409a
+SIZE (jinjanator_plugins-24.2.0.tar.gz) = 16832
diff --git a/textproc/py-jinjanator-plugins/pkg-descr b/textproc/py-jinjanator-plugins/pkg-descr
new file mode 100644
index 000000000000..45270ff6665b
--- /dev/null
+++ b/textproc/py-jinjanator-plugins/pkg-descr
@@ -0,0 +1,3 @@
+jinjanator can be extended through the use of plugins; these are Python
+packages installed into the same environment as the tool itself, which use
+special markers to 'hook' into various features.
diff --git a/textproc/py-jinjanator/Makefile b/textproc/py-jinjanator/Makefile
new file mode 100644
index 000000000000..69d9680e553d
--- /dev/null
+++ b/textproc/py-jinjanator/Makefile
@@ -0,0 +1,27 @@
+PORTNAME= jinjanator
+DISTVERSION= 25.2.0
+CATEGORIES= textproc python
+MASTER_SITES= PYPI
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER= otis@FreeBSD.org
+COMMENT= CLI tool to render Jinja2 templates
+WWW= https://github.com/kpfleming/jinjanator
+
+LICENSE= APACHE20 BSD2CLAUSE
+LICENSE_COMB= multi
+
+BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}hatch-fancy-pypi-readme>=0:devel/py-hatch-fancy-pypi-readme@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}hatch-vcs>=0:devel/py-hatch-vcs@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}hatchling>=0:devel/py-hatchling@${PY_FLAVOR}
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}attrs>0:devel/py-attrs@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}Jinja2>0:devel/py-Jinja2@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}jinjanator-plugins>0:textproc/py-jinjanator-plugins@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}python-dotenv>0:www/py-python-dotenv@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}pyyaml>0:devel/py-pyyaml@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}typing-extensions>0:devel/py-typing-extensions@${PY_FLAVOR}
+
+USES= python
+USE_PYTHON= autoplist pep517
+
+.include <bsd.port.mk>
diff --git a/textproc/py-jinjanator/distinfo b/textproc/py-jinjanator/distinfo
new file mode 100644
index 000000000000..7a4d10358fb2
--- /dev/null
+++ b/textproc/py-jinjanator/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1752064750
+SHA256 (jinjanator-25.2.0.tar.gz) = d3df38c267f9274ad5460a4f29b88b460de40a9155dfc9b28633c38ac42df766
+SIZE (jinjanator-25.2.0.tar.gz) = 30538
diff --git a/textproc/py-jinjanator/files/patch-pyproject.toml b/textproc/py-jinjanator/files/patch-pyproject.toml
new file mode 100644
index 000000000000..bd3163fa6db1
--- /dev/null
+++ b/textproc/py-jinjanator/files/patch-pyproject.toml
@@ -0,0 +1,11 @@
+--- pyproject.toml.orig 2025-07-10 10:14:00 UTC
++++ pyproject.toml
+@@ -3,7 +3,7 @@ requires = [
+ requires = [
+ "hatch-fancy-pypi-readme",
+ "hatch-vcs",
+- "hatchling<1.27",
++ "hatchling<1.28",
+ ]
+
+ [project]
diff --git a/textproc/py-jinjanator/pkg-descr b/textproc/py-jinjanator/pkg-descr
new file mode 100644
index 000000000000..0da081605584
--- /dev/null
+++ b/textproc/py-jinjanator/pkg-descr
@@ -0,0 +1,3 @@
+Jinjanator is a CLI tool to render Jinja2 templates. It is a fork of j2cli,
+which itself was a fork of jinja2-cli, both of which are no longer actively
+maintained.
diff --git a/textproc/py-license-expression/Makefile b/textproc/py-license-expression/Makefile
index 7f1999805593..bd0fb745f3fa 100644
--- a/textproc/py-license-expression/Makefile
+++ b/textproc/py-license-expression/Makefile
@@ -1,5 +1,5 @@
PORTNAME= license-expression
-DISTVERSION= 30.4.1
+DISTVERSION= 30.4.3
CATEGORIES= textproc python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
diff --git a/textproc/py-license-expression/distinfo b/textproc/py-license-expression/distinfo
index d013ea622d57..8fdd05a2eda9 100644
--- a/textproc/py-license-expression/distinfo
+++ b/textproc/py-license-expression/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1743833802
-SHA256 (license_expression-30.4.1.tar.gz) = 9f02105f9e0fcecba6a85dfbbed7d94ea1c3a70cf23ddbfb5adf3438a6f6fce0
-SIZE (license_expression-30.4.1.tar.gz) = 177184
+TIMESTAMP = 1751267545
+SHA256 (license_expression-30.4.3.tar.gz) = 49f439fea91c4d1a642f9f2902b58db1d42396c5e331045f41ce50df9b40b1f2
+SIZE (license_expression-30.4.3.tar.gz) = 183031
diff --git a/textproc/py-petl/Makefile b/textproc/py-petl/Makefile
index 619e11063741..8dbf2846432a 100644
--- a/textproc/py-petl/Makefile
+++ b/textproc/py-petl/Makefile
@@ -1,5 +1,5 @@
PORTNAME= petl
-PORTVERSION= 1.7.16
+PORTVERSION= 1.7.17
CATEGORIES= textproc python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
diff --git a/textproc/py-petl/distinfo b/textproc/py-petl/distinfo
index ddee92ee402f..7befdf7e995e 100644
--- a/textproc/py-petl/distinfo
+++ b/textproc/py-petl/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1744289042
-SHA256 (petl-1.7.16.tar.gz) = 9c2fea64d859da45e120fd86d471e5387396cc45d5d4986efa79679f18eb8752
-SIZE (petl-1.7.16.tar.gz) = 420780
+TIMESTAMP = 1752266170
+SHA256 (petl-1.7.17.tar.gz) = 802696187c2ef35894c4acf3c0ff9fecff6035cb335944c194416b9a18e8390b
+SIZE (petl-1.7.17.tar.gz) = 424376
diff --git a/textproc/rubygem-amatch/Makefile b/textproc/rubygem-amatch/Makefile
index 876842d63adb..c93910295b57 100644
--- a/textproc/rubygem-amatch/Makefile
+++ b/textproc/rubygem-amatch/Makefile
@@ -1,5 +1,5 @@
PORTNAME= amatch
-PORTVERSION= 0.4.1
+PORTVERSION= 0.4.2
CATEGORIES= textproc rubygems
MASTER_SITES= RG
diff --git a/textproc/rubygem-amatch/distinfo b/textproc/rubygem-amatch/distinfo
index ecee9c5780ba..447f3c8493f6 100644
--- a/textproc/rubygem-amatch/distinfo
+++ b/textproc/rubygem-amatch/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1653151290
-SHA256 (rubygem/amatch-0.4.1.gem) = d3ff15226a2e627c72802e94579db829e5e10c96cf89d329494caec5889145f7
-SIZE (rubygem/amatch-0.4.1.gem) = 38912
+TIMESTAMP = 1752266276
+SHA256 (rubygem/amatch-0.4.2.gem) = 5a7c8c08882864621b81bf3bbc0447bb638afe6066ceeead6b9d11f34cf0d911
+SIZE (rubygem/amatch-0.4.2.gem) = 38912
diff --git a/textproc/rubygem-cucumber-gherkin/Makefile b/textproc/rubygem-cucumber-gherkin/Makefile
index 7402ae3aa790..50475aa57c88 100644
--- a/textproc/rubygem-cucumber-gherkin/Makefile
+++ b/textproc/rubygem-cucumber-gherkin/Makefile
@@ -1,5 +1,5 @@
PORTNAME= cucumber-gherkin
-PORTVERSION= 32.1.2
+PORTVERSION= 33.0.0
CATEGORIES= textproc rubygems
MASTER_SITES= RG
@@ -10,7 +10,7 @@ WWW= https://github.com/cucumber/gherkin
LICENSE= MIT
LICENSE_FILE= ${WRKSRC}/LICENSE
-RUN_DEPENDS= rubygem-cucumber-messages>=25<28:devel/rubygem-cucumber-messages
+RUN_DEPENDS= rubygem-cucumber-messages>=25<29:devel/rubygem-cucumber-messages
USES= gem
diff --git a/textproc/rubygem-cucumber-gherkin/distinfo b/textproc/rubygem-cucumber-gherkin/distinfo
index 9ef959df8a5b..b349ed1d9fe2 100644
--- a/textproc/rubygem-cucumber-gherkin/distinfo
+++ b/textproc/rubygem-cucumber-gherkin/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1748496003
-SHA256 (rubygem/cucumber-gherkin-32.1.2.gem) = 53e7b33100ecbb64926cfa67c67f8196bbe96b7672a2d9a822e2d8dbde5770e5
-SIZE (rubygem/cucumber-gherkin-32.1.2.gem) = 32256
+TIMESTAMP = 1752266252
+SHA256 (rubygem/cucumber-gherkin-33.0.0.gem) = 04fcbcd6d890441d456c7dea67500851f367f213bd2036c8de5c75e92c2a6165
+SIZE (rubygem/cucumber-gherkin-33.0.0.gem) = 32256
diff --git a/textproc/rubygem-cucumber-gherkin30/Makefile b/textproc/rubygem-cucumber-gherkin30/Makefile
index e0c0baa18400..e654f8ca3625 100644
--- a/textproc/rubygem-cucumber-gherkin30/Makefile
+++ b/textproc/rubygem-cucumber-gherkin30/Makefile
@@ -1,5 +1,6 @@
PORTNAME= cucumber-gherkin
PORTVERSION= 30.0.4
+PORTREVISION= 1
CATEGORIES= textproc rubygems
MASTER_SITES= RG
PKGNAMESUFFIX= 30
@@ -11,7 +12,7 @@ WWW= https://github.com/cucumber/gherkin
LICENSE= MIT
LICENSE_FILE= ${WRKSRC}/LICENSE
-RUN_DEPENDS= rubygem-cucumber-messages>=25<28:devel/rubygem-cucumber-messages
+RUN_DEPENDS= rubygem-cucumber-messages27>=25<28:devel/rubygem-cucumber-messages27
USES= gem
diff --git a/textproc/rubygem-cucumber-html-formatter/Makefile b/textproc/rubygem-cucumber-html-formatter/Makefile
index dcd9e13665a7..8e6924f4c489 100644
--- a/textproc/rubygem-cucumber-html-formatter/Makefile
+++ b/textproc/rubygem-cucumber-html-formatter/Makefile
@@ -1,5 +1,5 @@
PORTNAME= cucumber-html-formatter
-PORTVERSION= 21.12.0
+PORTVERSION= 21.13.0
CATEGORIES= textproc rubygems
MASTER_SITES= RG
@@ -9,7 +9,7 @@ WWW= https://github.com/cucumber/html-formatter
LICENSE= MIT
-RUN_DEPENDS= rubygem-cucumber-messages>=19<28:devel/rubygem-cucumber-messages
+RUN_DEPENDS= rubygem-cucumber-messages27>=19<28:devel/rubygem-cucumber-messages27
USES= gem
diff --git a/textproc/rubygem-cucumber-html-formatter/distinfo b/textproc/rubygem-cucumber-html-formatter/distinfo
index 4625f346c247..1337bbe65bff 100644
--- a/textproc/rubygem-cucumber-html-formatter/distinfo
+++ b/textproc/rubygem-cucumber-html-formatter/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1751208236
-SHA256 (rubygem/cucumber-html-formatter-21.12.0.gem) = 17db4083fb724d286b0d01db91ea165c4214222260d57d548320ad8d792341f7
-SIZE (rubygem/cucumber-html-formatter-21.12.0.gem) = 283648
+TIMESTAMP = 1752266254
+SHA256 (rubygem/cucumber-html-formatter-21.13.0.gem) = 882e20b7da8642d6284112bcc837cb96738490086bac227137f543eae587ee4d
+SIZE (rubygem/cucumber-html-formatter-21.13.0.gem) = 283648
diff --git a/textproc/saxon-he/Makefile b/textproc/saxon-he/Makefile
index a1e8773de518..b2ef13b8f515 100644
--- a/textproc/saxon-he/Makefile
+++ b/textproc/saxon-he/Makefile
@@ -1,7 +1,8 @@
PORTNAME= saxon-he
-DISTVERSION= 12-6
+DISTVERSION= 12-8
+PORTREVISION= 1
CATEGORIES= textproc java
-MASTER_SITES= https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/releases/download/SaxonHE${DISTVERSION}/
+MASTER_SITES= https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/releases/download/SaxonHE-${DISTVERSION}/
DISTNAME= SaxonHE${DISTVERSION}J
MAINTAINER= thierry@FreeBSD.org
@@ -21,18 +22,33 @@ NO_WRKSUBDIR= yes
NO_ARCH= yes
NO_BUILD= yes
+_XMLRESOLVER_VER=5.3.3
JARFILES= ${JARFILES1} ${JARFILES2}
JARFILES1= saxon-he-${PORTVERSION}.jar \
saxon-he-test-${PORTVERSION}.jar \
saxon-he-xqj-${PORTVERSION}.jar
JARFILES2= jline-2.14.6.jar \
- xmlresolver-5.3.1.jar \
- xmlresolver-5.3.1-data.jar
-PLIST_FILES= ${JARFILES:S,^,%%JAVAJARDIR%%/,}
+ xmlresolver-${_XMLRESOLVER_VER}.jar \
+ xmlresolver-${_XMLRESOLVER_VER}-data.jar
+PLIST_FILES= ${JARFILES:S,^,%%JAVAJARDIR%%/,} ${SCRIPTFILES}
+
+SUB_FILES= saxon.sh
+SUB_LIST= SAXON_JARS="${JARFILES:S,^,${JAVAJARDIR}/,:ts:}"
+SCRIPTFILES= bin/saxon bin/saxon-xquery
do-install:
@${MKDIR} ${STAGEDIR}${JAVAJARDIR}
${INSTALL_DATA} ${JARFILES1:S,^,${WRKSRC}/,} ${STAGEDIR}${JAVAJARDIR}
${INSTALL_DATA} ${JARFILES2:S,^,${WRKSRC}/lib/,} ${STAGEDIR}${JAVAJARDIR}
+ ${INSTALL_SCRIPT} ${WRKDIR}/saxon.sh ${STAGEDIR}${PREFIX}/bin/saxon
+ ${RLN} ${STAGEDIR}${PREFIX}/bin/saxon ${STAGEDIR}${PREFIX}/bin/saxon-xquery
+
+post-stage:
+# smoke test so we're sure we can load all required classes
+# (12.0 and 12.6 didn't work with OpenJDK 8)
+ ${STAGEDIR}${PREFIX}/bin/saxon-xquery -? 2>&1 | ${HEAD} -n1
+ ${STAGEDIR}${PREFIX}/bin/saxon -? 2>&1 | ${HEAD} -n1
+ ${JAVA} -cp '${STAGEDIR}${JAVAJARDIR}/*' net.sf.saxon.Transform -? 2>&1 \
+ | ${HEAD} -n1
.include <bsd.port.mk>
diff --git a/textproc/saxon-he/distinfo b/textproc/saxon-he/distinfo
index 038367d9de9b..88406974656b 100644
--- a/textproc/saxon-he/distinfo
+++ b/textproc/saxon-he/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1746715463
-SHA256 (SaxonHE12-6J.zip) = cbb6657da061c155476ad9e43a3564a4cc928d4951ebeed2eafe5a0aa74e2aee
-SIZE (SaxonHE12-6J.zip) = 7248220
+TIMESTAMP = 1752488672
+SHA256 (SaxonHE12-8J.zip) = 2ba851aec7925b882208182c48c936230205d558e335636bbe46626bd8003598
+SIZE (SaxonHE12-8J.zip) = 7208886
diff --git a/textproc/saxon-he/files/saxon.sh.in b/textproc/saxon-he/files/saxon.sh.in
new file mode 100644
index 000000000000..8371776b80f2
--- /dev/null
+++ b/textproc/saxon-he/files/saxon.sh.in
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+IAM="`basename "$0"`"
+
+if [ saxon-xquery = "${IAM}" ]
+then
+ LAUNCHER_CLASS="net.sf.saxon.Query"
+else
+ LAUNCHER_CLASS="net.sf.saxon.Transform"
+fi
+
+exec "%%LOCALBASE%%/bin/java" -classpath "%%SAXON_JARS%%" "${LAUNCHER_CLASS}" "$@"
diff --git a/textproc/sift/Makefile b/textproc/sift/Makefile
index b9457b2fc3ca..23849448a7b3 100644
--- a/textproc/sift/Makefile
+++ b/textproc/sift/Makefile
@@ -1,7 +1,7 @@
PORTNAME= sift
PORTVERSION= 0.9.0
DISTVERSIONPREFIX= v
-PORTREVISION= 49
+PORTREVISION= 50
CATEGORIES= textproc
MAINTAINER= sunpoet@FreeBSD.org
diff --git a/textproc/television/Makefile b/textproc/television/Makefile
index 04829059e6c2..e6229c23e512 100644
--- a/textproc/television/Makefile
+++ b/textproc/television/Makefile
@@ -3,7 +3,7 @@ DISTVERSION= 0.11.9
PORTREVISION= 2
CATEGORIES= textproc
-MAINTAINER= nxjoseph@protonmail.com
+MAINTAINER= uzsolt@FreeBSD.org
COMMENT= Fast and extensible general purpose fuzzy finder TUI
WWW= https://github.com/alexpasmantier/television
diff --git a/textproc/textnote/Makefile b/textproc/textnote/Makefile
index a787f1295ca9..e9a1b800943c 100644
--- a/textproc/textnote/Makefile
+++ b/textproc/textnote/Makefile
@@ -1,7 +1,7 @@
PORTNAME= textnote
DISTVERSIONPREFIX= v
DISTVERSION= 1.3.0
-PORTREVISION= 26
+PORTREVISION= 27
CATEGORIES= textproc
MAINTAINER= 0mp@FreeBSD.org
diff --git a/textproc/textql/Makefile b/textproc/textql/Makefile
index 0bb3538ad1e9..5a3f64823ce5 100644
--- a/textproc/textql/Makefile
+++ b/textproc/textql/Makefile
@@ -1,6 +1,6 @@
PORTNAME= textql
PORTVERSION= g20210706
-PORTREVISION= 20
+PORTREVISION= 21
CATEGORIES= textproc
MAINTAINER= ume@FreeBSD.org
diff --git a/textproc/tkdiff/Makefile b/textproc/tkdiff/Makefile
index e43b3eca8f21..6a5cd8bc369a 100644
--- a/textproc/tkdiff/Makefile
+++ b/textproc/tkdiff/Makefile
@@ -1,9 +1,9 @@
PORTNAME= tkdiff
-DISTVERSION= 5-7
+DISTVERSION= 6-0
CATEGORIES= textproc tk
MASTER_SITES= SF
-MAINTAINER= ports@FreeBSD.org
+MAINTAINER= eduardo@FreeBSD.org
COMMENT= Tk frontend for diff(1)
WWW= https://sourceforge.net/projects/tkdiff/
diff --git a/textproc/tkdiff/distinfo b/textproc/tkdiff/distinfo
index 759c248647a7..d33a3b943fdf 100644
--- a/textproc/tkdiff/distinfo
+++ b/textproc/tkdiff/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1741852392
-SHA256 (tkdiff-5-7.zip) = e2dec98e4c2f7c79a1e31290d3deaaa5915f53c8220c05728f282336bb2e405d
-SIZE (tkdiff-5-7.zip) = 290158
+TIMESTAMP = 1751972547
+SHA256 (tkdiff-6-0.zip) = 4fa27c87846c1d6635da5beaa90ce4561638ee25a9169e455175afcf5288e453
+SIZE (tkdiff-6-0.zip) = 306145
diff --git a/textproc/tkdiff/pkg-descr b/textproc/tkdiff/pkg-descr
index 4e30371b4b0e..0d876abe4d76 100644
--- a/textproc/tkdiff/pkg-descr
+++ b/textproc/tkdiff/pkg-descr
@@ -1 +1 @@
-tkdiff is a fronted for Unix's diff based on Tcl/Tk.
+tkdiff is a front end for Unix's diff based on Tcl/Tk.
diff --git a/textproc/trdsql/Makefile b/textproc/trdsql/Makefile
index 1ba18c4c7e3e..ef2f5374e997 100644
--- a/textproc/trdsql/Makefile
+++ b/textproc/trdsql/Makefile
@@ -1,7 +1,7 @@
PORTNAME= trdsql
DISTVERSIONPREFIX= v
DISTVERSION= 0.20.0
-PORTREVISION= 7
+PORTREVISION= 8
CATEGORIES= textproc
MAINTAINER= lcook@FreeBSD.org
diff --git a/textproc/uni/Makefile b/textproc/uni/Makefile
index 949724b0741e..d1f2ac3c3fff 100644
--- a/textproc/uni/Makefile
+++ b/textproc/uni/Makefile
@@ -1,7 +1,7 @@
PORTNAME= uni
PORTVERSION= 2.8.0
DISTVERSIONPREFIX= v
-PORTREVISION= 4
+PORTREVISION= 5
CATEGORIES= textproc
MAINTAINER= thierry@FreeBSD.org
diff --git a/textproc/up/Makefile b/textproc/up/Makefile
index bb71b6fa5252..c4679a5f9447 100644
--- a/textproc/up/Makefile
+++ b/textproc/up/Makefile
@@ -1,7 +1,7 @@
PORTNAME= up
DISTVERSIONPREFIX= v
DISTVERSION= 0.4
-PORTREVISION= 26
+PORTREVISION= 27
CATEGORIES= textproc
MAINTAINER= 0mp@FreeBSD.org
diff --git a/textproc/vale/Makefile b/textproc/vale/Makefile
index 77eccd8b7581..2251d0b2b174 100644
--- a/textproc/vale/Makefile
+++ b/textproc/vale/Makefile
@@ -1,6 +1,7 @@
PORTNAME= vale
DISTVERSIONPREFIX= v
DISTVERSION= 3.12.0
+PORTREVISION= 1
CATEGORIES= textproc
MAINTAINER= bofh@FreeBSD.org
diff --git a/textproc/vgrep/Makefile b/textproc/vgrep/Makefile
index d45e6f356ba8..45c2a6abfb38 100644
--- a/textproc/vgrep/Makefile
+++ b/textproc/vgrep/Makefile
@@ -1,7 +1,7 @@
PORTNAME= vgrep
DISTVERSIONPREFIX= v
DISTVERSION= 2.8.0
-PORTREVISION= 7
+PORTREVISION= 8
CATEGORIES= textproc
MAINTAINER= lcook@FreeBSD.org
diff --git a/textproc/xmlto/Makefile b/textproc/xmlto/Makefile
index cd2e6c55d175..278d599474d7 100644
--- a/textproc/xmlto/Makefile
+++ b/textproc/xmlto/Makefile
@@ -17,6 +17,9 @@ WWW= https://pagure.io/xmlto/
LICENSE= GPLv2
+DEPRECATED= Depends on vulnerable unmaintained libxslt
+EXPIRATION_DATE=2025-09-12
+
BUILD_DEPENDS= ${BASH_CMD}:shells/bash \
${GETOPT_CMD}:misc/getopt \
xmllint:textproc/libxml2 \
@@ -27,8 +30,19 @@ BUILD_DEPENDS= ${BASH_CMD}:shells/bash \
docbook-xml>0:textproc/docbook-xml
RUN_DEPENDS:= ${BUILD_DEPENDS}
+USES= tar:bzip2
+GNU_CONFIGURE= yes
+GNU_CONFIGURE_MANPREFIX=${PREFIX}/share
+CONFIGURE_ARGS= BASH=${BASH_CMD} GETOPT=${GETOPT_CMD} PDFXMLTEX=${PDFXMLTEX_CMD}
+MAKE_ENV+= HOME=/dev/null
+
SUB_FILES= pkg-message
+PORTDOCS= AUTHORS ChangeLog NEWS THANKS
+# these documentation files do not convey information useful for
+# the FreeBSD port at this time, or are provided by the ports framework:
+# PORTDOCS+= COPYING FAQ README
+
OPTIONS_DEFINE= DOCS
OPTIONS_GROUP= BACKEND
OPTIONS_GROUP_BACKEND= DBLATEX FOP PASSIVETEX
@@ -37,21 +51,12 @@ DBLATEX_DESC= Add dependency on DBlatex (DB for DocBook)
FOP_DESC= Add dependency on FOP (requires Java)
PASSIVETEX_DESC= Add dependency on XMLTeX/PassiveTeX
-USES= tar:bzip2
-GNU_CONFIGURE= yes
-GNU_CONFIGURE_MANPREFIX=${PREFIX}/share
-CONFIGURE_ARGS= BASH=${BASH_CMD} GETOPT=${GETOPT_CMD} PDFXMLTEX=${PDFXMLTEX_CMD}
-MAKE_ENV+= HOME=/dev/null
-
BASH_CMD= ${LOCALBASE}/bin/bash
GETOPT_CMD= ${LOCALBASE}/bin/getopt
-XSL_DIR= ${LOCALBASE}/share/xsl/docbook
PDFXMLTEX_CMD= ${LOCALBASE}/bin/pdftex
-
-PORTDOCS= AUTHORS ChangeLog NEWS THANKS
-# these documentation files do not convey information useful for
-# the FreeBSD port at this time, or are provided by the ports framework:
-# PORTDOCS+= COPYING FAQ README
+.ifnmake portclippy
+XSL_DIR= ${LOCALBASE}/share/xsl/docbook
+.endif
.include <bsd.port.pre.mk>
diff --git a/textproc/xxdiff-scripts/Makefile b/textproc/xxdiff-scripts/Makefile
new file mode 100644
index 000000000000..6c6107f365d2
--- /dev/null
+++ b/textproc/xxdiff-scripts/Makefile
@@ -0,0 +1,20 @@
+PORTNAME= xxdiff
+CATEGORIES= textproc
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+PKGNAMESUFFIX= -scripts
+
+MAINTAINER= fuz@FreeBSD.org
+COMMENT= Helper scripts for xxdiff
+WWW= http://furius.ca/xxdiff/doc/xxdiff-scripts.html
+
+LICENSE= GPLv2
+LICENSE_FILE= ${WRKSRC}/COPYING
+
+RUN_DEPENDS= xxdiff:textproc/xxdiff
+
+USES= python
+USE_PYTHON= autoplist distutils
+PYDISTUTILS_PKGNAME= xxdiff-scripts
+MASTERDIR= ${.CURDIR}/../xxdiff
+
+.include "${MASTERDIR}/Makefile.master"
diff --git a/textproc/xxdiff-scripts/pkg-descr b/textproc/xxdiff-scripts/pkg-descr
new file mode 100644
index 000000000000..97ec74448441
--- /dev/null
+++ b/textproc/xxdiff-scripts/pkg-descr
@@ -0,0 +1,13 @@
+xxdiff is a computer program that allows a user (usually a software
+developer of some sort) to easily visualize the differences between
+files. The manner and goal for which this process is applied over
+multiple files is highly dependent on the application, and most of
+the time is driven by custom user scripts.
+
+For example, a configuration management engineer in a company might
+provide some kind of merge policing environment, that allows software
+developers to review changes in files for the purpose of accepting or
+rejecting a submitted changeset to a codebase. Another example is
+that of a developer wishing to review the changes he made to a
+checkout of files from a source-code management system such as CVS,
+Subversion, ClearCase, Perforce, etc.
diff --git a/textproc/xxdiff/Makefile b/textproc/xxdiff/Makefile
new file mode 100644
index 000000000000..762024a6dd6b
--- /dev/null
+++ b/textproc/xxdiff/Makefile
@@ -0,0 +1,45 @@
+PORTNAME= xxdiff
+CATEGORIES= textproc
+
+MAINTAINER= fuz@FreeBSD.org
+COMMENT= Graphical file and directories comparator and merge tool
+WWW= http://furius.ca/xxdiff/
+
+LICENSE= GPLv2
+LICENSE_FILE= ${WRKSRC}/COPYING
+
+FLAVOR?= ${FLAVORS:[1]}
+FLAVORS= qt5 qt6
+qt5_PKGNAMEPREFIX= qt5-
+qt6_PKGNAMEPREFIX= qt6-
+
+USES= bison gl gmake
+USE_GL= gl
+
+.if ${FLAVOR} == qt5
+USES+= qt:5
+USE_QT= core gui buildtools:build qmake:build widgets
+.else
+USES+= qt:6
+USE_QT= base
+.endif
+
+BUILD_WRKSRC= ${WRKSRC}/src
+
+PLIST_FILES= bin/xxdiff
+PORTDOCS= *
+
+OPTIONS_DEFINE= DOCS
+
+pre-build:
+ @(cd ${BUILD_WRKSRC} && ${SETENV} ${MAKE_ENV} QMAKE=${QMAKE} \
+ ${MAKE_CMD} -f Makefile.bootstrap ${MAKE_ARGS} Makefile)
+
+do-install:
+ ${INSTALL_PROGRAM} ${WRKSRC}/bin/xxdiff ${STAGEDIR}${PREFIX}/bin
+
+do-install-DOCS-on:
+ cd ${WRKSRC}/doc && ${COPYTREE_SHARE} "${PORTDOCS} ! -name Makefile" \
+ ${STAGEDIR}/${DOCSDIR}
+
+.include "Makefile.master"
diff --git a/textproc/xxdiff/Makefile.master b/textproc/xxdiff/Makefile.master
new file mode 100644
index 000000000000..a51495b3ffd3
--- /dev/null
+++ b/textproc/xxdiff/Makefile.master
@@ -0,0 +1,10 @@
+PORTVERSION= g20250320
+PORTEPOCH= 1
+
+USE_GITHUB= yes
+GH_ACCOUNT= blais
+GH_TAGNAME= a5593c1c675fb79d0ec2b6e353abba1fb0179aa7
+
+DESCR= ${.CURDIR}/pkg-descr
+
+.include <bsd.port.mk>
diff --git a/textproc/xxdiff/distinfo b/textproc/xxdiff/distinfo
new file mode 100644
index 000000000000..196a6b26ae08
--- /dev/null
+++ b/textproc/xxdiff/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1751631586
+SHA256 (blais-xxdiff-g20250320-a5593c1c675fb79d0ec2b6e353abba1fb0179aa7_GH0.tar.gz) = 11ac99e758b8cccc8ced208a69d7026c32a7b2a5a1f18fcce48521f8cb4d8c9c
+SIZE (blais-xxdiff-g20250320-a5593c1c675fb79d0ec2b6e353abba1fb0179aa7_GH0.tar.gz) = 2057252
diff --git a/textproc/xxdiff/pkg-descr b/textproc/xxdiff/pkg-descr
new file mode 100644
index 000000000000..cf257c7da0d0
--- /dev/null
+++ b/textproc/xxdiff/pkg-descr
@@ -0,0 +1,20 @@
+xxdiff is a graphical tool for viewing the differences between two or three
+files, or between two directories, and can produce a merged version thereof.
+
+Some of its features:
+
+ - Comparing two files, three files, or two directories (shallow and
+ recursive)
+ - Horizontal diffs highlighting
+ - Files can be merged interactively and resulting output visualized
+ and saved
+ - Has features to assist in performing merge reviews/policing
+ - Can unmerge CVS conflicts in automatically merged file and display
+ them as two files, to help resolve conflicts
+ - Uses external diff program to compute differences: works with GNU
+ diff, SGI diff and ClearCase's cleardiff, and any other diff whose
+ output is similar to those
+ - Fully customizable with a resource file
+ - Look-and-feel similar to Rudy Wortel's/SGI xdiff; it is desktop
+ agnostic (i.e. will work equally well with KDE or GNOME)
+ - Features and output that ease integration with scripts
diff --git a/textproc/yamlfmt/Makefile b/textproc/yamlfmt/Makefile
index 8fffadefd4a6..e92b1de43eae 100644
--- a/textproc/yamlfmt/Makefile
+++ b/textproc/yamlfmt/Makefile
@@ -1,6 +1,7 @@
PORTNAME= yamlfmt
DISTVERSIONPREFIX= v
DISTVERSION= 0.17.2
+PORTREVISION= 1
CATEGORIES= textproc
MAINTAINER= meta@FreeBSD.org