Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package ansible-navigator for 
openSUSE:Factory checked in at 2026-09-24 22:58:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ansible-navigator (Old)
 and      /work/SRC/openSUSE:Factory/.ansible-navigator.new.383539 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ansible-navigator"

Thu Sep 24 22:58:14 2026 rev:25 rq:1380099 version:26.9.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/ansible-navigator/ansible-navigator.changes      
2026-08-12 16:15:13.189345408 +0200
+++ 
/work/SRC/openSUSE:Factory/.ansible-navigator.new.383539/ansible-navigator.changes
  2026-09-24 23:00:53.427836482 +0200
@@ -1,0 +2,23 @@
+Thu Sep 24 05:12:30 UTC 2026 - Johannes Kastl 
<[email protected]>
+
+- Update to version 26.9.0:
+  * fix: request explicit columns when listing images (#2172)
+  * chore(deps): update all dependencies (#2171)
+  * chore(deps): update all dependencies (#2170)
+  * chore: Add SECURITY.md (#2169)
+  * docs: enhance CONTRIBUTING.md linting section and update
+    pre-commit hooks (#2168)
+  * chore(deps): update all dependencies (#2167)
+  * Add limited Apple Container support as container engine (#2163)
+  * fix: handle undeterminable home directory when expanding a path
+    (#2165)
+  * fix: handle invalid artifact filename formats (#2160)
+  * fix: handle OSError when checking a playbook path (#2164)
+  * docs: clarify shell pipelines in execution environments (#2154)
+  * chore(deps): update all dependencies (#2162)
+  * Enhance CONTRIBUTING.md with patching fixture guidance (#2155)
+  * fix(docs): remove conflicting keys from .readthedocs.yml
+    (#2159)
+  * chore(deps): update all dependencies (#2157)
+
+-------------------------------------------------------------------

Old:
----
  ansible-navigator-26.8.0.obscpio

New:
----
  ansible-navigator-26.9.0.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ ansible-navigator.spec ++++++
--- /var/tmp/diff_new_pack.YIj9bQ/_old  2026-09-24 23:00:54.184868137 +0200
+++ /var/tmp/diff_new_pack.YIj9bQ/_new  2026-09-24 23:00:54.185868178 +0200
@@ -38,7 +38,7 @@
 %endif
 
 Name:           ansible-navigator
-Version:        26.8.0
+Version:        26.9.0
 Release:        0
 Summary:        A text-based user interface (TUI) for Ansible
 License:        Apache-2.0

++++++ _service ++++++
--- /var/tmp/diff_new_pack.YIj9bQ/_old  2026-09-24 23:00:54.217869517 +0200
+++ /var/tmp/diff_new_pack.YIj9bQ/_new  2026-09-24 23:00:54.220869642 +0200
@@ -3,7 +3,7 @@
     <param name="url">https://github.com/ansible/ansible-navigator.git</param>
     <param name="scm">git</param>
     <param name="package-meta">yes</param>
-    <param name="revision">refs/tags/v26.8.0</param>
+    <param name="revision">refs/tags/v26.9.0</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="versionrewrite-pattern">v(.*)</param>
     <param name="changesgenerate">enable</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.YIj9bQ/_old  2026-09-24 23:00:54.241870520 +0200
+++ /var/tmp/diff_new_pack.YIj9bQ/_new  2026-09-24 23:00:54.246870729 +0200
@@ -3,6 +3,6 @@
                 <param 
name="url">https://github.com/ansible/ansible-navigator</param>
               <param 
name="changesrevision">bd496c36423fba07be078739335f047adfbabe6e</param></service><service
 name="tar_scm">
                 <param 
name="url">https://github.com/ansible/ansible-navigator.git</param>
-              <param 
name="changesrevision">30e0b3d0f454a524e3520f9de0cbf18620b1b790</param></service></servicedata>
+              <param 
name="changesrevision">968b23182d726eb6691290651b533a3aa7db8d79</param></service></servicedata>
 (No newline at EOF)
 

++++++ ansible-navigator-26.8.0.obscpio -> ansible-navigator-26.9.0.obscpio 
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible-navigator-26.8.0/.config/dictionary.txt 
new/ansible-navigator-26.9.0/.config/dictionary.txt
--- old/ansible-navigator-26.8.0/.config/dictionary.txt 2026-08-11 
18:01:46.000000000 +0200
+++ new/ansible-navigator-26.9.0/.config/dictionary.txt 2026-09-16 
08:32:25.000000000 +0200
@@ -19,6 +19,7 @@
 devel
 dumpable
 dunder
+enametoolong
 escdelay
 facelessuser
 fedoraproject
@@ -41,6 +42,7 @@
 lentext
 levelname
 libonig
+lifecycle
 lightbulbs
 linenums
 lintable
@@ -87,6 +89,7 @@
 tracebacks
 truecolor
 usefixtures
+userland
 volmount
 withast
 workdir
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible-navigator-26.8.0/.git/HEAD 
new/ansible-navigator-26.9.0/.git/HEAD
--- old/ansible-navigator-26.8.0/.git/HEAD      2026-08-11 18:01:46.000000000 
+0200
+++ new/ansible-navigator-26.9.0/.git/HEAD      2026-09-16 08:32:25.000000000 
+0200
@@ -1 +1 @@
-30e0b3d0f454a524e3520f9de0cbf18620b1b790
+968b23182d726eb6691290651b533a3aa7db8d79
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible-navigator-26.8.0/.git/ORIG_HEAD 
new/ansible-navigator-26.9.0/.git/ORIG_HEAD
--- old/ansible-navigator-26.8.0/.git/ORIG_HEAD 2026-08-11 18:01:46.000000000 
+0200
+++ new/ansible-navigator-26.9.0/.git/ORIG_HEAD 2026-09-16 08:32:25.000000000 
+0200
@@ -1 +1 @@
-30e0b3d0f454a524e3520f9de0cbf18620b1b790
+968b23182d726eb6691290651b533a3aa7db8d79
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible-navigator-26.8.0/.git/hooks/applypatch-msg.sample 
new/ansible-navigator-26.9.0/.git/hooks/applypatch-msg.sample
--- old/ansible-navigator-26.8.0/.git/hooks/applypatch-msg.sample       
2026-08-11 18:01:46.000000000 +0200
+++ new/ansible-navigator-26.9.0/.git/hooks/applypatch-msg.sample       
2026-09-16 08:32:25.000000000 +0200
@@ -1,4 +1,4 @@
-#!/nix/store/1sr8rmx4v0v994lkbzhwc1f0qr1gxxs9-bash-5.3p9/bin/bash
+#!/nix/store/7n1hai8jk6vgc967drgkqi6k7j6ff28q-bash-5.3p9/bin/bash
 #
 # An example hook script to check the commit log message taken by
 # applypatch from an e-mail message.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible-navigator-26.8.0/.git/hooks/commit-msg.sample 
new/ansible-navigator-26.9.0/.git/hooks/commit-msg.sample
--- old/ansible-navigator-26.8.0/.git/hooks/commit-msg.sample   2026-08-11 
18:01:46.000000000 +0200
+++ new/ansible-navigator-26.9.0/.git/hooks/commit-msg.sample   2026-09-16 
08:32:25.000000000 +0200
@@ -1,4 +1,4 @@
-#!/nix/store/1sr8rmx4v0v994lkbzhwc1f0qr1gxxs9-bash-5.3p9/bin/bash
+#!/nix/store/7n1hai8jk6vgc967drgkqi6k7j6ff28q-bash-5.3p9/bin/bash
 #
 # An example hook script to check the commit log message.
 # Called by "git commit" with one argument, the name of the file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible-navigator-26.8.0/.git/hooks/fsmonitor-watchman.sample 
new/ansible-navigator-26.9.0/.git/hooks/fsmonitor-watchman.sample
--- old/ansible-navigator-26.8.0/.git/hooks/fsmonitor-watchman.sample   
2026-08-11 18:01:46.000000000 +0200
+++ new/ansible-navigator-26.9.0/.git/hooks/fsmonitor-watchman.sample   
2026-09-16 08:32:25.000000000 +0200
@@ -1,4 +1,4 @@
-#!/nix/store/z1230rx4kj280i04m38dzqqjgm207vn4-perl-5.42.0/bin/perl
+#!/nix/store/myzwgd3ylpl3d8zrl7kl3l97i7zl8mw6-perl-5.42.0/bin/perl
 
 use strict;
 use warnings;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible-navigator-26.8.0/.git/hooks/post-update.sample 
new/ansible-navigator-26.9.0/.git/hooks/post-update.sample
--- old/ansible-navigator-26.8.0/.git/hooks/post-update.sample  2026-08-11 
18:01:46.000000000 +0200
+++ new/ansible-navigator-26.9.0/.git/hooks/post-update.sample  2026-09-16 
08:32:25.000000000 +0200
@@ -1,4 +1,4 @@
-#!/nix/store/1sr8rmx4v0v994lkbzhwc1f0qr1gxxs9-bash-5.3p9/bin/bash
+#!/nix/store/7n1hai8jk6vgc967drgkqi6k7j6ff28q-bash-5.3p9/bin/bash
 #
 # An example hook script to prepare a packed repository for use over
 # dumb transports.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible-navigator-26.8.0/.git/hooks/pre-applypatch.sample 
new/ansible-navigator-26.9.0/.git/hooks/pre-applypatch.sample
--- old/ansible-navigator-26.8.0/.git/hooks/pre-applypatch.sample       
2026-08-11 18:01:46.000000000 +0200
+++ new/ansible-navigator-26.9.0/.git/hooks/pre-applypatch.sample       
2026-09-16 08:32:25.000000000 +0200
@@ -1,4 +1,4 @@
-#!/nix/store/1sr8rmx4v0v994lkbzhwc1f0qr1gxxs9-bash-5.3p9/bin/bash
+#!/nix/store/7n1hai8jk6vgc967drgkqi6k7j6ff28q-bash-5.3p9/bin/bash
 #
 # An example hook script to verify what is about to be committed
 # by applypatch from an e-mail message.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible-navigator-26.8.0/.git/hooks/pre-commit.sample 
new/ansible-navigator-26.9.0/.git/hooks/pre-commit.sample
--- old/ansible-navigator-26.8.0/.git/hooks/pre-commit.sample   2026-08-11 
18:01:46.000000000 +0200
+++ new/ansible-navigator-26.9.0/.git/hooks/pre-commit.sample   2026-09-16 
08:32:25.000000000 +0200
@@ -1,4 +1,4 @@
-#!/nix/store/1sr8rmx4v0v994lkbzhwc1f0qr1gxxs9-bash-5.3p9/bin/bash
+#!/nix/store/7n1hai8jk6vgc967drgkqi6k7j6ff28q-bash-5.3p9/bin/bash
 #
 # An example hook script to verify what is about to be committed.
 # Called by "git commit" with no arguments.  The hook should
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible-navigator-26.8.0/.git/hooks/pre-merge-commit.sample 
new/ansible-navigator-26.9.0/.git/hooks/pre-merge-commit.sample
--- old/ansible-navigator-26.8.0/.git/hooks/pre-merge-commit.sample     
2026-08-11 18:01:46.000000000 +0200
+++ new/ansible-navigator-26.9.0/.git/hooks/pre-merge-commit.sample     
2026-09-16 08:32:25.000000000 +0200
@@ -1,4 +1,4 @@
-#!/nix/store/1sr8rmx4v0v994lkbzhwc1f0qr1gxxs9-bash-5.3p9/bin/bash
+#!/nix/store/7n1hai8jk6vgc967drgkqi6k7j6ff28q-bash-5.3p9/bin/bash
 #
 # An example hook script to verify what is about to be committed.
 # Called by "git merge" with no arguments.  The hook should
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible-navigator-26.8.0/.git/hooks/pre-push.sample 
new/ansible-navigator-26.9.0/.git/hooks/pre-push.sample
--- old/ansible-navigator-26.8.0/.git/hooks/pre-push.sample     2026-08-11 
18:01:46.000000000 +0200
+++ new/ansible-navigator-26.9.0/.git/hooks/pre-push.sample     2026-09-16 
08:32:25.000000000 +0200
@@ -1,4 +1,4 @@
-#!/nix/store/1sr8rmx4v0v994lkbzhwc1f0qr1gxxs9-bash-5.3p9/bin/bash
+#!/nix/store/7n1hai8jk6vgc967drgkqi6k7j6ff28q-bash-5.3p9/bin/bash
 
 # An example hook script to verify what is about to be pushed.  Called by "git
 # push" after it has checked the remote status, but before anything has been
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible-navigator-26.8.0/.git/hooks/pre-rebase.sample 
new/ansible-navigator-26.9.0/.git/hooks/pre-rebase.sample
--- old/ansible-navigator-26.8.0/.git/hooks/pre-rebase.sample   2026-08-11 
18:01:46.000000000 +0200
+++ new/ansible-navigator-26.9.0/.git/hooks/pre-rebase.sample   2026-09-16 
08:32:25.000000000 +0200
@@ -1,4 +1,4 @@
-#!/nix/store/1sr8rmx4v0v994lkbzhwc1f0qr1gxxs9-bash-5.3p9/bin/bash
+#!/nix/store/7n1hai8jk6vgc967drgkqi6k7j6ff28q-bash-5.3p9/bin/bash
 #
 # Copyright (c) 2006, 2008 Junio C Hamano
 #
@@ -65,7 +65,7 @@
        fi
 else
        not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"`
-       /nix/store/z1230rx4kj280i04m38dzqqjgm207vn4-perl-5.42.0/bin/perl -e '
+       /nix/store/myzwgd3ylpl3d8zrl7kl3l97i7zl8mw6-perl-5.42.0/bin/perl -e '
                my $topic = $ARGV[0];
                my $msg = "* $topic has commits already merged to public 
branch:\n";
                my (%not_in_next) = map {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible-navigator-26.8.0/.git/hooks/pre-receive.sample 
new/ansible-navigator-26.9.0/.git/hooks/pre-receive.sample
--- old/ansible-navigator-26.8.0/.git/hooks/pre-receive.sample  2026-08-11 
18:01:46.000000000 +0200
+++ new/ansible-navigator-26.9.0/.git/hooks/pre-receive.sample  2026-09-16 
08:32:25.000000000 +0200
@@ -1,4 +1,4 @@
-#!/nix/store/1sr8rmx4v0v994lkbzhwc1f0qr1gxxs9-bash-5.3p9/bin/bash
+#!/nix/store/7n1hai8jk6vgc967drgkqi6k7j6ff28q-bash-5.3p9/bin/bash
 #
 # An example hook script to make use of push options.
 # The example simply echoes all push options that start with 'echoback='
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible-navigator-26.8.0/.git/hooks/prepare-commit-msg.sample 
new/ansible-navigator-26.9.0/.git/hooks/prepare-commit-msg.sample
--- old/ansible-navigator-26.8.0/.git/hooks/prepare-commit-msg.sample   
2026-08-11 18:01:46.000000000 +0200
+++ new/ansible-navigator-26.9.0/.git/hooks/prepare-commit-msg.sample   
2026-09-16 08:32:25.000000000 +0200
@@ -1,4 +1,4 @@
-#!/nix/store/1sr8rmx4v0v994lkbzhwc1f0qr1gxxs9-bash-5.3p9/bin/bash
+#!/nix/store/7n1hai8jk6vgc967drgkqi6k7j6ff28q-bash-5.3p9/bin/bash
 #
 # An example hook script to prepare the commit log message.
 # Called by "git commit" with the name of the file that has the
@@ -24,11 +24,11 @@
 COMMIT_SOURCE=$2
 SHA1=$3
 
-/nix/store/z1230rx4kj280i04m38dzqqjgm207vn4-perl-5.42.0/bin/perl -i.bak -ne 
'print unless(m/^. Please enter the commit message/..m/^#$/)' "$COMMIT_MSG_FILE"
+/nix/store/myzwgd3ylpl3d8zrl7kl3l97i7zl8mw6-perl-5.42.0/bin/perl -i.bak -ne 
'print unless(m/^. Please enter the commit message/..m/^#$/)' "$COMMIT_MSG_FILE"
 
 # case "$COMMIT_SOURCE,$SHA1" in
 #  ,|template,)
-#    /nix/store/z1230rx4kj280i04m38dzqqjgm207vn4-perl-5.42.0/bin/perl -i.bak 
-pe '
+#    /nix/store/myzwgd3ylpl3d8zrl7kl3l97i7zl8mw6-perl-5.42.0/bin/perl -i.bak 
-pe '
 #       print "\n" . `git diff --cached --name-status -r`
 #       if /^#/ && $first++ == 0' "$COMMIT_MSG_FILE" ;;
 #  *) ;;
@@ -38,5 +38,5 @@
 # git interpret-trailers --in-place --trailer "$SOB" "$COMMIT_MSG_FILE"
 # if test -z "$COMMIT_SOURCE"
 # then
-#   /nix/store/z1230rx4kj280i04m38dzqqjgm207vn4-perl-5.42.0/bin/perl -i.bak 
-pe 'print "\n" if !$first_line++' "$COMMIT_MSG_FILE"
+#   /nix/store/myzwgd3ylpl3d8zrl7kl3l97i7zl8mw6-perl-5.42.0/bin/perl -i.bak 
-pe 'print "\n" if !$first_line++' "$COMMIT_MSG_FILE"
 # fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible-navigator-26.8.0/.git/hooks/push-to-checkout.sample 
new/ansible-navigator-26.9.0/.git/hooks/push-to-checkout.sample
--- old/ansible-navigator-26.8.0/.git/hooks/push-to-checkout.sample     
2026-08-11 18:01:46.000000000 +0200
+++ new/ansible-navigator-26.9.0/.git/hooks/push-to-checkout.sample     
2026-09-16 08:32:25.000000000 +0200
@@ -1,4 +1,4 @@
-#!/nix/store/1sr8rmx4v0v994lkbzhwc1f0qr1gxxs9-bash-5.3p9/bin/bash
+#!/nix/store/7n1hai8jk6vgc967drgkqi6k7j6ff28q-bash-5.3p9/bin/bash
 
 # An example hook script to update a checked-out tree on a git push.
 #
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible-navigator-26.8.0/.git/hooks/sendemail-validate.sample 
new/ansible-navigator-26.9.0/.git/hooks/sendemail-validate.sample
--- old/ansible-navigator-26.8.0/.git/hooks/sendemail-validate.sample   
2026-08-11 18:01:46.000000000 +0200
+++ new/ansible-navigator-26.9.0/.git/hooks/sendemail-validate.sample   
2026-09-16 08:32:25.000000000 +0200
@@ -1,4 +1,4 @@
-#!/nix/store/1sr8rmx4v0v994lkbzhwc1f0qr1gxxs9-bash-5.3p9/bin/bash
+#!/nix/store/7n1hai8jk6vgc967drgkqi6k7j6ff28q-bash-5.3p9/bin/bash
 
 # An example hook script to validate a patch (and/or patch series) before
 # sending it via email.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible-navigator-26.8.0/.git/hooks/update.sample 
new/ansible-navigator-26.9.0/.git/hooks/update.sample
--- old/ansible-navigator-26.8.0/.git/hooks/update.sample       2026-08-11 
18:01:46.000000000 +0200
+++ new/ansible-navigator-26.9.0/.git/hooks/update.sample       2026-09-16 
08:32:25.000000000 +0200
@@ -1,4 +1,4 @@
-#!/nix/store/1sr8rmx4v0v994lkbzhwc1f0qr1gxxs9-bash-5.3p9/bin/bash
+#!/nix/store/7n1hai8jk6vgc967drgkqi6k7j6ff28q-bash-5.3p9/bin/bash
 #
 # An example hook script to block unannotated tags from entering.
 # Called by "git receive-pack" with arguments: refname sha1-old sha1-new
Binary files old/ansible-navigator-26.8.0/.git/index and 
new/ansible-navigator-26.9.0/.git/index differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible-navigator-26.8.0/.git/logs/HEAD 
new/ansible-navigator-26.9.0/.git/logs/HEAD
--- old/ansible-navigator-26.8.0/.git/logs/HEAD 2026-08-11 18:01:46.000000000 
+0200
+++ new/ansible-navigator-26.9.0/.git/logs/HEAD 2026-09-16 08:32:25.000000000 
+0200
@@ -1,2 +1,2 @@
-0000000000000000000000000000000000000000 
30e0b3d0f454a524e3520f9de0cbf18620b1b790 kastl <[email protected]> 
1786533245 +0200  clone: from https://github.com/ansible/ansible-navigator.git
-30e0b3d0f454a524e3520f9de0cbf18620b1b790 
30e0b3d0f454a524e3520f9de0cbf18620b1b790 kastl <[email protected]> 
1786533245 +0200  checkout: moving from main to refs/tags/v26.8.0
+0000000000000000000000000000000000000000 
968b23182d726eb6691290651b533a3aa7db8d79 kastl <[email protected]> 
1790226750 +0200  clone: from https://github.com/ansible/ansible-navigator.git
+968b23182d726eb6691290651b533a3aa7db8d79 
968b23182d726eb6691290651b533a3aa7db8d79 kastl <[email protected]> 
1790226750 +0200  checkout: moving from main to refs/tags/v26.9.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible-navigator-26.8.0/.git/logs/refs/heads/main 
new/ansible-navigator-26.9.0/.git/logs/refs/heads/main
--- old/ansible-navigator-26.8.0/.git/logs/refs/heads/main      2026-08-11 
18:01:46.000000000 +0200
+++ new/ansible-navigator-26.9.0/.git/logs/refs/heads/main      2026-09-16 
08:32:25.000000000 +0200
@@ -1 +1 @@
-0000000000000000000000000000000000000000 
30e0b3d0f454a524e3520f9de0cbf18620b1b790 kastl <[email protected]> 
1786533245 +0200  clone: from https://github.com/ansible/ansible-navigator.git
+0000000000000000000000000000000000000000 
968b23182d726eb6691290651b533a3aa7db8d79 kastl <[email protected]> 
1790226750 +0200  clone: from https://github.com/ansible/ansible-navigator.git
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible-navigator-26.8.0/.git/logs/refs/remotes/origin/HEAD 
new/ansible-navigator-26.9.0/.git/logs/refs/remotes/origin/HEAD
--- old/ansible-navigator-26.8.0/.git/logs/refs/remotes/origin/HEAD     
2026-08-11 18:01:46.000000000 +0200
+++ new/ansible-navigator-26.9.0/.git/logs/refs/remotes/origin/HEAD     
2026-09-16 08:32:25.000000000 +0200
@@ -1 +1 @@
-0000000000000000000000000000000000000000 
30e0b3d0f454a524e3520f9de0cbf18620b1b790 kastl <[email protected]> 
1786533245 +0200  clone: from https://github.com/ansible/ansible-navigator.git
+0000000000000000000000000000000000000000 
968b23182d726eb6691290651b533a3aa7db8d79 kastl <[email protected]> 
1790226750 +0200  clone: from https://github.com/ansible/ansible-navigator.git
Binary files 
old/ansible-navigator-26.8.0/.git/objects/pack/pack-7729053cdb857094b006fec6e048e82f08f1801e.idx
 and 
new/ansible-navigator-26.9.0/.git/objects/pack/pack-7729053cdb857094b006fec6e048e82f08f1801e.idx
 differ
Binary files 
old/ansible-navigator-26.8.0/.git/objects/pack/pack-7729053cdb857094b006fec6e048e82f08f1801e.pack
 and 
new/ansible-navigator-26.9.0/.git/objects/pack/pack-7729053cdb857094b006fec6e048e82f08f1801e.pack
 differ
Binary files 
old/ansible-navigator-26.8.0/.git/objects/pack/pack-7729053cdb857094b006fec6e048e82f08f1801e.rev
 and 
new/ansible-navigator-26.9.0/.git/objects/pack/pack-7729053cdb857094b006fec6e048e82f08f1801e.rev
 differ
Binary files 
old/ansible-navigator-26.8.0/.git/objects/pack/pack-f7c1c998c55ad7643c7acab901ba6430a27a05f7.idx
 and 
new/ansible-navigator-26.9.0/.git/objects/pack/pack-f7c1c998c55ad7643c7acab901ba6430a27a05f7.idx
 differ
Binary files 
old/ansible-navigator-26.8.0/.git/objects/pack/pack-f7c1c998c55ad7643c7acab901ba6430a27a05f7.pack
 and 
new/ansible-navigator-26.9.0/.git/objects/pack/pack-f7c1c998c55ad7643c7acab901ba6430a27a05f7.pack
 differ
Binary files 
old/ansible-navigator-26.8.0/.git/objects/pack/pack-f7c1c998c55ad7643c7acab901ba6430a27a05f7.rev
 and 
new/ansible-navigator-26.9.0/.git/objects/pack/pack-f7c1c998c55ad7643c7acab901ba6430a27a05f7.rev
 differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible-navigator-26.8.0/.git/packed-refs 
new/ansible-navigator-26.9.0/.git/packed-refs
--- old/ansible-navigator-26.8.0/.git/packed-refs       2026-08-11 
18:01:46.000000000 +0200
+++ new/ansible-navigator-26.9.0/.git/packed-refs       2026-09-16 
08:32:25.000000000 +0200
@@ -5,10 +5,11 @@
 0d667089697257c904031e581abb4f9d31d0ffdb refs/remotes/origin/chore/tmuxlib
 d958dbade56ba9465b8789791b85c87256627bb4 
refs/remotes/origin/chore/update-python-deps
 a75b8efc517146c4dce9b2e7f91cd77f5aef2ca8 refs/remotes/origin/community-comms
-30e0b3d0f454a524e3520f9de0cbf18620b1b790 refs/remotes/origin/main
+968b23182d726eb6691290651b533a3aa7db8d79 refs/remotes/origin/main
+fa8a6a623f59833687dc0e192a525249b32a6703 refs/remotes/origin/recreate-pr-2134
 f2fe70d862609d68f64df4901f69ee932cda434b refs/remotes/origin/release-1.0
 fa5ab6f372b6134e681c87cbfc35341c546eb68d refs/remotes/origin/release-1.1
-8069fd0766a802b2eddf8ab2f17f1444c90e783e refs/remotes/origin/renovate/all
+b9a394dbe620280420e35e6937e75cc5b0edbd12 refs/remotes/origin/renovate/all
 4f74e2e63965ca3706cb27b0e39c3041341a02fa refs/remotes/origin/test
 e64273cb31afedb0f5fa395fd3c92908268f07cf refs/tags/0.6.2
 c9030367e0346bce2f04d6ca0d15432f3bd7e297 refs/tags/0.7.0
@@ -70,6 +71,7 @@
 bd496c36423fba07be078739335f047adfbabe6e refs/tags/v26.4.0
 ca1c523de70786460d054612bb89af9786913ee8 refs/tags/v26.6.0
 30e0b3d0f454a524e3520f9de0cbf18620b1b790 refs/tags/v26.8.0
+968b23182d726eb6691290651b533a3aa7db8d79 refs/tags/v26.9.0
 d60324c5ed81f9936ad0221cffa8074c8d79b4a7 refs/tags/v3.0.0
 3041afbcd0471eaf3e069daa4884519cb8b44907 refs/tags/v3.0.0a1
 ^d60324c5ed81f9936ad0221cffa8074c8d79b4a7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible-navigator-26.8.0/.git/refs/heads/main 
new/ansible-navigator-26.9.0/.git/refs/heads/main
--- old/ansible-navigator-26.8.0/.git/refs/heads/main   2026-08-11 
18:01:46.000000000 +0200
+++ new/ansible-navigator-26.9.0/.git/refs/heads/main   2026-09-16 
08:32:25.000000000 +0200
@@ -1 +1 @@
-30e0b3d0f454a524e3520f9de0cbf18620b1b790
+968b23182d726eb6691290651b533a3aa7db8d79
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible-navigator-26.8.0/.github/CONTRIBUTING.md 
new/ansible-navigator-26.9.0/.github/CONTRIBUTING.md
--- old/ansible-navigator-26.8.0/.github/CONTRIBUTING.md        2026-08-11 
18:01:46.000000000 +0200
+++ new/ansible-navigator-26.9.0/.github/CONTRIBUTING.md        2026-09-16 
08:32:25.000000000 +0200
@@ -17,23 +17,8 @@
 Prerequisites:
 
 1.  Have {doc}`tox <tox:index>`.
-
 2.  Use {doc}`tox <tox:index>` to run the tests.
-
-3.  Before sending a PR, make sure that `lint` passes:
-
-    ```shell-session
-    $ tox -e lint
-    lint create: .tox/lint
-    lint installdeps: .[test]
-    lint installed: ...
-    lint run-test-pre: PYTHONHASHSEED='4242713142'
-    lint run-test: commands[0] | pylint ansible_navigator tests ...
-    ...
-    _________________________________ summary 
__________________________________
-    lint: commands succeeded
-    congratulations :)
-    ```
+3.  Before sending a PR, make sure that `lint` passes: `tox -e lint`
 
 !!! notice
 
@@ -44,6 +29,39 @@
     indicates the version of python that needs to be installed for tox to run
     locally. In this case, the version of python that needs to be installed is
 
+## Linting and formatting
+
+`tox -e lint` runs the project's [pre-commit] hooks over the repository. The
+main checks are:
+
+- [Ruff] for Python formatting and lint rules.
+- [pyupgrade] for modern Python syntax.
+- [mypy] for static type checking.
+- [Pylint] and [Flake8] for additional Python checks.
+- [pydoclint] for docstring consistency.
+- [markdownlint], [codespell], and [yamllint] for documentation and
+  configuration files.
+- [Prettier], [toml-sort], and [tox-ini-fmt] for supported configuration file
+  formats. The [cspell] hook is configured separately but skipped by
+  `tox -e lint`. Run it with `tox -e lint -- cspell --all-files` when needed.
+  Many hooks can fix files automatically. Review those changes, then rerun
+  `tox -e lint` until it succeeds. To run one hook while iterating, use
+  `tox -e lint -- HOOK_ID --all-files`. Do not add a project-wide exception for
+  a new local warning. Keep a necessary Pylint suppression next to the affected
+  statement and use its symbolic message name, for example
+  `# pylint: disable=too-many-arguments`. A mypy suppression must include the
+  specific error code, for example `# type: ignore[arg-type]`. [pre-commit]:
+  <https://pre-commit.com/> [Ruff]: <https://docs.astral.sh/ruff/> [pyupgrade]:
+  <https://github.com/asottile/pyupgrade> [mypy]: 
<https://mypy.readthedocs.io/>
+  [Pylint]: <https://pylint.readthedocs.io/> [Flake8]:
+  <https://flake8.pycqa.org/> [pydoclint]: <https://jsh9.github.io/pydoclint/>
+  [markdownlint]: <https://github.com/igorshubovych/markdownlint-cli> [cspell]:
+  <https://cspell.org/> [codespell]:
+  <https://github.com/codespell-project/codespell> [yamllint]:
+  <https://yamllint.readthedocs.io/> [Prettier]: <https://prettier.io/>
+  [toml-sort]: <https://github.com/pappasam/toml-sort> [tox-ini-fmt]:
+  <https://github.com/tox-dev/tox-ini-fmt>
+
 ## Getting started with Ansible Navigator
 
 ### Building from the source and installing packages for testing
@@ -137,9 +155,8 @@
 
 - Put breakpoint(s) in the code where needed.
 - Hover to the **Run and Debug** icon in the Activity Bar to start the 
debugger.
-
-At this point, the debugger should hit your breakpoint and start the debugging
-session.
+  At this point, the debugger should hit your breakpoint and start the 
debugging
+  session.
 
 ### Debug Ansible-Navigator Subcommands
 
@@ -194,7 +211,6 @@
 
 We use [mkdocs](https://www.mkdocs.org/) to generate our docs website. You can
 trigger the process locally by executing:
-
 <!-- cspell:disable -->
 
 ```shell
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible-navigator-26.8.0/.github/workflows/release.yml 
new/ansible-navigator-26.9.0/.github/workflows/release.yml
--- old/ansible-navigator-26.8.0/.github/workflows/release.yml  2026-08-11 
18:01:46.000000000 +0200
+++ new/ansible-navigator-26.9.0/.github/workflows/release.yml  2026-09-16 
08:32:25.000000000 +0200
@@ -23,7 +23,7 @@
 
     steps:
       - name: Switch to using Python 3.10 by default
-        uses: actions/setup-python@v6
+        uses: actions/setup-python@v7
         with:
           python-version: "3.14"
       - name: Install tox
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible-navigator-26.8.0/.github/workflows/tox.yml 
new/ansible-navigator-26.9.0/.github/workflows/tox.yml
--- old/ansible-navigator-26.8.0/.github/workflows/tox.yml      2026-08-11 
18:01:46.000000000 +0200
+++ new/ansible-navigator-26.9.0/.github/workflows/tox.yml      2026-09-16 
08:32:25.000000000 +0200
@@ -68,7 +68,7 @@
           key: ${{ runner.os }}-${{ 
hashFiles('src/ansible_navigator/data/images_dockerfile') }}
 
       - name: Set up Python ${{ matrix.python_version }}
-        uses: actions/setup-python@v6
+        uses: actions/setup-python@v7
         with:
           python-version: ${{ matrix.python_version }}
           cache: pip
@@ -149,7 +149,7 @@
       - uses: actions/checkout@v7
 
       - name: Set up Python
-        uses: actions/setup-python@v6
+        uses: actions/setup-python@v7
         with:
           python-version: "3.14"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible-navigator-26.8.0/.pre-commit-config.yaml 
new/ansible-navigator-26.9.0/.pre-commit-config.yaml
--- old/ansible-navigator-26.8.0/.pre-commit-config.yaml        2026-08-11 
18:01:46.000000000 +0200
+++ new/ansible-navigator-26.9.0/.pre-commit-config.yaml        2026-09-16 
08:32:25.000000000 +0200
@@ -7,7 +7,7 @@
 exclude: "(?x)^(\n  _readthedocs|\n  .tox\n)$\n"
 repos:
   - repo: https://github.com/renovatebot/pre-commit-hooks
-    rev: 43.280.4
+    rev: 44.82.2
     hooks:
       - id: renovate-config-validator
         alias: renovate
@@ -30,11 +30,11 @@
     hooks:
       - id: toml-sort-fix
   - repo: https://github.com/tox-dev/tox-ini-fmt
-    rev: 1.8.0
+    rev: 1.9.0
     hooks:
       - id: tox-ini-fmt
   - repo: https://github.com/streetsidesoftware/cspell-cli
-    rev: v10.0.1
+    rev: v10.2.0
     hooks:
       - id: cspell
         name: Spell check with cspell
@@ -109,14 +109,14 @@
         alias: toml
 
   - repo: https://github.com/astral-sh/ruff-pre-commit
-    rev: v0.16.0
+    rev: v0.16.7
     hooks:
       - id: ruff-format
         alias: ruff
       - id: ruff-check
         alias: ruff
   - repo: https://github.com/pre-commit/mirrors-mypy.git
-    rev: v2.3.0
+    rev: v2.3.1
     hooks:
       - id: mypy
         additional_dependencies:
@@ -132,7 +132,7 @@
           - types-setuptools
           - types-typed-ast
   - repo: https://github.com/pycqa/pylint.git
-    rev: v4.0.6
+    rev: v4.0.8
     hooks:
       - id: pylint
         args:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible-navigator-26.8.0/.readthedocs.yml 
new/ansible-navigator-26.9.0/.readthedocs.yml
--- old/ansible-navigator-26.8.0/.readthedocs.yml       2026-08-11 
18:01:46.000000000 +0200
+++ new/ansible-navigator-26.9.0/.readthedocs.yml       2026-09-16 
08:32:25.000000000 +0200
@@ -1,10 +1,6 @@
 ---
 version: 2
 
-mkdocs:
-  fail_on_warning: true
-  configuration: mkdocs.yml
-
 build:
   os: ubuntu-24.04
   tools:
@@ -12,14 +8,3 @@
   commands:
     - pip install --user tox
     - python3 -m tox -e docs -- build --strict --site-dir=_readthedocs/html/
-python:
-  install:
-    - method: pip
-      path: tox
-    - method: pip
-      path: .
-      extra_requirements:
-        - docs
-submodules:
-  include: all
-  recursive: true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible-navigator-26.8.0/SECURITY.md 
new/ansible-navigator-26.9.0/SECURITY.md
--- old/ansible-navigator-26.8.0/SECURITY.md    1970-01-01 01:00:00.000000000 
+0100
+++ new/ansible-navigator-26.9.0/SECURITY.md    2026-09-16 08:32:25.000000000 
+0200
@@ -0,0 +1,53 @@
+# Security Policy
+
+## Reporting a security vulnerability
+
+All security vulnerability reports MUST be submitted by email to:
+[[email protected]](mailto:[email protected])
+
+Security vulnerabilities MUST NOT be reported through public channels such as
+GitHub issues, pull requests, the Ansible Forum, or social media.
+
+## What to include
+
+When submitting a vulnerability report, include the following:
+
+- **Title** (required): Clear, concise, descriptive summary.
+- **Impacted project** (required): Ideally a link to the GitHub project.
+- **Reporter details** (optional): Your name or handle and affiliation.
+- **Vulnerability description** (required): Technical details of the issue.
+- **Affected versions** (required): Known affected version(s), and ideally all
+  affected versions.
+- **Reproduction steps** (required): Minimal example to reproduce the issue.
+- **Impact assessment** (required): Potential exploit scenarios and severity.
+- **Suggested fix** (optional): Proposed remediation, if any.
+- **Disclosure status** (required): Whether this has been shared with other
+  parties or published and your plan for future sharing (e.g., at a 
conference).
+
+## Timeline
+
+- The Ansible Security Team aims to confirm receipt of vulnerability reports
+  within one (1) business day.
+- Our goal is to assess the report, coordinate fix and disclosure as quickly as
+  possible.
+- All confirmed vulnerabilities are addressed according to severity and impact.
+
+## Backports
+
+Generally, only the latest release of this project receives security updates.
+Earlier versions may receive critical fixes on a best-effort basis.
+
+## Ansible Security Policy
+
+For the complete Ansible Security Policy, including what qualifies as a
+reportable vulnerability, severity classification, the response process,
+coordinated disclosure, and the vulnerability management process, see
+[ansible.com/security](https://ansible.com/security).
+
+## EU Cyber Resilience Act: Open-Source Steward Statement
+
+This project is stewarded by **Red Hat, Inc.**, an open-source software steward
+as defined in Article 3(14) of the
+[EU Cyber Resilience Act (Regulation 
2024/2847)](https://eur-lex.europa.eu/eli/reg/2024/2847/oj/eng).
+
+Contact: [[email protected]](mailto:[email protected])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible-navigator-26.8.0/docs/apple-container.md 
new/ansible-navigator-26.9.0/docs/apple-container.md
--- old/ansible-navigator-26.8.0/docs/apple-container.md        1970-01-01 
01:00:00.000000000 +0100
+++ new/ansible-navigator-26.9.0/docs/apple-container.md        2026-09-16 
08:32:25.000000000 +0200
@@ -0,0 +1,198 @@
+<!-- cspell:ignore handicaps -->
+
+# Apple Container Guide
+
+This document gathers the `ansible-navigator`-specific behavior, requirements,
+trade-offs, and usage notes for using
+[apple/container](https://github.com/apple/container) as the execution
+environment container engine.
+
+## What this guide is for
+
+Use this guide when:
+
+- `--container-engine container` or
+  `execution-environment.container-engine: container` is selected
+- execution-environment behavior differs from Docker or Podman
+- you need Apple Container-specific setup, troubleshooting, or operational 
notes
+
+## Requirements
+
+Using Apple Container with `ansible-navigator` currently assumes:
+
+- macOS
+- Apple Container installed and working
+- the `container` CLI available on `PATH`
+- internet access for pulling execution-environment images
+- pre-existing registry authentication for private images via
+  `container registry login <registry>`
+
+## Installation
+
+Basic installation flow on macOS:
+
+1.  Install the Apple Container CLI.
+2.  Ensure `container --version` works from your shell.
+3.  Install `ansible-navigator`.
+4.  Run with `--ce container` when using execution environments.
+
+Example:
+
+```bash
+ansible-navigator run site.yml --ee true --ce container --mode stdout
+```
+
+## Runtime behavior
+
+When Apple Container is selected, `ansible-navigator` now uses Apple-style 
image
+commands:
+
+- `container image pull`
+- `container image inspect`
+- `container image list`
+
+For execution-environment runs, `ansible-navigator` passes `container` through
+to `ansible-runner`, which launches the EE using `container run`.
+
+## Passing Apple-specific engine options
+
+`ansible-navigator` does not hide Apple Container runtime flags. When you need
+runtime-specific behavior, pass those options through the normal
+execution-environment container-options setting.
+
+### CLI examples
+
+Use repeated `--co` values to pass Apple Container flags.
+
+Forward the host SSH agent using Apple Container's native SSH support:
+
+```bash
+ansible-navigator run site.yml --ee true --ce container --co=--ssh
+```
+
+Enable nested virtualization:
+
+```bash
+ansible-navigator run site.yml --ee true --ce container --co=--virtualization
+```
+
+Enable Rosetta in the container:
+
+```bash
+ansible-navigator run site.yml --ee true --ce container --co=--rosetta
+```
+
+You can combine them:
+
+```bash
+ansible-navigator run site.yml --ee true --ce container --co=--ssh 
--co=--rosetta
+```
+
+### Settings file example
+
+Use `execution-environment.container-options` when you want these flags to be
+persistent:
+
+```yaml
+ansible-navigator:
+  execution-environment:
+    enabled: true
+    container-engine: container
+    container-options:
+      - "--ssh"
+      - "--rosetta"
+```
+
+### Notes on important flags
+
+`--ssh` Usually the most useful Apple-specific option. Prefer this when your
+execution-environment workflow needs access to private Git repositories or 
other
+SSH-agent-backed credentials. It is generally cleaner than trying to hand-build
+equivalent socket mounts.
+
+`--virtualization` Exposes virtualization capabilities to the container. Use
+this only when the workload explicitly requires nested virtualization and the
+host platform supports it.
+
+`--rosetta` Enables Rosetta in the container. This is mainly useful for
+compatibility scenarios where the container workload needs x86_64 userland
+support on Apple Silicon. It should not be treated as a default setting.
+
+## Authentication model
+
+Apple Container uses its own registry login state.
+
+That means:
+
+- private-registry access should be prepared with
+  `container registry login <registry>`
+- `ansible-navigator` does not log in or log out on the user's behalf
+- if a private image pull fails, the recommended recovery is to authenticate
+  first and retry
+
+## Advantages
+
+Using Apple Container has some practical strengths on macOS:
+
+- native Apple tooling for execution environments
+- no requirement to depend on Docker Desktop or Podman for the validated
+  Apple-specific path
+- Apple-native image lifecycle commands
+- working end-to-end execution-environment run and cancel behavior in the
+  validated prototype and parity paths
+
+## Handicaps and trade-offs
+
+Apple Container support is functional, but it is not the same operational model
+as Docker or Podman.
+
+Important trade-offs:
+
+- registry authentication is based on prior login state, not runner-managed
+  auth-file injection
+- some Docker/Podman-specific flags and mount-label assumptions do not apply
+- container-runtime-specific output shapes required dedicated parsing in a few
+  places
+- auto-detection order may still prefer Podman or Docker before Apple Container
+  when `container-engine: auto` is used
+
+## FAQ
+
+### How do I authenticate to a private registry?
+
+Run:
+
+```bash
+container registry login <registry>
+```
+
+before invoking `ansible-navigator` against a private execution-environment
+image.
+
+### Why doesn’t `ansible-navigator` log me in automatically?
+
+Because Apple Container login is persistent host state. The chosen design keeps
+that authentication step explicit instead of hiding host-state mutation inside
+runner or navigator.
+
+### What should I do if an Apple Container image pull fails?
+
+First confirm:
+
+1.  the image name is correct
+2.  the registry is reachable
+3.  you have already authenticated with `container registry login <registry>` 
if
+    the image is private
+
+Then retry the `ansible-navigator` command.
+
+### Does `auto` always choose Apple Container?
+
+No. `auto` still preserves its configured preference order. If another 
supported
+engine is preferred and available, it may be selected first.
+
+### Are Docker and Podman behaviors changed by this guide?
+
+No. This guide exists specifically because Apple Container has runtime-specific
+differences that should be documented without changing the meaning of the
+existing Docker/Podman paths.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible-navigator-26.8.0/docs/index.md 
new/ansible-navigator-26.9.0/docs/index.md
--- old/ansible-navigator-26.8.0/docs/index.md  2026-08-11 18:01:46.000000000 
+0200
+++ new/ansible-navigator-26.9.0/docs/index.md  2026-09-16 08:32:25.000000000 
+0200
@@ -14,6 +14,7 @@
 [Getting started with Execution Environments 
guide](https://docs.ansible.com/ansible/devel/getting_started_ee/index.html).
 
 - [Installation](installation.md)
+- [Apple Container Guide](apple-container.md)
 - [Settings](settings.md)
 - [Subcommands](subcommands.md)
 - [FAQ](faq.md)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible-navigator-26.8.0/docs/installation.md 
new/ansible-navigator-26.9.0/docs/installation.md
--- old/ansible-navigator-26.8.0/docs/installation.md   2026-08-11 
18:01:46.000000000 +0200
+++ new/ansible-navigator-26.9.0/docs/installation.md   2026-09-16 
08:32:25.000000000 +0200
@@ -61,7 +61,7 @@
 
 ### Requirements (macos)
 
-- [Docker Desktop for Mac] or [Podman on macOS]
+- [Docker Desktop for Mac], [Podman on macOS], or [Apple Container]
 - macOS command line developer tools
 - Internet access (during initial installation)
 
@@ -69,6 +69,9 @@
 
 - [Docker Desktop for Mac] installation instructions
 - [Podman on MacOS] installation instructions
+- [Apple Container] installation instructions
+- For Apple Container-specific requirements, trade-offs, and private-registry
+  usage, see the [Apple Container Guide](apple-container.md)
 
 ### Install ansible-navigator (macos)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible-navigator-26.8.0/docs/subcommands.md 
new/ansible-navigator-26.9.0/docs/subcommands.md
--- old/ansible-navigator-26.8.0/docs/subcommands.md    2026-08-11 
18:01:46.000000000 +0200
+++ new/ansible-navigator-26.9.0/docs/subcommands.md    2026-09-16 
08:32:25.000000000 +0200
@@ -10,7 +10,9 @@
 ### `ansible`
 
 Use `ansible-navigator exec -- ansible` from shell. The exec subcommand 
requires
-execution environment support.
+execution environment support. When the selected execution-environment engine 
is
+Apple Container, see the [Apple Container Guide](apple-container.md) for
+runtime-specific differences.
 
 ### `ansible-builder`
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible-navigator-26.8.0/src/ansible_navigator/actions/run.py 
new/ansible-navigator-26.9.0/src/ansible_navigator/actions/run.py
--- old/ansible-navigator-26.8.0/src/ansible_navigator/actions/run.py   
2026-08-11 18:01:46.000000000 +0200
+++ new/ansible-navigator-26.9.0/src/ansible_navigator/actions/run.py   
2026-09-16 08:32:25.000000000 +0200
@@ -316,17 +316,30 @@
         self._subaction_type = "playbook"
         self._logger = logging.getLogger(f"{__name__}_{self._subaction_type}")
         self._run_runner()
-        while True:
-            self._dequeue()
-            if self.runner.finished:
+        try:
+            while True:
+                self._dequeue()
+                if self.runner.finished:
+                    self._dequeue()
+                    if self._args.playbook_artifact_enable:
+                        self.write_artifact()
+                    self._logger.debug("runner finished")
+                    break
+                # Sleep briefly to prevent 100% CPU utilization
+                # in mode stdout, the delay introduced by the curses key read 
is not present
+                time.sleep(0.01)
+        except KeyboardInterrupt:
+            self._logger.warning("Keyboard interrupt received, requesting 
runner cancellation")
+            self.runner.cancelled = True
+            while not self.runner.finished:
                 self._dequeue()
-                if self._args.playbook_artifact_enable:
-                    self.write_artifact()
-                self._logger.debug("runner finished")
-                break
-            # Sleep briefly to prevent 100% CPU utilization
-            # in mode stdout, the delay introduced by the curses key read is 
not present
-            time.sleep(0.01)
+                time.sleep(0.01)
+            self._dequeue()
+            return_code = self.runner.ansible_runner_instance.rc or 1
+            return RunStdoutReturn(
+                message="Please review the log for errors.",
+                return_code=return_code,
+            )
         return_code = self.runner.ansible_runner_instance.rc
         if return_code != 0:
             return RunStdoutReturn(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible-navigator-26.8.0/src/ansible_navigator/configuration_subsystem/navigator_configuration.py
 
new/ansible-navigator-26.9.0/src/ansible_navigator/configuration_subsystem/navigator_configuration.py
--- 
old/ansible-navigator-26.8.0/src/ansible_navigator/configuration_subsystem/navigator_configuration.py
       2026-08-11 18:01:46.000000000 +0200
+++ 
new/ansible-navigator-26.9.0/src/ansible_navigator/configuration_subsystem/navigator_configuration.py
       2026-09-16 08:32:25.000000000 +0200
@@ -299,10 +299,12 @@
         ),
         SettingsEntry(
             name="container_engine",
-            choices=["auto", "podman", "docker"],
+            choices=["auto", "podman", "docker", "container"],
             cli_parameters=CliParameters(short="--ce"),
             
settings_file_path_override="execution-environment.container-engine",
-            short_description="Specify the container engine (auto=podman then 
docker)",
+            short_description=(
+                "Specify the container engine (auto=podman then docker then 
container)"
+            ),
             value=SettingsEntryValue(default="auto"),
             version_added="v1.0",
         ),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible-navigator-26.8.0/src/ansible_navigator/configuration_subsystem/navigator_post_processor.py
 
new/ansible-navigator-26.9.0/src/ansible_navigator/configuration_subsystem/navigator_post_processor.py
--- 
old/ansible-navigator-26.8.0/src/ansible_navigator/configuration_subsystem/navigator_post_processor.py
      2026-08-11 18:01:46.000000000 +0200
+++ 
new/ansible-navigator-26.9.0/src/ansible_navigator/configuration_subsystem/navigator_post_processor.py
      2026-09-16 08:32:25.000000000 +0200
@@ -1205,12 +1205,26 @@
         """
         messages: list[LogMessage] = []
         exit_messages: list[ExitMessage] = []
-        # literal_text, fname, format_spec, conversion
-        found = {f for _, f, _, _ in Formatter().parse(entry.value.current) if 
f}
         available = {f for _, f, _, _ in 
Formatter().parse(entry.value.default) if f}
         non_defaults_also_available = {"playbook_status"}
 
         available.update(non_defaults_also_available)
+        # literal_text, fname, format_spec, conversion
+        try:
+            found = {f for _, f, _, _ in 
Formatter().parse(entry.value.current) if f}
+        except ValueError:
+            # Handle invalid artifact filename formats (malformed braces)
+            exit_msg = (
+                f"The playbook artifact file name '{entry.value.current}', set 
by"
+                f" {entry.value.source.value.lower()}, is not a valid format 
string."
+            )
+            exit_messages.append(ExitMessage(message=exit_msg))
+            exit_msg = (
+                "Invalid format string. Ensure braces are properly matched and 
only"
+                f" supported variables are used: {oxfordcomma(available, 
'and/or')}"
+            )
+            exit_messages.append(ExitMessage(message=exit_msg, 
prefix=ExitPrefix.HINT))
+            return messages, exit_messages
         unknown = found - available
         if not unknown:
             return messages, exit_messages
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible-navigator-26.8.0/src/ansible_navigator/data/ansible-navigator.json 
new/ansible-navigator-26.9.0/src/ansible_navigator/data/ansible-navigator.json
--- 
old/ansible-navigator-26.8.0/src/ansible_navigator/data/ansible-navigator.json  
    2026-08-11 18:01:46.000000000 +0200
+++ 
new/ansible-navigator-26.9.0/src/ansible_navigator/data/ansible-navigator.json  
    2026-09-16 08:32:25.000000000 +0200
@@ -285,11 +285,12 @@
                     "properties": {
                         "container-engine": {
                             "default": "auto",
-                            "description": "Specify the container engine 
(auto=podman then docker)",
+                            "description": "Specify the container engine 
(auto=podman then docker then container)",
                             "enum": [
                                 "auto",
                                 "podman",
-                                "docker"
+                                "docker",
+                                "container"
                             ],
                             "type": "string"
                         },
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible-navigator-26.8.0/src/ansible_navigator/image_manager/inspector.py 
new/ansible-navigator-26.9.0/src/ansible_navigator/image_manager/inspector.py
--- 
old/ansible-navigator-26.8.0/src/ansible_navigator/image_manager/inspector.py   
    2026-08-11 18:01:46.000000000 +0200
+++ 
new/ansible-navigator-26.9.0/src/ansible_navigator/image_manager/inspector.py   
    2026-09-16 08:32:25.000000000 +0200
@@ -33,10 +33,11 @@
         Returns:
             List of image inspection command objects
         """
+        inspect_command = "image inspect" if self._container_engine == 
"container" else "inspect"
         return [
             Command(
                 identity=image_id,
-                command=f"{self._container_engine} inspect {image_id}",
+                command=f"{self._container_engine} {inspect_command} 
{image_id}",
                 post_process=self.parse,
             )
             for image_id in self._image_ids
@@ -55,7 +56,17 @@
 
 
 class ImagesList:
-    """Functionality for listing container images."""
+    """Functionality for listing container images.
+
+    Attributes:
+        APPLE_HEADER_MAP: Mapping of Apple Container headers to standard ones.
+        FORMAT: Output template for docker and podman, one tab separated line 
per image.
+        FORMAT_KEYS: Keys for the fields in ``FORMAT``, in the same order.
+    """
+
+    APPLE_HEADER_MAP: dict[str, str] = {"name": "repository", "digest": 
"image_id"}
+    FORMAT = 
r"{{.Repository}}\t{{.Tag}}\t{{.ID}}\t{{.CreatedSince}}\t{{.Size}}"
+    FORMAT_KEYS = ("repository", "tag", "image_id", "created", "size")
 
     def __init__(self, container_engine: str) -> None:
         """Initialize the container image lister.
@@ -72,28 +83,45 @@
         Returns:
             List of the image lister commands
         """
+        # The default table layout of ``images`` varies between engine versions
+        # (e.g. docker 29) and user configuration, so request the fields 
explicitly
+        list_command = (
+            "image list"
+            if self._container_engine == "container"
+            else f"images --format '{self.FORMAT}'"
+        )
         return [
             Command(
                 identity="images",
-                command=f"{self._container_engine} images",
+                command=f"{self._container_engine} {list_command}",
                 post_process=self.parse,
             ),
         ]
 
-    @staticmethod
-    def parse(command: Command) -> None:
+    @classmethod
+    def parse(cls, command: Command) -> None:
         """Parse the image lister command output.
 
         Args:
             command: Image lister command object
         """
         if command.stdout:
-            images = command.stdout.splitlines()
-            re_2omo = re.compile(r"\s{2,}")
-            headers = [key.lower().replace(" ", "_") for key in 
re_2omo.split(images.pop(0))]
-            local_images = [
-                dict(zip(headers, re_2omo.split(line), strict=False)) for line 
in images
-            ]
+            is_apple = command.command.startswith("container ")
+            images = [line for line in command.stdout.splitlines() if 
line.strip()]
+            if not images:
+                command.details = []
+                return
+            if is_apple:
+                re_2omo = re.compile(r"\s{2,}")
+                headers = [key.lower().replace(" ", "_") for key in 
re_2omo.split(images.pop(0))]
+                headers = [cls.APPLE_HEADER_MAP.get(h, h) for h in headers]
+                local_images = [
+                    dict(zip(headers, re_2omo.split(line), strict=False)) for 
line in images
+                ]
+            else:
+                local_images = [
+                    dict(zip(cls.FORMAT_KEYS, line.split("\t"), strict=True)) 
for line in images
+                ]
             valid_images = [image for image in local_images if 
image.get("tag") != "<none>"]
             command.details = valid_images
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible-navigator-26.8.0/src/ansible_navigator/image_manager/puller.py 
new/ansible-navigator-26.9.0/src/ansible_navigator/image_manager/puller.py
--- old/ansible-navigator-26.8.0/src/ansible_navigator/image_manager/puller.py  
2026-08-11 18:01:46.000000000 +0200
+++ new/ansible-navigator-26.9.0/src/ansible_navigator/image_manager/puller.py  
2026-09-16 08:32:25.000000000 +0200
@@ -199,7 +199,10 @@
         Returns:
             The command
         """
-        command_line = [self._container_engine, "pull"]
+        if self._container_engine == "container":
+            command_line = [self._container_engine, "image", "pull"]
+        else:
+            command_line = [self._container_engine, "pull"]
         command_line.extend(self._arguments)
         command_line.append(self._image)
         joined_command = " ".join(command_line)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible-navigator-26.8.0/src/ansible_navigator/utils/functions.py 
new/ansible-navigator-26.9.0/src/ansible_navigator/utils/functions.py
--- old/ansible-navigator-26.8.0/src/ansible_navigator/utils/functions.py       
2026-08-11 18:01:46.000000000 +0200
+++ new/ansible-navigator-26.9.0/src/ansible_navigator/utils/functions.py       
2026-09-16 08:32:25.000000000 +0200
@@ -3,6 +3,7 @@
 from __future__ import annotations
 
 import ast
+import contextlib
 import datetime
 import decimal
 import html
@@ -64,7 +65,9 @@
         Resolved file path
     """
     _path = Path(os.path.expandvars(path))
-    _path = _path.expanduser()
+    # The home directory may not be determinable, e.g. ~ names an unknown user
+    with contextlib.suppress(RuntimeError):
+        _path = _path.expanduser()
     return _path.resolve()
 
 
@@ -110,10 +113,13 @@
     """
     playbook_type = "file"
     playbook_path = str(playbook)
-    if Path(playbook_path).exists() is False:
-        playbook_type = "missing"
-    if Path(playbook_path).exists() is False and len(playbook_path.split(".")) 
>= 3:
-        playbook_type = "fqcn"
+    try:
+        exists = Path(playbook_path).exists()
+    except OSError:
+        # The path cannot name a file on this system, e.g. it is too long
+        return "missing"
+    if exists is False:
+        playbook_type = "fqcn" if len(playbook_path.split(".")) >= 3 else 
"missing"
     return playbook_type
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible-navigator-26.8.0/tests/unit/configuration_subsystem/post_processors/test_playbook_artifact_save_as.py
 
new/ansible-navigator-26.9.0/tests/unit/configuration_subsystem/post_processors/test_playbook_artifact_save_as.py
--- 
old/ansible-navigator-26.8.0/tests/unit/configuration_subsystem/post_processors/test_playbook_artifact_save_as.py
   2026-08-11 18:01:46.000000000 +0200
+++ 
new/ansible-navigator-26.9.0/tests/unit/configuration_subsystem/post_processors/test_playbook_artifact_save_as.py
   2026-09-16 08:32:25.000000000 +0200
@@ -66,6 +66,15 @@
             " has unrecognized variables: 'name'"
         ),
     ),
+    Scenario(
+        name="4",
+        current="{playbook_name}.json{",
+        exit_message_substr=(
+            "The playbook artifact file name"
+            " '{playbook_name}.json{', set by command line,"
+            " is not a valid format string"
+        ),
+    ),
 )
 
 
@@ -93,3 +102,10 @@
 
     if data.exit_message_substr:
         assert data.exit_message_substr in exit_messages[0].message
+        assert len(exit_messages) >= 2, "Expected a HINT message with 
supported variables"
+        hint_msg = exit_messages[1].message
+        assert "playbook_dir" in hint_msg
+        assert "playbook_name" in hint_msg
+        assert "playbook_status" in hint_msg
+        assert "time_stamp" in hint_msg
+        assert "inventory" not in hint_msg
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible-navigator-26.8.0/tests/unit/image_manager/test_image_inspector.py 
new/ansible-navigator-26.9.0/tests/unit/image_manager/test_image_inspector.py
--- 
old/ansible-navigator-26.8.0/tests/unit/image_manager/test_image_inspector.py   
    1970-01-01 01:00:00.000000000 +0100
+++ 
new/ansible-navigator-26.9.0/tests/unit/image_manager/test_image_inspector.py   
    2026-09-16 08:32:25.000000000 +0200
@@ -0,0 +1,162 @@
+"""Unit tests for image inspector."""
+
+import pytest
+
+from ansible_navigator.command_runner import Command
+from ansible_navigator.image_manager.inspector import ImagesInspect
+from ansible_navigator.image_manager.inspector import ImagesList
+
+
[email protected](
+    ("container_engine", "expected_inspect_cmd"),
+    (
+        pytest.param("podman", "podman inspect image_id", id="podman-inspect"),
+        pytest.param("docker", "docker inspect image_id", id="docker-inspect"),
+        pytest.param("container", "container image inspect image_id", 
id="container-image-inspect"),
+    ),
+)
+def test_images_inspect_command(
+    container_engine: str,
+    expected_inspect_cmd: str,
+) -> None:
+    """Test image inspect command generation.
+
+    Args:
+        container_engine: Container engine identifier
+        expected_inspect_cmd: Expected command string
+    """
+    inspector = ImagesInspect(container_engine=container_engine, 
ids=["image_id"])
+    commands = inspector.commands
+    assert len(commands) == 1
+    assert commands[0].command == expected_inspect_cmd
+
+
[email protected](
+    ("container_engine", "expected_list_cmd"),
+    (
+        pytest.param(
+            "podman",
+            f"podman images --format '{ImagesList.FORMAT}'",
+            id="podman-images",
+        ),
+        pytest.param(
+            "docker",
+            f"docker images --format '{ImagesList.FORMAT}'",
+            id="docker-images",
+        ),
+        pytest.param("container", "container image list", 
id="container-image-list"),
+    ),
+)
+def test_images_list_command(
+    container_engine: str,
+    expected_list_cmd: str,
+) -> None:
+    """Test image list command generation.
+
+    Args:
+        container_engine: Container engine identifier
+        expected_list_cmd: Expected command string
+    """
+    lister = ImagesList(container_engine=container_engine)
+    commands = lister.commands
+    assert len(commands) == 1
+    assert commands[0].command == expected_list_cmd
+
+
[email protected](
+    "container_engine",
+    (
+        pytest.param("docker", id="docker"),
+        pytest.param("podman", id="podman"),
+    ),
+)
+def test_images_list_parse(container_engine: str) -> None:
+    """Test that Docker/Podman list output from the requested format is parsed.
+
+    Images without a tag are dropped.
+
+    Args:
+        container_engine: Container engine identifier
+    """
+    stdout = (
+        "my-image\tlatest\tabc123def456\t2 days ago\t250 MB\n"
+        "<none>\t<none>\t0123456789ab\t3 weeks ago\t1.2GB\n"
+    )
+    cmd = ImagesList(container_engine=container_engine).commands[0]
+    cmd.stdout = stdout
+    ImagesList.parse(cmd)
+    assert cmd.details == [
+        {
+            "repository": "my-image",
+            "tag": "latest",
+            "image_id": "abc123def456",
+            "created": "2 days ago",
+            "size": "250 MB",
+        },
+    ]
+
+
+def test_images_list_parse_skips_blank_lines() -> None:
+    """Test that blank lines in the list output do not become rows."""
+    stdout = "my-image\tlatest\tabc123def456\t2 days ago\t250 MB\n\n"
+    cmd = ImagesList(container_engine="docker").commands[0]
+    cmd.stdout = stdout
+    ImagesList.parse(cmd)
+    assert cmd.details == [
+        {
+            "repository": "my-image",
+            "tag": "latest",
+            "image_id": "abc123def456",
+            "created": "2 days ago",
+            "size": "250 MB",
+        },
+    ]
+
+
+def test_images_list_parse_rejects_malformed_line() -> None:
+    """Test that a line not matching the requested format fails the parse."""
+    cmd = ImagesList(container_engine="docker").commands[0]
+    cmd.stdout = "my-image\tlatest\tabc123def456\n"
+    with pytest.raises(ValueError, match="zip"):
+        ImagesList.parse(cmd)
+
+
+def test_images_list_parse_apple_container() -> None:
+    """Test that Apple Container list output headers are normalized."""
+    stdout = "NAME                TAG       DIGEST\nmy-image            latest 
   sha256:abc123"
+    cmd = Command(
+        identity="images",
+        command="container image list",
+        post_process=ImagesList.parse,
+    )
+    cmd.stdout = stdout
+    ImagesList.parse(cmd)
+    assert isinstance(cmd.details, list)
+    assert len(cmd.details) == 1
+    assert cmd.details[0]["repository"] == "my-image"
+    assert cmd.details[0]["tag"] == "latest"
+    assert cmd.details[0]["image_id"] == "sha256:abc123"
+
+
[email protected](
+    ("container_engine", "command"),
+    (
+        pytest.param("docker", "docker images", id="docker"),
+        pytest.param("container", "container image list", 
id="container-image-list"),
+    ),
+)
+def test_images_list_parse_blank_output(container_engine: str, command: str) 
-> None:
+    """Test that output with no image lines yields no images.
+
+    Args:
+        container_engine: Container engine identifier
+        command: Image lister command string
+    """
+    cmd = Command(
+        identity="images",
+        command=command,
+        post_process=ImagesList.parse,
+    )
+    cmd.stdout = "\n\n"
+    ImagesList.parse(cmd)
+    assert cmd.details == []
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible-navigator-26.8.0/tests/unit/image_manager/test_image_puller.py 
new/ansible-navigator-26.9.0/tests/unit/image_manager/test_image_puller.py
--- old/ansible-navigator-26.8.0/tests/unit/image_manager/test_image_puller.py  
2026-08-11 18:01:46.000000000 +0200
+++ new/ansible-navigator-26.9.0/tests/unit/image_manager/test_image_puller.py  
2026-09-16 08:32:25.000000000 +0200
@@ -219,3 +219,33 @@
     )
     assert "XDG_RUNTIME_DIR" not in proc.stdout
     assert "containers/auth.json" in proc.stdout
+
+
+def test_pull_with_container_engine() -> None:
+    """Ensure command uses 'image pull' for container engine."""
+    image_puller = ImagePuller(
+        container_engine="container",
+        image="my_image",
+        arguments=Constants.NOT_SET,
+        pull_policy="tag",
+    )
+    result = image_puller._generate_pull_command()
+    expected_string = "container image pull my_image"
+    assert result == expected_string
+    expected_list = ["container", "image", "pull", "my_image"]
+    assert shlex.split(result) == expected_list
+
+
+def test_pull_with_container_engine_and_args() -> None:
+    """Ensure command with container engine and additional arguments."""
+    image_puller = ImagePuller(
+        container_engine="container",
+        image="my_image",
+        arguments=["--tls-verify", "false"],
+        pull_policy="tag",
+    )
+    result = image_puller._generate_pull_command()
+    expected_string = "container image pull --tls-verify false my_image"
+    assert result == expected_string
+    expected_list = ["container", "image", "pull", "--tls-verify", "false", 
"my_image"]
+    assert shlex.split(result) == expected_list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible-navigator-26.8.0/tests/unit/utils/test_functions.py 
new/ansible-navigator-26.9.0/tests/unit/utils/test_functions.py
--- old/ansible-navigator-26.8.0/tests/unit/utils/test_functions.py     
2026-08-11 18:01:46.000000000 +0200
+++ new/ansible-navigator-26.9.0/tests/unit/utils/test_functions.py     
2026-09-16 08:32:25.000000000 +0200
@@ -116,6 +116,22 @@
     assert result == anticipated_result
 
 
+def test_expand_path_unknown_user(monkeypatch: pytest.MonkeyPatch) -> None:
+    """Test expand_path when expanduser raises RuntimeError.
+
+    Args:
+        monkeypatch: The monkeypatch fixture
+    """
+
+    def mock_expanduser(self: Path) -> Path:
+        msg = "unknown user"
+        raise RuntimeError(msg)
+
+    monkeypatch.setattr(Path, "expanduser", mock_expanduser)
+    result = expand_path("~/path")
+    assert str(result).endswith("~/path")
+
+
 @pytest.mark.parametrize(
     ("value", "anticipated_result"),
     (
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible-navigator-26.8.0/tests/unit/utils/test_functions_extended.py 
new/ansible-navigator-26.9.0/tests/unit/utils/test_functions_extended.py
--- old/ansible-navigator-26.8.0/tests/unit/utils/test_functions_extended.py    
2026-08-11 18:01:46.000000000 +0200
+++ new/ansible-navigator-26.9.0/tests/unit/utils/test_functions_extended.py    
2026-09-16 08:32:25.000000000 +0200
@@ -2,9 +2,10 @@
 
 from __future__ import annotations
 
+import errno
 import shutil
 
-from typing import TYPE_CHECKING
+from pathlib import Path
 from unittest.mock import patch  # pylint: disable=preferred-module
 
 import pytest
@@ -28,10 +29,6 @@
 from ansible_navigator.utils.functions import to_list
 
 
-if TYPE_CHECKING:
-    from pathlib import Path
-
-
 def test_check_for_ansible_found(monkeypatch: pytest.MonkeyPatch) -> None:
     """Test check_for_ansible when ansible-playbook is found."""
     monkeypatch.setattr(shutil, "which", lambda _: "/usr/bin/ansible-playbook")
@@ -67,6 +64,20 @@
     assert check_playbook_type("namespace.collection.playbook") == "fqcn"
 
 
+def test_check_playbook_type_name_too_long(monkeypatch: pytest.MonkeyPatch) -> 
None:
+    """Test check_playbook_type when the path cannot name a file on this 
system.
+
+    Args:
+        monkeypatch: The monkeypatch fixture
+    """
+
+    def raise_name_too_long(_self: Path) -> bool:
+        raise OSError(errno.ENAMETOOLONG, "File name too long")
+
+    monkeypatch.setattr(Path, "exists", raise_name_too_long)
+    assert check_playbook_type("a" * 300) == "missing"
+
+
 def test_clear_screen_vscode(
     monkeypatch: pytest.MonkeyPatch,
     capsys: pytest.CaptureFixture[str],

++++++ ansible-navigator.obsinfo ++++++
--- /var/tmp/diff_new_pack.YIj9bQ/_old  2026-09-24 23:00:55.087905896 +0200
+++ /var/tmp/diff_new_pack.YIj9bQ/_new  2026-09-24 23:00:55.091906063 +0200
@@ -1,5 +1,5 @@
 name: ansible-navigator
-version: 26.8.0
-mtime: 1786464106
-commit: 30e0b3d0f454a524e3520f9de0cbf18620b1b790
+version: 26.9.0
+mtime: 1789540345
+commit: 968b23182d726eb6691290651b533a3aa7db8d79
 

Reply via email to