diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 9ee9a5b4..d567897a 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -20,6 +20,7 @@ jobs:
           ./configure --with-standalone --bindir=/
           make DESTDIR=. install-exec
           echo VERSION=$(cat .version) >> $GITHUB_ENV
+          sha256sum vcsh-standalone.sh
       - name: Post standalone script artifact
         uses: actions/upload-artifact@v4
         with:
@@ -48,7 +49,7 @@ jobs:
       - name: Configure
         run: |
           ./bootstrap.sh
-          ./configure
+          ./configure --enable-developer-mode
       - name: Run tests
         run: |
           make check
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 45e6bfe3..c2e02750 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -23,7 +23,7 @@ jobs:
           echo "VERSION=${GITHUB_REF#refs/*/v}" >> $GITHUB_ENV
           echo "${GITHUB_REF#refs/*/v}" > .tarball-version
           ./bootstrap.sh
-          ./configure
+          ./configure --enable-developer-mode
       - name: Generate release-specific changelog
         run: |
           echo "PRERELEASE=${{ contains(env.VERSION, '-alpha') || contains(env.VERSION, '-beta') || contains(env.VERSION, '-rc') }}" >> $GITHUB_ENV
@@ -41,8 +41,9 @@ jobs:
           prerelease: ${{ env.PRERELEASE }}
           body_path: changelog-HEAD
           files: |
+            vcsh-${{ env.VERSION }}.tar.zst
             vcsh-${{ env.VERSION }}.zip
-            vcsh-${{ env.VERSION }}.tar.xz
+            vcsh-${{ env.VERSION }}.sha256.txt
 
   deploy-standalone:
     runs-on: ubuntu-latest
@@ -56,9 +57,11 @@ jobs:
           ./bootstrap.sh
           ./configure --with-standalone --bindir=/
           make DESTDIR=. install-exec
+          sha256sum vcsh-standalone.sh | tee vcsh-standalone.sha256.txt
       - name: Add standalone deployment to release
         uses: svenstaro/upload-release-action@v2
         with:
           repo_token: ${{ github.token }}
-          file: vcsh-standalone.sh
           tag: ${{ github.ref }}
+          file_glob: true
+          file: vcsh-standalone.{sh,sha256.txt}
diff --git a/.gitignore b/.gitignore
index 2562f6ab..db46c3d3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
 vcsh.1
+doc/vcsh.1.ronn
 *.patch
 *.swp
 .swp
@@ -16,5 +17,6 @@ completions/vcsh
 config.log
 config.status
 configure
+aminclude.am
 /vcsh
 vcsh-*
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 8cd4d5f3..329b3ec6 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -37,12 +37,16 @@ Harendra Kumar <harendra.kumar@gmail.com>
 James Davidson <james@greycastle.net>
 Jeff Fein-Worton <jeff@fein-worton.com>
 Jochen Keil <jochen.keil@gmail.com>
+John Karahalis <john.karahalis@gmail.com>
+John Whitley <whitley@bangpath.org>
 Jonathan Sternberg <jonathansternberg@gmail.com>
 Julien Lecomte <julien@lecomte.at>
 Kevin Lyda <kevin@lyda.ie>
 leycec <leycec@gmail.com>
+Lyderic Landry <lyderic@lyderic.com>
 Markus Martin <markus@archwyrm.net>
 martin f. krafft <madduck@madduck.net>
+Martin Kühl <martin.kuehl@posteo.net>
 Mathias Svensson <freaken@freaken.dk>
 mek-apelsin <mek@pels.in>
 Mert Dirik <mertdirik@gmail.com>
diff --git a/Makefile.am b/Makefile.am
index 87e69aaa..8e209fb1 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,4 +1,5 @@
 ACLOCAL_AMFLAGS = -I build-aux
+AM_DISTCHECK_CONFIGURE_FLAGS = --enable-developer-mode
 
 .ONESHELL:
 .SECONDARY:
@@ -23,12 +24,22 @@ EXTRA_DIST += t/000-tear-env.t t/001-setup-env.t t/100-init.t t/300-add.t t/950-
 BUILT_SOURCES =
 CLEANFILES = $(dist_man_MANS) $(bin_SCRIPTS)
 
-include $(top_srcdir)/build-aux/git_version.mk
-include $(top_srcdir)/build-aux/shell_completion_dirs.mk
+# A classical use of the autoconf-archive include macro would expand
+# INC_AMINCLUDE here, but the perl script that inlines include statements
+# runs before the automake that organizes logic and performs substitution.
+# Consequentially with a substitution here it becomes impossible to use
+# automake conditionals and substitutions in the included Makefile fragments.
+# By entering the expanded value directly we are ready in time for the inlining
+# functionality and hence can use conditionals in included makefile fragments.
+include $(top_srcdir)/aminclude.am
+
+DISTCLEANFILES = @AMINCLUDE@
+
+if !SOURCE_IS_DIST
 
-if !IS_SDIST
 doc/vcsh.1: doc/vcsh.1.ronn
 	$(RONN) < $< > $@
+
 endif
 
 $(COMPLETIONS_OUT_DIR)/$(TRANSFORMED_PACKAGE_NAME): completions/vcsh.bash
@@ -40,7 +51,7 @@ $(COMPLETIONS_OUT_DIR)/_$(TRANSFORMED_PACKAGE_NAME): completions/vcsh.zsh
 	install $< $@
 
 if ENABLE_TESTS
-_CHECKDEPS = prove
+_CHECKDEPS = $(PROVE)
 endif
 
 check-local: $(_CHECKDEPS)
@@ -58,17 +69,28 @@ prove:
 .PHONY: test
 test: prove
 
-.PHONY: lint
+PHONY_DEVELOPER_TARGETS = lint lint-editor-config lint-shellheck
+.PHONY: $(PHONY_DEVELOPER_TARGETS)
+
+if DEVELOPER_MODE
+
 lint: lint-editor-config lint-shellcheck
 
-.PHONY: lint-editor-config
 lint-editor-config:
 	ec
 
-.PHONY: lint-shellheck
 lint-shellcheck: $(PACKAGE_NAME)
 	shellcheck $<
 
+else !DEVELOPER_MODE
+
+$(PHONY_DEVELOPER_TARGETS):
+	@: $(error "Please reconfigure using --enable-developer-mode to use developer tooling")
+
+endif !DEVELOPER_MODE
+
+if SOURCE_IS_GIT
+
 CONTRIBUTORS:
 	exec > $@
 	echo 'Alphabetical list of names of everyone who ever committed to this repository.'
@@ -78,3 +100,5 @@ CONTRIBUTORS:
 
 changelog-HEAD: changelog
 	sed -nEe '2d;s/^\t//p;/^$$/q;' $< > $@
+
+endif SOURCE_IS_GIT
diff --git a/bootstrap.sh b/bootstrap.sh
index 0d8d2841..94f6b762 100755
--- a/bootstrap.sh
+++ b/bootstrap.sh
@@ -21,4 +21,14 @@ else
     ./build-aux/git-version-gen .tarball-version > .version
 fi
 
+# Autoreconf uses a perl script to inline includes from Makefile.am into
+# Makefile.in before ./configure is ever run even once ... which typically means
+# AX_AUTOMAKE_MACROS forfeit access to substitutions or conditional logic
+# because they enter the picture after those steps. We're intentially using the
+# expanded value of @INC_AMINCLUDE@ directly so the include will be inlined. To
+# bootstrap we must pre-seed an empty file to avoid a 'file not found' error on
+# first run. Subsequently running ./configure will generate the correct content
+# based on the configuration flags and also get re-inline into Makefile.in.
+touch aminclude.am
+
 autoreconf --install
diff --git a/build-aux/ax_add_am_macro.m4 b/build-aux/ax_add_am_macro.m4
new file mode 100644
index 00000000..3962002b
--- /dev/null
+++ b/build-aux/ax_add_am_macro.m4
@@ -0,0 +1,29 @@
+# ===========================================================================
+#     https://www.gnu.org/software/autoconf-archive/ax_add_am_macro.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_ADD_AM_MACRO([RULE])
+#
+# DESCRIPTION
+#
+#   Adds the specified rule to $AMINCLUDE. This macro will only work
+#   properly with implementations of Make which allow include statements.
+#   See also AX_ADD_AM_MACRO_STATIC.
+#
+# LICENSE
+#
+#   Copyright (c) 2009 Tom Howard <tomhoward@users.sf.net>
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved. This file is offered as-is, without any
+#   warranty.
+
+#serial 10
+
+AC_DEFUN([AX_ADD_AM_MACRO],[
+  AC_REQUIRE([AX_AM_MACROS])
+  AX_APPEND_TO_FILE([$AMINCLUDE],[$1])
+])
diff --git a/build-aux/ax_am_macros.m4 b/build-aux/ax_am_macros.m4
new file mode 100644
index 00000000..36c3ab6a
--- /dev/null
+++ b/build-aux/ax_am_macros.m4
@@ -0,0 +1,44 @@
+# ===========================================================================
+#       https://www.gnu.org/software/autoconf-archive/ax_am_macros.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_AM_MACROS
+#
+# DESCRIPTION
+#
+#   Adds support for macros that create Make rules. You must manually add
+#   the following line
+#
+#     @INC_AMINCLUDE@
+#
+#   to your Makefile.in (or Makefile.am if you use Automake) files.
+#
+# LICENSE
+#
+#   Copyright (c) 2009 Tom Howard <tomhoward@users.sf.net>
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved. This file is offered as-is, without any
+#   warranty.
+
+#serial 11
+
+AC_DEFUN([AX_AM_MACROS],
+[
+AC_MSG_NOTICE([adding automake macro support])
+AMINCLUDE="aminclude.am"
+AC_SUBST(AMINCLUDE)
+AC_MSG_NOTICE([creating $AMINCLUDE])
+AMINCLUDE_TIME=`LC_ALL=C date`
+AX_PRINT_TO_FILE([$AMINCLUDE],[[
+# generated automatically by configure from AX_AUTOMAKE_MACROS
+# on $AMINCLUDE_TIME
+
+]])
+
+INC_AMINCLUDE="include \$(top_builddir)/$AMINCLUDE"
+AC_SUBST(INC_AMINCLUDE)
+])
diff --git a/build-aux/ax_append_to_file.m4 b/build-aux/ax_append_to_file.m4
new file mode 100644
index 00000000..fca57083
--- /dev/null
+++ b/build-aux/ax_append_to_file.m4
@@ -0,0 +1,27 @@
+# ===========================================================================
+#    https://www.gnu.org/software/autoconf-archive/ax_append_to_file.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_APPEND_TO_FILE([FILE],[DATA])
+#
+# DESCRIPTION
+#
+#   Appends the specified data to the specified file.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Tom Howard <tomhoward@users.sf.net>
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved. This file is offered as-is, without any
+#   warranty.
+
+#serial 9
+
+AC_DEFUN([AX_APPEND_TO_FILE],[
+AC_REQUIRE([AX_FILE_ESCAPES])
+printf "%s" "$2" >> "$1"
+])
diff --git a/build-aux/ax_file_escapes.m4 b/build-aux/ax_file_escapes.m4
new file mode 100644
index 00000000..a86fdc32
--- /dev/null
+++ b/build-aux/ax_file_escapes.m4
@@ -0,0 +1,30 @@
+# ===========================================================================
+#     https://www.gnu.org/software/autoconf-archive/ax_file_escapes.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_FILE_ESCAPES
+#
+# DESCRIPTION
+#
+#   Writes the specified data to the specified file.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Tom Howard <tomhoward@users.sf.net>
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved. This file is offered as-is, without any
+#   warranty.
+
+#serial 8
+
+AC_DEFUN([AX_FILE_ESCAPES],[
+AX_DOLLAR="\$"
+AX_SRB="\\135"
+AX_SLB="\\133"
+AX_BS="\\\\"
+AX_DQ="\""
+])
diff --git a/build-aux/ax_git_version.m4 b/build-aux/ax_git_version.m4
deleted file mode 100644
index b5980783..00000000
--- a/build-aux/ax_git_version.m4
+++ /dev/null
@@ -1,9 +0,0 @@
-AC_DEFUN([AX_GIT_VERSION], [
-
-        AC_PROG_AWK
-        AC_PROG_GREP
-        AX_PROGVAR([cmp])
-
-        AX_TRANSFORM_PACKAGE_NAME
-
-])
diff --git a/build-aux/ax_print_to_file.m4 b/build-aux/ax_print_to_file.m4
new file mode 100644
index 00000000..8aa71120
--- /dev/null
+++ b/build-aux/ax_print_to_file.m4
@@ -0,0 +1,27 @@
+# ===========================================================================
+#     https://www.gnu.org/software/autoconf-archive/ax_print_to_file.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_PRINT_TO_FILE([FILE],[DATA])
+#
+# DESCRIPTION
+#
+#   Writes the specified data to the specified file.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Tom Howard <tomhoward@users.sf.net>
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved. This file is offered as-is, without any
+#   warranty.
+
+#serial 8
+
+AC_DEFUN([AX_PRINT_TO_FILE],[
+AC_REQUIRE([AX_FILE_ESCAPES])
+printf "$2" > "$1"
+])
diff --git a/build-aux/que_developer_mode.m4 b/build-aux/que_developer_mode.m4
new file mode 100644
index 00000000..18bd29fe
--- /dev/null
+++ b/build-aux/que_developer_mode.m4
@@ -0,0 +1,19 @@
+# Like AM_MAINTAINER_MODE, but doesn't touch automake internals and so
+# can be used freely to control access to project specific developer
+# tooling without breaking autotools if disabled.
+AC_DEFUN([QUE_DEVELOPER_MODE], [
+        m4_case(m4_default([$1], [disable]),
+                [enable], [m4_define([_que_developer_def], [disable])],
+                [disable], [m4_define([_que_developer_def], [enable])],
+                [m4_define([_que_developer_def], [enable])
+                m4_warn([syntax], [unexpected argument to AM@&t@_DEVELOPER_MODE: $1])])
+        AC_MSG_CHECKING([whether to enable developer-specific portions of Makefiles])
+        AC_ARG_ENABLE([developer-mode],
+                [AS_HELP_STRING([--]_que_developer_def[-developer-mode],
+                        _que_developer_def[ dependencies and make targets only useful for developers])],
+                [USE_DEVELOPER_MODE=$enableval],
+                [USE_DEVELOPER_MODE=]m4_if(_que_developer_def, [enable], [no], [yes]))
+        AC_MSG_RESULT([$USE_DEVELOPER_MODE])
+        AM_CONDITIONAL([DEVELOPER_MODE], [test $USE_DEVELOPER_MODE = yes])
+
+])
diff --git a/build-aux/que_dist_checksums.am b/build-aux/que_dist_checksums.am
new file mode 100644
index 00000000..0e63f281
--- /dev/null
+++ b/build-aux/que_dist_checksums.am
@@ -0,0 +1,19 @@
+# Output both a file that can be attatched to releases and also write STDOUT
+# for the sake of CI build logs so they can be audited as matching what is
+# eventually posted. The list of files checksummed is a glob (even though we
+# know an exact pattern) to avoid errors for formats not generated.
+checksum_dist = \
+	shopt -s nullglob ; \
+	$(SHA256SUM) $(distdir)*.{tar.{gz,bz2,lz,xz,zst},zip} |\
+		$(TEE) $(distdir).sha256.txt
+
+# Since the checksums file isn't an artifact produced by the default source dist
+# creation process, we have to clean it up ourselves so distcheck can see that
+# everything round-tripped cleanly.
+distclean-local:
+	rm -f $(distdir).sha256.txt
+
+# Append checksum operation to function that runs after compressing dist archives
+am__post_remove_distdir = $(am__remove_distdir); $(checksum_dist)
+
+# vim: ft=automake
diff --git a/build-aux/que_dist_checksums.m4 b/build-aux/que_dist_checksums.m4
new file mode 100644
index 00000000..6848cdcc
--- /dev/null
+++ b/build-aux/que_dist_checksums.m4
@@ -0,0 +1,16 @@
+AC_DEFUN_ONCE([QUE_DIST_CHECKSUMS], [
+
+        AM_COND_IF([DEVELOPER_MODE], [
+
+                QUE_PROGVAR([sha256sum])
+                QUE_PROGVAR([tee])
+
+                QUE_TRANSFORM_PACKAGE_NAME
+
+                AC_REQUIRE([AX_AM_MACROS])
+                AX_ADD_AM_MACRO([dnl
+$(cat build-aux/que_dist_checksums.am)
+])dnl
+
+        ])
+])
diff --git a/build-aux/git_version.mk b/build-aux/que_git_version.am
similarity index 95%
rename from build-aux/git_version.mk
rename to build-aux/que_git_version.am
index 58e16119..6b9e8098 100644
--- a/build-aux/git_version.mk
+++ b/build-aux/que_git_version.am
@@ -1,6 +1,5 @@
 .SECONDEXPANSION:
 
-# EXTRA_@PACKAGE_VAR@_SOURCES += .version
 EXTRA_DIST += build-aux/git-version-gen
 BUILT_SOURCES += .version
 CLEANFILES += .version .version-prev
diff --git a/build-aux/que_git_version.m4 b/build-aux/que_git_version.m4
new file mode 100644
index 00000000..56e7f18b
--- /dev/null
+++ b/build-aux/que_git_version.m4
@@ -0,0 +1,24 @@
+AC_DEFUN_ONCE([QUE_GIT_VERSION], [
+
+        AM_CONDITIONAL([SOURCE_IS_GIT],
+                [test -d .git])
+
+        AM_CONDITIONAL([SOURCE_IS_DIST],
+                [test -f .tarball-version])
+
+        AM_CONDITIONAL([SOURCE_IS_ARCHIVE],
+                [test ! -d .git -a ! -f .tarball-version])
+
+        AC_PROG_AWK
+        AC_PROG_GREP
+
+        QUE_TRANSFORM_PACKAGE_NAME
+
+        AM_COND_IF([SOURCE_IS_DIST], [], [QUE_PROGVAR([cmp])])
+
+        AC_REQUIRE([AX_AM_MACROS])
+        AX_ADD_AM_MACRO([dnl
+$(cat build-aux/que_git_version.am)
+])dnl
+
+])
diff --git a/build-aux/ax_progvar.m4 b/build-aux/que_progvar.m4
similarity index 87%
rename from build-aux/ax_progvar.m4
rename to build-aux/que_progvar.m4
index e584ed4a..20d1288b 100644
--- a/build-aux/ax_progvar.m4
+++ b/build-aux/que_progvar.m4
@@ -1,4 +1,4 @@
-AC_DEFUN([AX_PROGVAR], [
+AC_DEFUN([QUE_PROGVAR], [
         test -n "$m4_toupper($1)" || { AC_PATH_PROG(m4_toupper($1), m4_default($2,$1)) }
         test -n "$m4_toupper($1)" || AC_MSG_ERROR([m4_default($2,$1) is required])
 ])
diff --git a/build-aux/shell_completion_dirs.mk b/build-aux/que_shell_completion_dirs.am
similarity index 67%
rename from build-aux/shell_completion_dirs.mk
rename to build-aux/que_shell_completion_dirs.am
index 1f52ea7c..354a0b19 100644
--- a/build-aux/shell_completion_dirs.mk
+++ b/build-aux/que_shell_completion_dirs.am
@@ -6,12 +6,6 @@ nodist_bashcompletion_DATA = $(COMPLETIONS_OUT_DIR)/$(TRANSFORMED_PACKAGE_NAME)
 CLEANFILES += $(nodist_bashcompletion_DATA)
 endif
 
-# if ENABLE_FISH_COMPLETION
-# fishcompletiondir = $(FISH_COMPLETION_DIR)
-# nodist_fishcompletion_DATA = $(COMPLETIONS_OUT_DIR)/$(TRANSFORMED_PACKAGE_NAME).fish
-# CLEANFILES += $(nodist_fishcompletion_DATA)
-# endif
-
 if ENABLE_ZSH_COMPLETION
 zshcompletiondir = $(ZSH_COMPLETION_DIR)
 nodist_zshcompletion_DATA = $(COMPLETIONS_OUT_DIR)/_$(TRANSFORMED_PACKAGE_NAME)
diff --git a/build-aux/ax_shell_completion_dirs.m4 b/build-aux/que_shell_completion_dirs.m4
similarity index 87%
rename from build-aux/ax_shell_completion_dirs.m4
rename to build-aux/que_shell_completion_dirs.m4
index 2f455be0..6ceed855 100644
--- a/build-aux/ax_shell_completion_dirs.m4
+++ b/build-aux/que_shell_completion_dirs.m4
@@ -1,6 +1,8 @@
-AC_DEFUN_ONCE([AX_SHELL_COMPLETION_DIRS], [
+AC_DEFUN_ONCE([QUE_SHELL_COMPLETION_DIRS], [
 
-        AX_TRANSFORM_PACKAGE_NAME
+        QUE_TRANSFORM_PACKAGE_NAME
+
+        AC_PROG_SED
 
         AC_ARG_WITH([bash-completion-dir],
                 AS_HELP_STRING([--with-bash-completion-dir[=PATH]],
@@ -30,4 +32,9 @@ AC_DEFUN_ONCE([AX_SHELL_COMPLETION_DIRS], [
                 [ZSH_COMPLETION_DIR="$with_zsh_completion_dir"])
         AC_SUBST([ZSH_COMPLETION_DIR])
 
+        AC_REQUIRE([AX_AM_MACROS])
+        AX_ADD_AM_MACRO([dnl
+$(cat build-aux/que_shell_completion_dirs.am)
+])dnl
+
 ])
diff --git a/build-aux/ax_transform_package_name.m4 b/build-aux/que_transform_package_name.m4
similarity index 93%
rename from build-aux/ax_transform_package_name.m4
rename to build-aux/que_transform_package_name.m4
index ff53dd93..ee1e8972 100644
--- a/build-aux/ax_transform_package_name.m4
+++ b/build-aux/que_transform_package_name.m4
@@ -3,7 +3,7 @@
 # This isn't convenient to use if we're just renaming the top level package, so
 # we go ahead and *do* the transformation and save for use as a substitution.
 
-AC_DEFUN_ONCE([AX_TRANSFORM_PACKAGE_NAME], [
+AC_DEFUN_ONCE([QUE_TRANSFORM_PACKAGE_NAME], [
 
         AC_PROG_SED
 
diff --git a/configure.ac b/configure.ac
index e86649cb..928033aa 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2,12 +2,9 @@ AC_PREREQ([2.69])
 AC_INIT([vcsh], [m4_esyscmd(build-aux/git-version-gen .tarball-version)])
 AC_CONFIG_AUX_DIR([build-aux])
 AC_CONFIG_MACRO_DIR([build-aux])
-AM_INIT_AUTOMAKE([foreign tar-pax dist-xz dist-zip no-dist-gzip color-tests])
+AM_INIT_AUTOMAKE([foreign tar-pax dist-zstd dist-zip no-dist-gzip color-tests])
 AM_SILENT_RULES([yes])
 
-AM_CONDITIONAL([IS_SDIST],
-               [test ! -e .gitignore])
-
 AC_ARG_WITH([standalone],
             AS_HELP_STRING([--with-standalone],
                            [Use configuration presets for a standalone script deployment @<:@default=no@:>@]),
@@ -28,18 +25,21 @@ AC_ARG_WITH([standalone],
             ],
             [])
 
-# These three macros must be run after processing our standalone setup because
+QUE_TRANSFORM_PACKAGE_NAME
+QUE_DEVELOPER_MODE
+
+# These macros must be run after processing our standalone setup because
 # they all expect the program name transformation setup to be complete.
-AX_GIT_VERSION
-AX_SHELL_COMPLETION_DIRS
-AX_TRANSFORM_PACKAGE_NAME
+QUE_GIT_VERSION
+QUE_SHELL_COMPLETION_DIRS
+QUE_DIST_CHECKSUMS
 
 AC_PROG_GREP
 AC_PROG_SED
 
-AX_PROGVAR([comm])
-AX_PROGVAR([git])
-AX_PROGVAR([wc])
+QUE_PROGVAR([comm])
+QUE_PROGVAR([git])
+QUE_PROGVAR([wc])
 
 AC_ARG_WITH([deployment],
             AS_HELP_STRING([--with-deployment],
@@ -56,13 +56,12 @@ AC_ARG_WITH([man-page],
 AM_CONDITIONAL([ENABLE_MAN_PAGE],
                [test x"$with_man_page" != x"no"])
 
-AM_COND_IF([IS_SDIST],
-           [],
+AM_COND_IF([SOURCE_IS_GIT],
            [AM_COND_IF([ENABLE_MAN_PAGE],
-                       [AX_PROGVAR([ronn])])
+                       [QUE_PROGVAR([ronn])])
 ])
 
-AM_COND_IF([IS_SDIST],
+AM_COND_IF([SOURCE_IS_GIT],
            m4_define([TESTDEF], [yes]),
            m4_define([TESTDEF], [no]))
 AC_ARG_ENABLE([tests],
@@ -74,7 +73,7 @@ AM_CONDITIONAL([ENABLE_TESTS],
                [test x"$enable_tests" != x"no"])
 
 AM_COND_IF([ENABLE_TESTS], [
-       AX_PROGVAR([prove])
+       QUE_PROGVAR([prove])
        AX_PROG_PERL_MODULES(Shell::Command, [],
                             AC_MSG_ERROR(Perl module required for testing not found))
        AX_PROG_PERL_MODULES(Test::Most, [],
diff --git a/doc/INSTALL.md b/doc/INSTALL.md
index 6d067688..4be9cd0f 100644
--- a/doc/INSTALL.md
+++ b/doc/INSTALL.md
@@ -81,7 +81,7 @@ $ pkg install vcsh
 
 First you’ll want a copy of the source code.
 The easiest to use place to get this is the [latest release](https://github.com/RichiH/vcsh/releases/latest) posted on GitHub.
-The souree distribution will have a name such as `vcsh-2.0.0.tar.xz`.
+The souree distribution will have a name such as `vcsh-2.0.0.tar.zst`.
 Note under each release GitHub also show two “Source code” links that will download a snapshot of the repository; this is **not** the file you want (unless you want to jump through extra hoops).
 The official source release packages with the release version in the file names are the ones you want.